WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

栏目: 服务器 · 发布时间: 5年前

内容简介:WF曲速未来有话要说:古人的盗亦有道,在虚拟货币领域也有着它独特的定义。只有对区块链技术足够了解,才能在这场盛宴中获取足够多的金钱。他们似那黑暗中独行的狼,无论是否得手都会在被发现前抽身而去。本文为作者“区块链安全档案”,原创文章,转载时请保留本声明及附带文章链接。 内容仅供读者参考,并非投资建议,本网站将保留所有法律权益。

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代 2018-08-22 23:10 技术 ETH WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代 217 收藏

WF曲速未来有话要说:古人的盗亦有道,在虚拟货币领域也有着它独特的定义。只有对区块链技术足够了解,才能在这场盛宴中获取足够多的金钱。他们似那黑暗中独行的狼,无论是否得手都会在被发现前抽身而去。

WF曲速未来有话要说:古人的盗亦有道,在虚拟货币领域也有着它独特的定义。只有对区块链技术足够了解,才能在这场盛宴中获取足够多的金钱。他们似那黑暗中独行的狼,无论是否得手都会在被发现前抽身而去。

前言:

WF曲速未来带你回顾:

2018-03-21, 在《揭秘以太坊中潜伏多年的「偷渡」漏洞,全球黑客正在疯狂偷币》和《以太坊生态缺陷导致的一起亿级代币盗窃大案》两文揭秘以太坊偷渡漏洞(又称为以太坊黑色情人节事件)相关攻击细节后,已根据已有的信息进一步完善了相关蜜罐。

2018-05-16, 再次对偷渡漏洞事件进行预警并指出该端口已存在密集的扫描行为。

2018-06-29,慢雾社区里预警了以太坊黑色情人节事件(即偷渡漏洞)新型攻击手法,该攻击手法在本文中亦称之为:离线攻击。

黑暗中的盗币方式:偷渡时代

攻击流程复现

攻击复现环境位于ropsten测试网络。

被攻击者 IP: 10.0.0.2,启动客户端命令为:geth –testnet –rpc –rpcapi eth –rpcaddr 0.0.0.0 console账户地址为:

0x6c047d734ee0c0a11d04e12adf5cce4b31da3921, 剩余余额为5 ether;

攻击者 IP: 10.0.0.3 , 账户地址为:

0xda0b72478ed8abd676c603364f3105233068bdad;

攻击者步骤如下:

1. 攻击者通过端口扫描等方式发现被攻击者开放了JSON-RPC端口后,调用eth_getBlockByNumbereth_accounts接口查询当前节点最新的区块高度以及该节点上已有的账户。

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

2. 攻击者调用eth_getBalance接口查询当前节点上所有账户的余额。

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

3. 攻击者对存在余额的账户持续发起转账请求。

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

一段时间后,被攻击者需要进行交易:

按照之前的知识点,用户需要先解锁账户然后才能转账。当我们使用 personal.unlockAccount 和密码解锁账户后,就可以在终端看到恶意攻击者已经成功发起交易。

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

恶意攻击者的交易信息:

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

攻击的流程图如下所示:

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

攻击成功的关键点解析

看完前面的偷渡漏洞攻击流程,你可能会有这样的疑问:

1)攻击者为什么可以转账成功?

2)如例子中所示,该地址只有 5 ether,一次被转走了 4.79 ether,如果我们解锁账户后在被攻击前发起转账,转走 1 ether,是否攻击者就不会攻击成功?

下文将详细分析这两个问题并给出答案。

攻击者可以通过 rpc 接口转账的原因:

首先,分析一下关键的unlockAccount函数:

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

在判断传入的解锁时间是否为空、是否大于最大值后,调用 TimedUnlock() 进行解锁账户的操作,而 TimedUnlock() 的代码如下:

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

首先通过getDecryptedKey()从keystore文件夹下的文件中解密出私钥,再判断该账户是否已经被解锁,如果没有被解锁,则将解密出的私钥存入名为unlocked的map中。如果设置了解锁时间,则启动一个协程进行超时处理go ks.expire()。

