By:山哥&耀@慢雾安全团队
事件背景
5 月 25 日,推特用户 @0xLosingMoney 称监测到 ID 为 @Dvincent_ 的用户通过钓鱼网站 p2peers.io 盗走了 29 枚 Moonbirds 系列 NFT,价值超 70 万美元,钓鱼网站目前已无法访问。该用户表示,域名 sarek.fi 和 p2peers.io 都曾在过去的黑客事件中被使用。
(https://twitter.com/0xLosingMoney/status/1529401916849291264)
搜集相关信息
慢雾安全团队收到相关情报并针对此次被盗事件进行朔源分析。
我们开始在 Twitter 上搜集并分析此钓鱼事件的相关信息时,发现 @Dvincent_ 就是黑客的 Twitter 账号,目前该账户已经被注销。而根据 5 月 10 日的记录,推特用户 @just1n_eth(BAYC 系列 NFT 持有者)就表示 @Dvincent_ 曾与其联系交易 BAYC NFT,但由于对方坚持使用 p2peers.io,交易最后并未达成。
(https://twitter.com/just1n_eth/status/1523896505446191104)
在该推特评论下用户 @jbe61 表示自己曾遇到同一个人并给出了对话截图:
5 月 25 日晚,@0xLosingMoney 继续在 Twitter 公布了黑客的钱包等相关信息。
(https://twitter.com/0xLosingMoney/status/1529401927590907904)
下面是 @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,说明黑客已经通过各种手法将盗来的币进行来转移。
黑客使用 moralis 服务作恶
我们在 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/
进一步分析发现 Gorilla 其实是黑客操作的诈骗控制后台,用来管理诈骗资产等信息。
根据后台地址的接口拼接上地址,可以看到攻击地址和受害者的地址。
后台还存留关于图片信息和相关接口操作说明文字,可以看出来是非常明显的诈骗网站操作说明。
我们分析后台里面涉及的信息,如图片:
这里面涉及黑客历史使用过的的钓鱼网站信息,如 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 项目的钓鱼网站。当作恶成本变得非常低的时候,更需要普通用户提高警惕,加强安全意识,时刻保持怀疑,避免成为下一个受害者。
如何避免陷入欺诈的境地?慢雾安全团队建议如下:
-
不要点击来源不明的链接或附件,不要随意泄露您的助记词
-
使用强密码并启用双重身份验证(2FA)以保护您的帐户。
-
不确定的情况下,向多方进行验证确认。
-
不要在网上传输敏感信息,攻击者可以通过分析这些信息和数据向用户发送有针对性的网络钓鱼电子邮件。
-
建议阅读:《区块链黑暗森林自救手册》