PRE:Premint 恶意代码注入攻击细节分析

7?月?17日,据慢雾区情报反馈,Premint遭遇黑客攻击。慢雾安全团队在第一时间进行分析和预警。

本文来自慢雾区伙伴ScamSniffer的投稿,具体分析如下:

攻击细节

打开任意Premint项目页面,可以看到有个cdn.min.js注入到了页面中,看调用栈该js是由(https://s3-redwood-labs.premint.xyz/theme/js/boomerang.min.js)注入,目前该s3-redwood-labs-premint-xyz.com域名已经停止解析,无法正常访问了。

Insrt Labs完成220万美元Pre种子轮融资:金色财经报道,NFT金融协议Insrt宣布完成220万美元融资,Hashkey Capital、Infinite Capital 领投,Sky9 Capital、Polygon 的 DeFi 负责人 Hamzah Khan 等参投。Insrt Labs 是 Insrt Finance 协议的核心贡献者,Insrt Finance 目前建立在以太坊之上,但计划在不久的将拓展支持其他区块链。[2023/3/2 12:39:08]

查询Whois,该域名在2022-07-16注册于TucowsDomainsInc:

打开virustotal.com可以看到该域名之前曾解析到CloudFlare:

基于NFT的“社区即服务”初创公司Afropolitan完成210万美元pre-seed轮融资:金色财经报道,基于NFT的“社区即服务”初创公司Afropolitan宣布完成210万pre-seed轮融资,Hashed、Atlantica Ventures、Microtraction、Cultur3 Capital、Shima Capital、Savannah Fund、Ingressive Capital、Audacity Fund 和 RallyCap Ventures、以及包括前Coinbase首席技术官Balaji Srinivasan 在内的 25 为天使投资人参投。据悉,Afropolitan计划铸造10,000枚NFT“护照”来支持DAO并授予DAO成员参加活动等权限,之后还将推出APP,将生态系统中的各类服务和产品纳入其中。(TechCrunch)[2022/6/21 4:42:00]

Rainfall完成100万美元pre-seed轮融资:金色财经报道,专注于隐私设计的中心化数据货币化平台Rainfall 宣布完成了一笔 100 万美元的 pre-seed 轮融资,Katapult 基金会、 D3Jubilee、Toniic 联合创始人 Charly Kleissner、以及对贝塔斯曼集团和贝塔斯曼基金会有重大影响的莫恩家族成员 Brigitte Mohn 和其他一些知名投资者参投。Rainfall 希望重新定义数据货币化,该公司认为,每个人都具有内在价值,这种价值将通过他们创建和拥有的数字数据来衡量,每个连接到 Rainfall 的个人都可以从他们选择共享的数据中获得价值,同时也不会牺牲隐私,继而更好地帮助企业、机构组织和职能部门服务客户。(cityam)[2022/6/6 4:06:26]

打开源代码可以看到boomerang.min.js是Premint用到的一个UI库:

区块链存储项目KYVE完成100万美元pre-seed轮融资,Permanent Ventures领投:据官方消息,区块链存储项目KYVE宣布完成100万美元pre-seed轮融资,Permanent Ventures领投[2021/6/29 0:12:55]

该js是在s3-redwood-labs.premint.xyz域名下,猜测:

上传文件接口有漏洞可以上传任意文件到任意Path

黑客拿到了他们这个AmazonS3的权限,从而可以注入恶意代码

这个第三方库被供应链攻击污染了

把boomerang.min.js代码下载下来,前面都是正常的代码,但是末尾有一段经过加密的代码:

Coinbase Pre-IPO合约创历史新高,将于14日上市:FTX行情显示,自去年12月上线FTX交易所以来,Coinbase Pre-IPO合约(CBSE)持续震荡上行。CBSE在FTX现报546.6875 USD,日内涨幅1.19%,创历史新高。平台币方面,三大平台币普涨,BNB和OKB均创历史新高。

此前消息,Coinbase已官宣确切上市日期为4月14日。根据Coinbase发布的官方文章,美国SEC已宣布Coinbase的S-1注册声明生效,Coinbase预计其 A 类普通股将于4月14日在纳斯达克全球精选市场上开始交易,股票代码为COIN。注:CBSE不是通证化股票,而是将跟踪Coinbase的市值,在Coinbase公开交易的第一天之后,CBSE将转换为等值的Coinbase通证化股票。[2021/4/12 20:10:01]

这段代码负责把代码s3-redwood-labs-premint-xyz.com/cdn.min.js注入到页面。

恶意代码cdn.min.js

根据代码内容,可以大致看到有通过调用dappradar.com的接口来查询用户的NFT资产列表。

如果用户持有相关NFT资产:

恶意代码会以Two-stepwallet验证的借口,发起setApprovalForAll让用户授权给他们后端接口返回的地址。

如果用户点了Approve,攻击者还会调用监测代码通知自己有人点击了:

如果当用户地址没有NFT资产时,它还会尝试直接发起转移钱包里的ETH的资产请求:

另外这种代码变量名加密成_0xd289_0x开头的方式,我们曾经在play-otherside.org,thesaudisnfts.xyz这些钓鱼网站也见到过。

根据用户资产发起setApprovalForAll或者直接转移ETH,并且阻止用户使用开发者工具debug。

预防方式

那么作为普通用户如何预防?现阶段MetaMask对ERC721的setApprovalForAll的风险提示,远没有ERC20的Approve做得好。

即使很多新用户无法感知到这个行为的风险,但我们作为普通用户看到带Approve之类的交易一定要仔细打开授权给相关地址,看看这些地址最近的交易是否异常,避免误授权!

这种攻击和上次Etherscan上Coinzilla利用广告注入恶意的攻击方式挺相似的,那么在技术上有没有可能预防?

理论上如果已知一些恶意js代码的行为和特征:

比如说代码的加密方式

恶意代码关键特征

代码会反debug

会调用opensea,debank,dappradar等API查询用户资产

根据这些恶意代码的行为特征库,那么我们可以尝试在客户端网页发起交易前,检测页面有没有包含已知恶意特征的代码来探测风险,或者直接更简单一点,对常见的网站设立白名单机制,不是交易类网站发起授权,给到足够的风险提醒等。

接下来ScamSniffer和慢雾安全团队也会尝试探索一下如何在客户端来预防此类的攻击发生!

Ps.感谢作者ScamSniffer的精彩分析!

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-2:911ms