找回密码
 立即注册
门户 深度观点 查看内容
  • QQ空间
  • 回复
  • 收藏

“区块链强盗”:黑客如何通过猜测薄弱的私钥窃取了价值数百万的ETH

2019-4-29 12:04

 

本周早些时候,美国安全咨询公司Independent security Evaluators (ISE)发布了一份关于Ethereum区块链私钥的报告。


尽管建立了大约700个脆弱的私钥,这些私钥经常被多人使用,研究人员还是发现了一个“区块链强盗”,通过成功猜测这些脆弱的私钥,他成功收集了近4.5万个以太(ETH)。Cointelegraph采访了ISE的高级安全分析师Adrian Bednarek,以了解他们所谓的“以太梳理”。

 

研究背景及主要发现


贝德纳里克说,他偶然发现了这名黑客。当时,他正在为一个企业客户做研究,该客户计划使用集成密钥生成算法实现自己的钱包。


他告诉Cointelegraph:“作为一名安全分析师,在开始任何评估之前,你必须非常清楚地了解底层技术——基本上就像你自己在创建它们一样。”


“私钥生成是我们必须研究的组件之一,我正在研究什么是以太坊的私钥的基础知识:它有多大?”它是如何产生的?它是如何得到公钥和公共地址的呢?”


在以太坊、比特币(BTC)或任何其他支持ECDSA(椭圆曲线数字签名算法)协议的主流区块链上,私钥由256位数字表示。ISE在他们的研究中把范围缩小到256位密钥空间中的8个32位“子区域”,因为在更大的区域内强制使用私钥在统计上是不可能的。


这八个子区域包含了340亿个较弱的键,ISE随后对这些键进行了扫描。“这花了一整天的时间,”Bednarek说。


值得强调的是,这些密钥是由错误的代码和错误的随机数生成器生成的,研究人员专门针对次优密钥。


