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

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

内容简介: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接口多种盗币揭秘之偷渡时代

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

查看所有标签

猜你喜欢:

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

Data Structures and Algorithms in Java

Data Structures and Algorithms in Java

Robert Lafore / Sams / 2002-11-06 / USD 64.99

Data Structures and Algorithms in Java, Second Edition is designed to be easy to read and understand although the topic itself is complicated. Algorithms are the procedures that software programs use......一起来看看 《Data Structures and Algorithms in Java》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具