再看向实现转账的函数的实现过程SendTransaction()-> wallet.SignTx() -> w.keystore.SignTx():

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

可以看到,在w.keystore.SignTx()中,直接从ks.unlocked中取出对应的私钥。这也就意味着如果执行了unlockAccount()函数、没有超时的话,从ipc、rpc调用SendTransaction()都会成功签名相关交易。

由于默认参数启动的 Go-Ethereum 设计上并没有对 ipc、rpc 接口添加相应的鉴权模式,也没有在上述的代码中对请求用户的身份进行判断,最终导致攻击者可以在用户解锁账号的时候完成转账操作,偷渡漏洞利用成功。

攻击者和用户竞争转账的问题

由于用户解锁账户的目的是为了转账,所以存在用户和攻击者几乎同时发起了交易的情况,在这种情况下,攻击者是如何保证其攻击的成功率呢?

在攻击者账号0x957cD4Ff9b3894FC78b5134A8DC72b032fFbC464的交易记录中,交易0x8ec46c3054434fe00155bb2d7e36d59f35d0ae1527aa5da8ec6721b800ec3aa2能够很好地解释该问题。

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

相较于目前主流的gasPrice维持在1Gwei,该笔交易的gasPrice达到了惊人的1,149,246 Gwei。

也正是由于较高的gasPrice, 使得该攻击者在与其它攻击者的竞争中(有兴趣的可以看看上图红框下方两笔dropped Txns)得到这笔巨款。

蜜罐捕获数据

蜜罐是一台无人使用但却被严密监控的网络主机,它包含虚假的高价值资源和一些漏洞,以此吸引入侵者攻击主机。并且在被入侵的讨程中,实时记录和审计攻击者的攻击流量、行为和数据。以此了解攻击者的方式、手段和目的,并且完成对攻击溯源取证等进一步的工作。

数据捕获:数据捕获技术包括网络流量数据捕获以及主机上系统行为的捕获。网络流量数据的捕获结合网络入侵检测系统,配置相关敏感信息的检测规则,触发入侵检测规则时立即记录网络流量。

在偷渡漏洞被曝光后,就有在已有的蜜罐数据中寻找到部分攻击的痕迹。

下图是2017/10/01到2018/03/21间蜜罐监控到的相关攻击情况:

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

被攻击端口主要是8545端口,8546、10332、8555、18082、8585端口等也有少量扫描痕迹。

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

攻击来源IP主要集中在46.166.148.120/196和216.158.238.178/186/226上:

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

46.166.148.120/196攻击者使用的探测payload主要是:

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

216.158.238.178/186/226攻击者使用的探测payload主要是:

WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

具有团队在全球节点蜜罐监测结果显示,黑客针对以太坊 JSON-RPC 进行盗币攻击一直在持续。区块链安全公司WF曲速未来再次建议广大注意安全防御。

本文为作者“区块链安全档案”,原创文章,转载时请保留本声明及附带文章链接。 内容仅供读者参考,并非投资建议,本网站将保留所有法律权益。

  • WF曲速未来:以太坊JSON-RPC接口多种盗币揭秘之偷渡时代

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python Cookbook 中文版,第 3 版

Python Cookbook 中文版,第 3 版

David M. Beazley、Brian K. Jones / 陈舸 / 人民邮电出版社 / 2015-5-1 / 108.00元

《Python Cookbook(第3版)中文版》介绍了Python应用在各个领域中的一些使用技巧和方法,其主题涵盖了数据结构和算法,字符串和文本,数字、日期和时间,迭代器和生成器,文件和I/O,数据编码与处理,函数,类与对象,元编程,模块和包,网络和Web编程,并发,实用脚本和系统管理,测试、调试以及异常,C语言扩展等。 本书覆盖了Python应用中的很多常见问题,并提出了通用的解决方案。......一起来看看 《Python Cookbook 中文版,第 3 版》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具