我们都知道,区块链上的数据是不可篡改且永久存储的,所以有的人将爱慕之情写在区块链上,有的人将产权写在区块链上。
设想一下,如果将恶意软件写在区块链上,那岂不是成千上万的矿工都成了你恶意软件的“播种机”?
使用区块链来传播恶意软件到底可行么?这样做又会存在怎样的限制?
带着这些问题,TowardsBlockchain公司联合创始人、区块链高级工程师VaibhavSaini做了一个大胆的实验。让我们去他的实验中一探究竟。
以下为他对这个实验的叙述。
自从我2017年加入区块链世界以来,有一个问题一直困扰着我,那就是:
比特币这样的公链是向每一个人开放的,在区块链网络中有成千上万个节点,它们都在向网络中广播消息,从黑客的角度来说,这是一个不可多得的诱人场景。那么,从技术上来说我们可以通过感染几个节点来撬动整个区块链网络么?
经过几个月的学习与思考,我熟练地掌握了区块链的工作机制,也得出了这个问题的答案。
ADA Whale发布更新,将新增支付结算服务Hydra Pay:金色财经报道,根据ADA Whale发布的更新,未来新增的支付结算服务称为Hydra Pay,旨在为Cardano L2提供即时的结算。Hydra Pay服务的开发由独立开发人员完成,最新更新显示该协议在Android上的测试早在5月份就已进行。[2023/7/9 22:26:18]
不得不说这是一个很有意思的问题,所以我将自己的思考过程凝练成这一篇文章,在文章中你将学到:
为什么恶意软件难以感染区块链?
我们可以使用区块链这种去中心化系统来传播恶意软件么?
使用星际文件系统IPFS和以太坊存储网络Swarm这两个去中心化系统传播恶意软件的动手实例。
废话不多说,让我们开始吧!相信这将是一段有趣的旅程......
为什么恶意软件难以感染区块链?
为了详细地回答这个问题,在这里我们将讨论的范围缩小到比特币和以太坊这两个公链上。
与其他所有区块链一样,比特币和以太坊区块链中的节点都会与其他节点通信,也会执行共识规则来验证交易,生成区块。
比特币核心开发者Marco Falke拟于今年夏天辞去维护者的职务:2月23日消息,比特币核心开发者Marco Falke在2月21日发布的推文中宣布,将于今年夏天辞去维护者的职务。据悉,Falke是比特币核心最多产的贡献者,在其七年任期内,Falke收集了超2,000个已被提交的软件更改建议,在这七年中的三年里,Falke的努力得到了加密货币交易所Okcoin和Web3投资公司Paradigm的资助。Falke重申了他对比特币的热情,并表示他“对未来持积极态度”,但他的角色不再适合他。
在过去的几年里,一些比特币开发人员和维护者选择离开他们的各种角色,包括John Newbery、Samuel Dobson、Jonas Schnelli、Peter Wuille和Wladimir J. van der Laan。
此前华尔街日报在2月16日的文章中称,一名比特币核心代码管理员已离开,现仅有5人有修改代码权限。该媒体还在2月21日的文章中报道了Marco Falke计划离职的消息。[2023/2/23 12:24:21]
现在我们考虑一下攻击的场景,为了在区块链上传播恶意软件并最终感染区块链,我们需要这样做:
香港金管局:计划发行首批代币化绿色债券:金色财经报道,香港金管局近日表示,计划发行首批代币化绿色债券,署理财经事务及库务局局长陈浩濂表示,此次代币化绿债将于政府绿色债券计划下发行,供机构投资者认购,预期较以往的发行规模有所缩减。当相关代币化绿债正式发行时,会公布细节安排。
陈浩濂表示,计划发行的代币化绿债属试点项目,旨在验证香港现行法规和监管要求、金融基础设施配套、市场运作惯例等各个环节与债券代币化发行的兼容性,并对各环节中存在的障碍寻求可行的解决方案,为未来较大规模、更广泛地推行代币化债券发行和交易积累经验。
此外,据彭博社报道,知情人士表示,香港特别行政区希望通过此次发行代币化绿色债券筹集8亿港元(约1.02亿美元),并已与中国银行、法国农业信贷银行、高盛集团和汇丰控股有限公司接洽,相关投资者电话会议将从2月13日开始举行,这些票据的实益权益将记录在高盛提供的基于分布式账本技术的数字资产平台上。[2023/2/13 12:03:37]
第1步:在交易中发送恶意软件。
第2步:利用比特币客户端软件中的漏洞。
美国财政部:加密货币需要严格监督:金色财经报道,根据《华盛顿邮报》最近的一篇文章,美国财政部打算告诉白宫,加密资产是投资者的主要金融风险来源,除非政府针对加密货币推出新的强有力的法规,否则这些风险超过了投资者的潜在利益。[2022/9/8 13:17:33]
看起来这两个步骤都没有什么难度,但在真正实现的时候你就会发现它们都多多少少的存在着一些问题。
比如步骤1中存在的问题是,在交易中我们能发送的数据量非常小。
就拿比特币来说,比特币区块的最大容量才1MB,平均下来每笔交易占据的空间很小,大约只有80字节。
类似的,对于以太坊来说,区块gasLimit限制了区块的大小以及其中代码的复杂度,换句话说,以太坊对交易的大小也有限制。
或者可以这样说,所有的区块链都是如此。
而步骤2存在的问题是,即使我们发送了恶意软件的代码,但让代码运行起来也是一个很大的问题。
这是因为:
交易通常都有着固定的格式。许多区块链客户端都不会接收那些格式不匹配的消息。
上市矿企Hut 8第二季度亏损扩大至6900万美元:8月11日消息,上市矿企Hut 8今年第二季度亏损8810万加元(6900万美元),去年同一季度,Hut 8录得400万加元的亏损,而上一季度录得5570万加元的利润。Hut 8在周四的财报中表示,本季度的亏损是由其数字资产的价值重估造成的。
此外,由于电力成本上涨和比特币价格下跌,该公司的挖矿利润与第一季度相比减少了一半以上,至1490万加元。该矿工挖矿每个比特币的成本增长了44%,达到25,900加元,大约是2021年第二季度的水平。
Hut 8本季度总收入为4380万加元,与上一季度相比下降22%,但同比增长三分之一。在本季度挖矿了946个比特币,与今年第一季度挖矿的942个相比几乎没有变化。Hut 8的比特币持有量在本季度增长了14.6%至7,406,与前三个月的增长步伐保持一致。(CoinDesk)[2022/8/11 12:19:07]
实际上代码的执行环境有着很多的限制,它只允许执行区区几种类型的指令。此外,虽说以太坊支持智能合约且拥有号称图灵完备的编程语言Solidity,但以太坊虚拟机的种种限制让代码运行的环境与图灵完备几乎不沾边。
而且大多数区块链系统的代码运行环境都是这样。
此外,由于客户端代码往往都是开源的,因此它在落地之前通常都会经过一个非常大的开发者社区的审查,这使得我们在其中找到漏洞的可能性微乎其微。
当然了我并不是说这些客户端不存在漏洞,只是说要是有漏洞的话,那些靠漏洞吃饭的黑客早用来执行攻击了,能被我们捡漏的机会很少。
恶人可以使用区块链来传播恶意软件吗?
上面说到我们很难用恶意软件来感染区块链,但这并不会阻挡我们实验的脚步。我们退而求其次,只用区块链来传播恶意软件可行么?
虽说感染区块链系统很困难,但就传播恶意软件的有效载荷而言,区块链完全可以胜任。
你可能会疑惑,我们刚才说到由于交易规模的限制,在单笔交易中打包恶意软件几乎不可能实现,是这样的,但是,谁说我们只能使用一笔交易来传播恶意软件呢?
接下来我们就用K元恶意软件来做个实验。
其实K元恶意软件并不是什么新鲜事物,如果你之前对恶意软件有过了解,相信你并不会对此感到陌生。
K元恶意软件自2007年出现以来已经感染了很多的系统。去年4月,黎巴嫩学者JoannaMoubarak发表论文详细论述了如何使用区块链传播K元恶意软件,接下来我会以严谨但不失趣味性的表述来介绍这种方法。
与传统恶意软件只能被装载到一个实体中不同,K元恶意软件可以将有效载荷分成K个部分。其中每一个部分看起来都像是一个正常的可执行文件,并不会产生任何入侵感染指标。
从原理上来说,我们有两种划分K个部分的方法:
K个部分按顺序工作。在这种情况下,没有必要保证恶意软件中的这K个部分同时可用且同时被激活;
K个部分并行工作。在这种情况下,恶意软件中的这K个部分必须在同一时间段内可用且被激活。
当然了,具体怎么划分取决于我们所要执行攻击的环境和系统。
为了使攻击更加隐蔽,我们还可以对每个部分进行加密。不过在这种情况下,我们需要分别传输加密过的有效载荷和用来解密有效载荷的密钥。
此外,如何确保执行恶意软件时各个部分不掉链子呢?在执行之前,我们可以使用有效载荷的哈希值来检验各个部分是否都已加入到网络中。
你可能会问,这么做是为了什么呢?区块链能给K元恶意软件的传播带来什么帮助呢?
使用区块链有以下优点:
区块链上的数据是不可篡改的,而且区块链并不受任何单一实体的控制。这意味着如果我们将恶意软件加入到区块链中,他人很难将它从区块链中删除。
密码学哈希函数的使用让恶意软件可以便捷地验证各组成部分的完整性。由于区块链上的数据使用哈希值而不使用存储位置来进行索引,这种保障交易不被篡改的机制也可以用来保障恶意软件的各个部分不被篡改。
演示:使用IPFS和以太坊存储网络Swarm传播恶意软件
区块链可以传播恶意软件,但具体该怎么操作呢?接下来我们将在星际文件系统上进行演示。
这里的恶意软件选用键盘记录器,首先我们使用杀软件扫描检测它,然后我们将使用星际文件系统和以太坊存储网络Swarm来存储恶意软件的有效载荷,并验证杀软件是否能发现各个部分中的猫腻。
我们先下载一个键盘记录器,我已经将它传到了网盘上,你可以登陆网盘下载。接下来,我们试着用杀软件扫描一下。
我们可以看到杀软件检测出恶意软件。
现在我们把恶意软件分成K个部分。这里我们需要先下载并配置星际文件系统。
安装完成后我们使用以下命令将恶意软件添加到星际文件系统中。
ipfsadd
我们会得到这样的输出。
到这里,我们的恶意软件已经被分成K个部分并被存储在星际文件系统中了。如上图所示,这个恶意软件的哈希值为:
QmNuAxMT9pepjZ26yXEk4T8qXofJrHoe7SxpoHa5WJ3T5x
如果要查看这K个部分,我们可以使用如下命令:
ipfslsQmNuAxMT9pepjZ26yXEk4T8qXofJrHoe7SxpoHa5WJ3T5x
命令的输出如下:
前面的数据是各部分文件的哈希值,我们可以用它来取出对应部分的文件。
ipfsget
当我们使用哈希值索引来下载某部分的文件时,我们可以完全确定这些文件没有被篡改。
下载完成后,我们再用杀软件扫描一下。这时恶意软件各部分的文件都可以通过检验。
上图表明恶意软件的所有部分都是可用的,也就是说我们可以运行键盘记录器来盗取信息了。
注意:这里并没有将文件永久存储在星际文件系统中。该系统中未被固定(pinned)的内容,会被垃圾收集器删除。
以太坊存储网络Swarm提供永久存储的服务,就这点来看,它可能是一个更好的区块链选择。而且Swarm的工作方式与星际文件系统类似,你可以将恶意软件分成K个部分上传然后使用其哈希值作为索引来下载它。
*免责声明:文中演示的技术仅以技术探索与求知为目的,不建议在任何实际的公链中尝试,如果这样操作,则后果自负。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。