事件背景
5 月 25 日,推特用户 @0xLosingMoney 称监测到 ID 为 @Dvincent_ 的用户通过钓鱼网站 p2peers.io 盗走了 29 枚 Moonbirds 系列 NFT,价值超 70 万美元,钓鱼网站目前已无法访问。该用户表示,域名 sarek.fi 和 p2peers.io 都曾在过去的黑客事件中被使用。
推特原文
慢雾安全团队收到相关情报并针对此次被盗事件进行朔源分析。
我们开始在 Twitter 上搜集并分析此钓鱼事件的相关信息时,发现 @Dvincent_ 就是黑客的 Twitter 账号,目前该账户已经被注销。而根据 5 月 10 日的记录,推特用户 @just1n_eth(BAYC 系列 NFT 持有者)就表示 @Dvincent_ 曾与其联系交易 BAYC NFT,但由于对方坚持使用 p2peers.io,交易最后并未达成。
推特原文
在该推特评论下用户 @jbe61 表示自己曾遇到同一个人并给出了对话截图:
5 月 25 日晚,@0xLosingMoney 继续在 Twitter 公布了黑客的钱包等相关信息。
推特原文
下面是 @0xLosingMoney 给出的黑客地址:
· 0xe8250Bb4eFa6D9d032f7d46393CEaE18168A6B0D
· 0x8e73fe4d5839c60847066b67ea657a67f42a0adf
· 0x6035B92fd5102b6113fE90247763e0ac22bfEF63
· 0xBf41EFdD1b815556c2416DcF427f2e896142aa53
· 0x29C80c2690F91A47803445c5922e76597D1DD2B6
由于整个被盗事件都提到「p2peers.io」这个钓鱼网站,所以我们从此处开始入手。这个在芬兰某域名公司注册的 p2peers 网站已被暂停使用,我们最终在谷歌网页快照中寻找到了该网站首页的信息。
根据网页快照可以发现 https://p2peers.io/ 的前端代码,其中主要的 JS 代码是「js/app.eb17746b.js」。
由于已经无法直接查看 JS 代码,利用 Cachedview 网站的快照历史记录查到在 2022 年 4 月 30 日主要的 JS 源代码。
通过对 JS 的整理,我们查到了代码中涉及到的钓鱼网站信息和交易地址。
在代码 912 行发现 approve 地址:
0x7F748D5fb52b9717f83Ed69f49fc4c2f15d83b6A
在代码 3407 行同样发现关于 approve 相关操作的地址:
0xc9E39Ad832cea1677426e5fA8966416337F88749
我们开始分析这两个地址的交易记录:
0x7F748D5fb52b9717f83Ed69f49fc4c2f15d83b6A
0xc9E39Ad832cea1677426e5fA8966416337F88749
首先在 Etherscan 查询发现 0x7F7...b6A 是一个恶意合约地址:
而这个恶意合约的创建者(攻击者)是地址:
0xd975f8c82932f55c7cef51eb4247f2bea9604aa3,发现这个地址有多笔 NFT 交易记录:
我们在 NFTGO 网站进一步查看,根据该地址目前 NFT 持有情况,发现被盗 NFT 目前都停留在此地址上还没有售出,总价值约为 225,475 美元。
而使用 NFTSCAN 发现 NFT 数量一共是 21 个,价值 96.5 枚 ETH。
继续使用 MistTrack 分析攻击者地址交易历史:
可以发现该地址的 ETH 交易次数并不多只有 12 次,余额只有 0.0615 枚 ETH。
0xc9E39Ad832cea1677426e5fA8966416337F88749 也是合约地址,合约创建者是 0x6035B92fd5102b6113fE90247763e0ac22bfEF63,这个地址在 @0xLosingMoney 公布的黑客地址名单中也有提到。
使用 MistTrack 发现这个地址余额同样不多,入账有 21 笔而出账有 97 笔,其中已转出共 106.2 枚 ETH。
查看入账和出账信息,可以发现多笔转到 Tornado.Cash,说明黑客已经通过各种手法将盗来的币进行来转移。
我们在 JS 代码 409 行发现使用到了域名为 usemoralis.com 的服务接口:
其中 2053 端口是 API 地址,而 2083 端口则是后台登录地址。
通过查询发现 usemoralis.com 这个域名上有大量 NFT 相关网站,其中不少是属于钓鱼网站。
通过谷歌搜索发现不少 NFT 的站点,并发现多个子域信息。
于是我们遍历和查询 usemoralis.com 的子域名,发现共存在 3 千多个相关子域站点部署在 cloudflare 上。
进一步了解我们发现这些站点都是来自 moralis 提供的服务:
moralis 是一个专门提供针对 Web3 开发和构建 DApps 的服务。
我们发现注册后就可以得到接口地址和一个管理后台,这使得制作钓鱼网站作恶成本变得非常低。
继续分析 JS 代码,在 368 行发现有将受害者地址提交到网站域名为 pidhnone.se 的接口。
经过统计,域名为 pidhnone.se 的接口有:
· https://pidhnone.se/api/store/log
· https://pidhnone.se/api/self-spoof/
· https://pidhnone.se/api/address/
· https://pidhnone.se/api/crypto/
进一步分析发现 https://pidhnone.se/login 其实是黑客操作的诈骗控制后台,用来管理诈骗资产等信息。
根据后台地址的接口拼接上地址,可以看到攻击地址和受害者的地址。
后台还存留关于图片信息和相关接口操作说明文字,可以看出来是非常明显的诈骗网站操作说明。
我们分析后台里面涉及的信息,如图片:
https://pidhnone.se/images/recent.png?f53959585e0db1e6e1e3bc66798bf4f8
https://pidhnone.se/images/2.gif?427f1b04b02f4e7869b1f402fcee11f6
https://pidhnone.se/images/gif.gif?24229b243c99d37cf83c2b4cdb4f6042
https://pidhnone.se/images/landing.png?0732db576131facc35ac81fa15db7a30
https://pidhnone.se/images/ss-create.png?1ad1444586c2c3bb7d233fbe7fc81d7d
https://pidhnone.se/images/self-spoof.png?25e4255ee21ea903c40d1159ba519234
这里面涉及黑客历史使用过的的钓鱼网站信息,如 nftshifter.io:
以 nftshifter.io 这个钓鱼网站为例:
在 Twitter 上查找相关记录可以看到 2022 年 3 月 25 日有受害者访问过该钓鱼网站并公布出来。
使用相同的方式分析 nftshifter.io:
得到 JS 源代码并进行分析:
可以发现同样也是采用 moralis 的服务和 https://pidhnone.se/ 这个诈骗后台进行控制。
其中相关的恶意地址:
钓鱼者合约:
0x8beebade5b1131cf6957f2e8f8294016c276a90f
合约创建者:
0x9d194CBca8d957c3FA4C7bb2B12Ff83Fca6398ee
创建合约时间:
Mar-24-2022 09:05:33 PM +UTC
同时我们发现与这个攻击者相同的恶意合约代码有 9 个:
随机看一个恶意合约 0xc9E...749,创建者地址为
0x6035B92fd5102b6113fE90247763e0ac22bfEF63:
相同的手法,都已经洗币。每个恶意合约上都已经有受害者的记录,此处不一一分析。
我们再来看下受害者时间:
刚好是在攻击者创建恶意钓鱼之后,有用户上当受骗。
攻击者已将 NFT 售出,变卖为 ETH,我们使用 MistTrack 分析攻击者地址
0x9d194cbca8d957c3fa4c7bb2b12ff83fca6398ee:
可以看到 51 ETH 已经转入 Tornado.Cash 洗币。同时,目前 Twitter 上攻击者的账户 @nftshifter_io 已经被冻结无法查看。
可以确认的是,攻击一直在发生,而且有成熟的产业链。截止到发文前黑客地址仍有新的 NFT 入账和交易进行。黑客进行钓鱼攻击往往已成规模化批量化,制作一个钓鱼模版就可以批量复制出大量不同 NFT 项目的钓鱼网站。当作恶成本变得非常低的时候,更需要普通用户提高警惕,加强安全意识,时刻保持怀疑,避免成为下一个受害者。