爆破攻击:后偷渡时代的盗币方式

区块链安全档案
区块链安全档案 机构得得号

Aug 25, 2018 隶属于曲速未来安全区,安全问题深度分析、一手威胁情报披露

摘要: 对于暂时无法关闭对公网暴露的RPC接口的节点,在不使用personal.unlockAccount()的情况下,仍然存在被盗币的可能。

漏洞复现

被攻击节点启动参数为:geth–testnet–rpc–rpcaddr 0.0.0.0–rpcapi eth,personal console 

攻击者的攻击步骤为:

1.攻击者探测到目标开放了RPC端口->获取当前节点的区块高度、节点上的账户列表以及各账户的余额。根据蜜罐捕获的数据,部分攻击还会通过personal_listWallets接口进行查询,寻找当前节点上已经unlocked的账户。

2.调用personal_unlockAccount接口尝试解密用户账户。假如用户使用了弱口令,攻击者将会成功解锁相应账户。

3.攻击者可以将解锁账户中的余额全部转给自己。

攻击流程如下图所示:

升级的爆破方式

根据偷渡漏洞的原理可以知道该攻击方式有一个弊端:如果有两个攻击者同时攻击一个节点,当一个攻击者爆破成功,那么这两个攻击者都将可以取走节点中的余额。

谁付出了更多的手续费,谁的交易将会被先打包。这也陷入了一个恶性循环,盗币者需要将他们的利益更多地分给打包的矿工才能偷到对应的钱。也正是因为这个原因,蜜罐捕获到的爆破转账请求从最初的 personal_unlockAccount 接口逐渐变成了 personal_sendTransaction 接口。

personal_sendTransaction接口是Geth官方在2018/01新增了一个解决偷渡漏洞的RPC接口。使用该接口转账,解密出的私钥将会存放在内存中,所以不会引起偷渡漏洞相关的问题。攻击者与时俱进的攻击方式不免让我们惊叹。

探测的数据包

对蜜罐捕获的攻击流量进行统计,多个 JSON-RPC 接口被探测或利用:

 

其中eth_blockNumber、eth_accounts、net_version、personal_listWallets等接口具有很好的前期探测功能,net_version可以判断是否是主链,personal_listWallets则可以查看所有账户的解锁情况。

personal_unlockAccount、personal_sendTransaction、eth_sendTransaction等接口支持解锁账户或直接进行转账。

可以说,相比于第一阶段的攻击,后偷渡时代针对JSON-RPC的攻击正呈现多元化的特点。

爆破账号密码

蜜罐在2018/05/24第一次检测到通过unlockAccount接口爆破账户密码的行为。截止2018/07/14蜜罐一共捕获到809个密码在爆破中使用。

攻击者主要使用personal_unlockAccount接口进行爆破,爆破的payload主要是:

 

在所有的爆破密码中有一个比较特殊:ppppGoogle;该密码在personal_unlockAccount和personal_sendTransaction接口均有被多次爆破的痕迹。

转账的地址

蜜罐捕获到部分新增的盗币地址有:

攻击来源 IP

 

区块链技术与虚拟货币的火热,赋予了链上货币们巨大的经济价值,每个人都想在区块链浪潮中分得一杯羹。黑客们更是如此,他们作为盗币者,绞尽脑汁的想着各个角度攻击区块链与合约。当黑客栖身于矿工,他们不但能挖出区块,也能挖出漏洞。

(作者:区块链安全档案,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 区块链安全档案 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信