如何使用区块链传播VIRUSES?
分布式系统在恶意软件部署中的应用研究
自2017年以来,我一直在区块链世界。我想到的一个问题(作为2017年的新手)是
像比特币一样的区块链是公开的,对吗?有数千个节点,向网络广播消息……对于任何黑客来说,这是一个非常有希望的情况。我们可以利用这些分布式系统来感染整个网络吗?
几个月后,在了解了这些系统如何工作之后,我终于开始得到答案了。
在本文中,我们将看到:
- 为什么难以感染区块链本身?
- 我们可以使用分布式系统来存储恶意软件吗?
- 我们如何使用分布式系统(如IPFS和以太坊Swarm)传播恶意软件的实际示例。
让我们开始吧这将是一个有趣的旅程……
为什么难以感染区块链?
对于我们的例子,我们将针对比特币和以太坊。
与所有区块链一样,比特币/以太坊网络中的节点与其他节点通信并执行代码以验证和生成事务/块。
现在,为了使恶意软件传播并感染区块链,我们必须这样做
- 第1步:在交易中发送恶意软件
- 第2步:利用比特币客户端软件中的错误
这似乎很简单,但这两个步骤都有问题。
步骤1的问题:我们可以在事务中发送的数据量非常小。
在比特币的情况下,即使比特币块的最大尺寸也是1MB。因此,事务的大小甚至更小(~80字节)。
类似地,对于以太坊,您可以限制块的大/复(块gasLimit)。因此,以太坊也对交易规模有限制。
所有区块链都是如此。
步骤2的问题:当我们收到恶意负载时,我们几乎无能为力。
- 交易通常以固定格式编写。许多区块链客户端不接受任何任意消息。
- 执行环境(以太坊中的EVM)实际上是限制性的,只允许执行很少类型的指令。此外,即使以太坊支持智能合约并拥有图灵完整性,EVM限制(有限的OP代码和有限的blockgasLimit)使整体环境远离图灵完整性。
如果您想了解更多EVM的工作原理,可以查看一下
深入了解EVM:以太坊如何在后台工作
这适用于大多数区块ChainLink境。
此外,由于客户端代码是公开的,因此它由一个非常大的开发人员社区审查。这使得在客户端中找到可利用漏洞的可能性降低。这并不意味着这是不可能做到的,但与今天为黑客提供更多自由的互联网黑客相比,它很难找到漏洞。
我们可以使用分布式系统来存储恶意软件吗?
好吧,我们看到很难搞乱区块链,但我们并没有停在这里……
https://medium.com/media/b47ae11c3abc1c76b4b409916fa52609/href
感染这些系统很困难,但它们仍然是非常好的有效载荷传递机制。
我们看到,由于交易规模有限,很难在单个交易中打包恶意软件……那么,谁说只需要使用一笔交易?
输入K-ary恶意软件。
这些东西并不新鲜。因此,如果您熟悉恶意软件,那么您可能并不感到惊讶。
https://medium.com/media/b684f2eb27275ce3b27bcf3c274a4b1a/href
这些已经从2007年开始在这里,已经感染了很多系统。这个恶意软件是你可以在本文中找到它们的详细研究。我会尽量减少这篇文章的技术性。
这些恶意软件的工作方式是将有效负载分成k个部分,而不是将恶意负载保留为一个实体。每个部分看起来都像一个无辜的可执行文件,并没有产生任何妥协的指示(IOC)。
现在,有两种不同类型的k-ary:
- k部分按顺序工作。因此,没有必要同时提供所有部件和活动部件。
- k部分并行工作。因此,所有卡盘必须在同一时期内在系统中可用并且活动。
选择取决于您所针对的环境和系统。
为了使攻击更加隐秘,我们还可以对块进行加密。因此,通过这种方式,我们可以分别传递加密的有效负载和密钥(以解密有效负载)。
此外,在执行病毒有效载荷之前,我们可以使用有效载荷的散列来识别网络中是否存在所有部分。
你可能会问,k-ary如何从DLT(分布式分类系统)中受益?
使用DLT有一些优点
- 关于DLT的数据在很大程度上是不可改变的。这意味着如果我们将我们的恶意软件添加到DLT,那么很难将其关闭,因为这些网络不受任何单一实体的控制。
- 密码术的固有用途使恶意软件可以轻松验证其块的完整性。由于使用散列(内容寻址)而不是其位置(位置寻址)来引用所有数据,因此它为我们提供了一种更可信的方式来验证块是否已被篡改。
一些实际例子
免责声明:以下演示的技术仅用于教育目的。
要了解上述提议系统的工作原理,我们将在IPFS上进行演示。
首先,我们将使用Keylogger并针对防病毒软件进行检查。然后我们将使用IPFS和Swarm来存储这些有效负载,并查看防病毒软件是否检测到这些块。
我们先下载一个键盘记录器。你可以用这个。现在,请在此处查看防病毒软件。
您可以看到检测到恶意软件。
现在把恶意软件搞得一团糟。
IPFS
您可以从此处下载和设置IPFS。
安装后使用以下命令将恶意软件添加到IPFS。
ipfs添加 您将收到以下输出 您的恶意软件被分块并存储在IPFS上。我整个恶意软件文件的哈希值(如上图所示) QmNuAxMT9pepjZ26yXEk4T8qXofJrHoe7SxpoHa5WJ3T5x 如果您想了解更多有关其工作原理的信息,可以查看一下。 深入了解IPFS(1/6):初级到高级指南 现在,您可以使用此命令列出块 ipfs ls QmNuAxMT9pepjZ26yXEk4T8qXofJrHoe7SxpoHa5WJ3T5x 这给了我以下输出 这些是分块文件的哈希值。现在我们可以使用每个文件 ipfs得到 当我通过引用它们的哈希来获取块时,我完全确定这些块没有被篡改。 现在,您可以针对防病毒软件检查各个块。你所有的块都会通过测试。 现在我们知道恶意软件的所有部分都可用,我们可以执行我们的键盘记录器。 注意:默认情况下,IPFS不是持久的。如果内容未固定,则垃圾收集器将删除内容。 以太坊Swarm(以太坊的存储层)提供持久存储。所以,它现在可能是一个更好的选择。 Swarm也以非常相似的方式工作。您可以添加恶意软件块并通过其哈希引用来获取它。 谢谢阅读 ;) 学到了什么?按住?说“谢谢”并帮助其他人找到这篇文章。
如果您喜欢内容,请按住拍手按钮它可以帮助我获得曝光率。 关于作者 Vaibhav Saini是麻省理工学院剑桥创新中心Towards区块链的联合创始人。 他是高级区块链开发人员,曾参与多个区块链平台,包括以太坊,Quorum,EOS,Nano,Hashgraph,IOTA等。 他是IIT德里的演讲者,作家和辍学者。 想了解更多?看看我以前的文章。 拍50次并在Twitter上关注我:@vasa_develop https://medium.com/media/3c851dac986ab6dbb2d1aaa91205a8eb/href 如何使用区块链传播VIRUSES?最初发布于Hacker Noon on Medium,人们通过突出显示和回应这个故事来继续对话。