“私钥同时是您的用户ID和密码,”安全分析人员在分析基本机制时解释道。“这不同于你的银行登录,你有你的用户名和密码……因此,当两个人使用相同的密码创建一个Brainwallet时[例如比如“password123”(密码123),它们将拥有完全相同的钱包。就像Bednarek说的,“这就像把两个人连接到同一个银行账户。”


最初,ISE专家发现“1”*的私钥(之所以选择它,是因为它是可能的私钥的下界)实际上正在区块链上使用。此外,它还参与了几千笔交易。


* -(如果使用256位代码编写,0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001)


“那是一个危险信号,”贝纳莱克回忆说。“为什么人们使用1的私钥?”这是不可能的。他的团队开始扫描更多的钥匙,看看问题有多普遍。尽管ISE的研究人员已经确定这个问题并不是特别普遍,但他们发现多达732个弱私钥与49060个事务相关。


“大约有5000万把钥匙被用在了以太空间上,而我们只发现了其中的732把。”


区块链的强盗


正如上面提到的,在他们的研究过程中,伊势研究小组注意到,一些与私钥相关的钱包——用他们的次优方法发现的——有很多交易要去一个特定的地址,却没有钱出来。正如Bednarek在ISE网站上发布的解释视频中所说:


“有个家伙有个地址,他四处走动,从我们能找到的一些钥匙上偷钱。我们找到了735把私人钥匙,他碰巧从我们能拿到的12把钥匙中拿走了钱。从统计上看,他不太可能碰巧猜出这些键,所以他很可能在做同样的事情。(……)基本上,只要资金进入人们的钱包,他就在偷钱。”


在与Cointelegraph的对话中,Bednarek解释说,黑客(或一群黑客)已经建立了一个节点,可以用弱键自动从地址中窃取资金。为了验证这一点,研究人员使用了一个蜜罐:他们使用一个弱的私钥发送了一美元,他们知道黑客知道这个私钥,以观察它的速度有多快。钱在几秒钟内就不见了,伊势的员工说:

 

“如果是手工制作的,也许一天之内就能完成。但是当我们发送它的时候,我们进入区块链浏览器,我们看到有一个传输立即发出,在几秒钟内。所以基本上他(黑客)拥有的是一个区块链节点,它是某个地方建立的交易网络的一部分。一旦它看到交易进来的交易带有他所知道的私钥,它就会立即发出转账请求。”


根据Etherscan获得的数据,黑客的钱包中大约有4.5万ETH(截至撰写本文时,价值超过730万美元)。在以太的最高价值,估计强盗的战利品可以卖超过5000万美元。


根据该诈骗者钱包地址的评论部分,该公司多年来一直在窃取资金。据称,其中一条评论是由ETH钱包的主要供应商MyEtherWallet (MEW)提交的,该评论提供了一个链接,链接到2016年Reddit的一个名为“Ethereum节点与不安全的RPC设置被积极利用”的线程。在这篇文章中,一位redditor描述了如何设置一个Ethereum节点,“它的HTTP RPC API暴露在互联网上”,并在上线后几分钟内受到攻击。


“如果你告诉他(黑客)的地址,很多人都在抱怨他,”Bednarek承认,并承认诈骗犯的策略已经被证明相当成功:


“这家伙采取了多管齐下的办法来偷钱。”


这位安全分析师随后更详细地描述了诈骗者的方法:“第一——他正在查看坏的私钥。第二,他正在关注基于密码的钱包和配置错误的rpc。你不应该暴露你的Ethereum节点的RPC,但有时人们会这样做,如果你没有设置密码,基本上有人可以清空与你的节点关联的默认钱包。”


但伊势安全研究人员警告称,这种资产攫取并非Ethereum区块链独有的问题。他在描述他的团队在做研究时面临的一个与道德相关的问题时表示:“(区块链)正按计划运作,这只是人们使用它的方式。”


“在我们开始这项(研究)之前,我们面临着一个道德困境——如果我们发现钱包里有一把钥匙,里面有一百万美元怎么办?”我们就这样算了吗?但如果我们把它放在那里,我们知道它在一个坏的私钥后面,它很可能被偷,因此我们要对这笔钱被偷负责,因为我们可以通知某人。但第二个问题是我们要通知谁?没有一种简单的方法可以识别私钥的所有者。也许我们可以暂时收下这笔钱,直到有人能证明那是他们的?但这也带来了很多法律问题。因此,(他们为之做研究的)这家公司的首席执行长联系了IFS寻求法律建议,他们基本上说,如果你发现了什么,就把它放在那里。不要做任何转移。这样你就不会陷入任何合法的麻烦之中。”

 

安全建议和进一步研究


因此,根据Bednarek的说法,由于两个主要因素,私钥容易受到攻击。首先是负责生成错误的软件中的编码错误。其次,一些密码所有者倾向于通过“abc123”等弱密码获得相同的私钥,甚至将它们留空。


例如,ISE报告确定,最流行的弱私钥之一是由空的恢复短语生成的私钥,即——使用平价钱包。据报道,这个地址有8 772笔交易,总共转移了5 215 586 ETH。


Bednarek解释说:“在一段时间内,奇偶校验允许您使用一个空的默认密码,它将基于此生成私钥。”“我认为,(自那以后)他们引入了最低密码要求。它可能只是一个字符,但如果你现在使用的是他们最新版本的软件,你就不能在奇偶校验的情况下使用空白密码。”


据Bednarek称,目前还没有钱包制造商联系ISE:


“这是一个有趣的问题,因为很难说是哪个钱包负责,如果真的有钱包的话——可能只是人们输入了错误的私钥,可能是钱包的早期调试版本,也可能是开发人员自己。很难说为什么会出现这种情况,也不知道是哪个钱包出了问题。我想我们永远也不会知道这件事。”


Bednarek给那些不熟悉计算机的人的主要建议是使用知名且可信的钱包,如果涉及大量加密货币,可能会转向硬件钱包或纸质钱包。他说:

 

“如果要交易或持有大量货币,那就使用硬件钱包,其中的私钥永远不会被泄露。我的很多长期持有纸质钱包的朋友都使用纸质钱包,他们会随机生成一个密钥并将其存储在纸上,这样它就不会接触到电脑了。”


Bednarek警告称,尽管如此,即便涉及到流行软件,也总是存在一些风险。他提到了Iota钱包被盗的例子。上个月,一名来自牛津的开发者被捕,并被控盗窃约1000万欧元。


由于Iota钱包是开源的,它的代码被公开发布在Github上。在某个时候,骗子修改了随机数生成器,提交了对代码的更改。


贝德纳莱克说:“这是以一种非常模糊的方式完成的。他说,“尽管很多人都可以检查代码,”但他们只是认为它应该可以工作。


这样,黑客就可以看到私钥是如何生成的,并使用他注入的代码重新生成私钥,ISE专家解释说。


“在很多人损失了很多钱之后,有人最终逆转了他对随机数生成器的修改,他们能够看到他在关键空间的特定范围内创建序列号。”


至于未来,ISE计划继续大规模监控区块链和弱私有密钥。Bednarek告诉Cointelegraph:“我们将把扫描方法转移到使用gpu的地方,我们将能够在几秒钟内扫描380亿个密钥。”


“随着扫描效率的提高,我们将能够做一些疯狂的事情,比如搜索brainwallet或其他可能有问题的密钥生成算法。”所以我们将扩展到不同的领域来识别更多的钥匙。”


此外,安全研究小组将发布更多信息——包括有缺陷的公钥——让人们自己进行研究,并对可能的安全漏洞保持警惕。Bednarek说:“也许这将转化为一种合作的努力,以帮助找到造成这种情况的一些原因。”

    原作者: Stephen O'Neal 来自: cointelegraph