把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验……

区块链资讯牛市来了2019-06-05 10:52:30  阅读 -评论 0

来源: 区块链大本营

来源 | Hackernoon编译 | Guoxi责编 | Aholiab出品 | 区块链大本营(blockchain_camp)我们都知道,区块链上的数据是不可篡改且永久存储的,所以有的人将爱慕之情写在区块链上,有的人将产权写在区块链上。...

把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验……

来源 | Hackernoon

编译 | Guoxi

责编 | Aholiab

出品 | 区块链大本营(blockchain_camp)

我们都知道,区块链上的数据是不可篡改且永久存储的,所以有的人将爱慕之情写在区块链上,有的人将产权写在区块链上。

设想一下,如果将恶意软件写在区块链上,那岂不是成千上万的矿工都成了你恶意软件的"播种机"?


把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验……

使用区块链来传播恶意软件到底可行么?这样做又会存在怎样的限制?

带着这些问题,TowardsBlockchain 公司联合创始人、区块链高级工程师 Vaibhav Saini 做了一个大胆的实验。让我们去他的实验中一探究竟。

以下为他对这个实验的叙述。

自从我 2017 年加入区块链世界以来,有一个问题一直困扰着我,那就是:

比特币这样的公链是向每一个人开放的,在区块链网络中有成千上万个节点,它们都在向网络中广播消息,从黑客的角度来说,这是一个不可多得的诱人场景。那么,从技术上来说我们可以通过感染几个节点来撬动整个区块链网络么?

经过几个月的学习与思考,我熟练地掌握了区块链的工作机制,也得出了这个问题的答案。

不得不说这是一个很有意思的问题,所以我将自己的思考过程凝练成这一篇文章,在文章中你将学到:

  • 为什么恶意软件难以感染区块链?
  • 我们可以使用区块链这种去中心化系统来传播恶意软件么?
  • 使用星际文件系统 IPFS 和以太坊存储网络 Swarm 这两个去中心化系统传播恶意软件的动手实例。

废话不多说,让我们开始吧!相信这将是一段有趣的旅程......

把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验……

为什么恶意软件难以感染区块链?

为了详细地回答这个问题,在这里我们将讨论的范围缩小到比特币和以太坊这两个公链上。

与其他所有区块链一样,比特币和以太坊区块链中的节点都会与其他节点通信,也会执行共识规则来验证交易,生成区块。

现在我们考虑一下攻击的场景,为了在区块链上传播恶意软件并最终感染区块链,我们需要这样做:

  • 第 1 步:在交易中发送恶意软件。
  • 第 2 步:利用比特币客户端软件中的漏洞。

看起来这两个步骤都没有什么难度,但在真正实现的时候你就会发现它们都多多少少的存在着一些问题。

比如步骤1中存在的问题是,在交易中我们能发送的数据量非常小。

就拿比特币来说,比特币区块的最大容量才 1MB ,平均下来每笔交易占据的空间很小,大约只有 80 字节。

类似的,对于以太坊来说,区块gasLimit限制了区块的大小以及其中代码的复杂度,换句话说,以太坊对交易的大小也有限制。

或者可以这样说,所有的区块链都是如此。

而步骤2存在的问题是,即使我们发送了恶意软件的代码,但让代码运行起来也是一个很大的问题

这是因为:

  • 交易通常都有着固定的格式。许多区块链客户端都不会接收那些格式不匹配的消息。
  • 实际上代码的执行环境(例如以太坊虚拟机)有着很多的限制,它只允许执行区区几种类型的指令。此外,虽说以太坊支持智能合约且拥有号称图灵完备的编程语言 Solidity,但以太坊虚拟机的种种限制(例如非常有限的以太坊指令集和非常有限的区块燃料上限)让代码运行的环境与图灵完备几乎不沾边。

而且大多数区块链系统的代码运行环境都是这样。

此外,由于客户端代码往往都是开源的,因此它在落地之前通常都会经过一个非常大的开发者社区的审查,这使得我们在其中找到漏洞的可能性微乎其微。

当然了我并不是说这些客户端不存在漏洞,只是说要是有漏洞的话,那些靠漏洞吃饭的黑客早用来执行攻击了,能被我们捡漏的机会很少

恶人可以使用区块链来传播恶意软件吗?

上面说到我们很难用恶意软件来感染区块链,但这并不会阻挡我们实验的脚步。我们退而求其次,只用区块链来传播恶意软件可行么?

虽说感染区块链系统很困难,但就传播恶意软件的有效载荷(代码和文件)而言,区块链完全可以胜任。

你可能会疑惑,我们刚才说到由于交易规模的限制,在单笔交易中打包恶意软件几乎不可能实现,是这样的,但是,谁说我们只能使用一笔交易来传播恶意软件呢?

接下来我们就用 K 元(K-ary)恶意软件来做个实验。

其实 K 元恶意软件并不是什么新鲜事物,如果你之前对恶意软件有过了解,相信你并不会对此感到陌生(反病毒专家一定会说,你不按套路出牌)。

K 元恶意软件自 2007 年出现以来已经感染了很多的系统。去年 4 月,黎巴嫩学者 Joanna Moubarak 发表论文详细论述了如何使用区块链传播 K 元恶意软件,接下来我会以严谨但不失趣味性的表述来介绍这种方法。

与传统恶意软件只能被装载到一个实体中不同,K 元恶意软件可以将有效载荷分成 K 个部分其中每一个部分看起来都像是一个正常的可执行文件,并不会产生任何入侵感染指标(indication of compromise ,IOC,计算机安全术语)。

从原理上来说,我们有两种划分 K 个部分的方法:

  • K 个部分按顺序工作。在这种情况下,没有必要保证恶意软件中的这 K 个部分同时可用且同时被激活;
  • K 个部分并行工作(同时工作)。在这种情况下,恶意软件中的这 K 个部分必须在同一时间段内可用且被激活。

当然了,具体怎么划分取决于我们所要执行攻击的环境和系统。

为了使攻击更加隐蔽,我们还可以对每个部分进行加密。不过在这种情况下,我们需要分别传输加密过的有效载荷和用来解密有效载荷的密钥。

此外,如何确保执行恶意软件时各个部分不掉链子呢?在执行之前,我们可以使用有效载荷的哈希值来检验各个部分是否都已加入到网络中。

你可能会问,这么做是为了什么呢?区块链能给 K 元恶意软件的传播带来什么帮助呢?

使用区块链有以下优点:

  • 区块链上的数据是不可篡改的,而且区块链并不受任何单一实体的控制。这意味着如果我们将恶意软件加入到区块链中,他人很难将它从区块链中删除。
  • 密码学哈希函数的使用让恶意软件可以便捷地验证各组成部分的完整性。由于区块链上的数据使用哈希值(基于内容寻址)而不使用存储位置(基于位置寻址)来进行索引,这种保障交易不被篡改的机制也可以用来保障恶意软件的各个部分不被篡改。

演示:使用IPFS和以太坊存储网络Swarm传播恶意软件


区块链可以传播恶意软件,但具体该怎么操作呢?接下来我们将在星际文件系统上进行演示。

这里的恶意软件选用键盘记录器(Keylogger),首先我们使用杀毒软件扫描检测它,然后我们将使用星际文件系统和以太坊存储网络 Swarm 来存储恶意软件的有效载荷,并验证杀毒软件是否能发现各个部分中的猫腻。

我们先下载一个键盘记录器,我已经将它传到了网盘上,你可以登陆网盘下载。接下来,我们试着用杀毒软件扫描一下。

我们可以看到杀毒软件检测出恶意软件。

把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验……

现在我们把恶意软件分成 K 个部分。这里我们需要先下载并配置星际文件系统。

安装完成后我们使用以下命令将恶意软件添加到星际文件系统中。

ipfs add <path-to-malware-file>

我们会得到这样的输出。

把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验……

到这里,我们的恶意软件已经被分成 K 个部分并被存储在星际文件系统中了。如上图所示,这个恶意软件的哈希值为:

QmNuAxMT9pepjZ26yXEk4T8qXofJrHoe7SxpoHa5WJ3T5x

如果要查看这 K 个部分,我们可以使用如下命令:

ipfs ls QmNuAxMT9pepjZ26yXEk4T8qXofJrHoe7SxpoHa5WJ3T5x

命令的输出如下:

把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验……

前面的数据是各部分文件的哈希值,我们可以用它来取出对应部分的文件。

ipfs get <hash-of-chunk>

当我们使用哈希值索引来下载某部分的文件时,我们可以完全确定这些文件没有被篡改。

下载完成后,我们再用杀毒软件扫描一下。这时恶意软件各部分的文件都可以通过检验。

把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验……

上图表明恶意软件的所有部分都是可用的,也就是说我们可以运行键盘记录器来盗取信息了。

注意:这里并没有将文件永久存储在星际文件系统中。该系统中未被固定( pinned )的内容,会被垃圾收集器( garbage collector,通常简写为 GC )删除。

以太坊存储网络 Swarm 提供永久存储的服务,就这点来看,它可能是一个更好的区块链选择。 而且 Swarm 的工作方式与星际文件系统类似,你可以将恶意软件分成 K 个部分上传然后使用其哈希值作为索引来下载它。

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

区块链基础技术大剖析之智能合约

俗话说,“规则是死的,人是活的”,程序作为一种运行在计算机上的规则,同样是“死的”。但是“死的”也不总是贬义词,因为它意味着会严格执行。

HyperChain Capital首席执行官:DeFi提供了潜在的投资机会

数字资产管理公司HyperChain Capital首席执行官表示,去中心化金融提供了潜在的增长机会。总部位于新加坡的HyperChain专注于对基于区块链的项目和去中心化协议的投资。

NEM区块链的执法解决方案

NEM的区块链技术提供了极大地简化大量安全账簿和交易跟踪系统的潜力。这些只是NEM智能资产系统可以提供执法的一些实际的面向客户的服务。通过NEM区块链发送的消息可以使用用户的私钥进行本地加密。

区块链是保险的未来吗?

区块链将促进保险公司之间的协调。区块链协议的本地加密保护患者数据,同时确保快速和可靠的信息共享。

区块链领域7年并购史,129笔交易背后哪个赛道在吸金

区块链领域7年并购史,129笔交易背后哪个赛道在吸金

  近年来区块链不同领域的并购规模  2013年至2017年期间,区块链领域公开的收购兼并交易共有39笔。2018年区块链行业里的收购兼并交易出现激增,2017年共有15笔,而2018年上涨到46笔,涨幅达到207%。

中信银行打造“区块链”信用证结算!

中信银行打造“区块链”信用证结算!

科技不会改变金融的实质,但却能让金融服务更高效,能让资金供、需方信息不对称的问题更好地解决。近期,中信银行首个区块链项目——基于区块链的国内信用证信息传输系统(简称BCLC)(一期)成功上线,这是国内银行业第一次将区块链技术应用于信用证结算领域。 据中信银行国际业务部总经理助理张栩青介绍,将现在流行的区块链技术应用在国内信用证中,改变了银行传统信用证业务模式,信用证的开立、通知、交单、承兑报文

中国信息技术部门成立区块链研究实验室

中国信息技术部门成立区块链研究实验室

暴走时评:本月初,中国政府对国内的ICO和数字货币交易所的打击在世界范围内引起了强大反响,但政府已经多次声明不会将区块链与数字货币划等号,依然非常重视区块链技术在中国的发展。鉴于中国工业和信息化部成立了一个专门研究区块链的实验室,这一论调也得到了进一步的证实。 虽然中国政府最近在大力打击比特币交易所和ICO,但仍然致力于开发区块链在其他领域的潜力。 据财新网报道,中国工业和信息化部已经成立了一

 分布式账本中的生命科学

分布式账本中的生命科学

生物科学是医学领域涉及遗传研究,疾病预防和生活方式治疗(lifestyle treatments)的学科。它已经存在了很长时间,但区块链技术的基础设施应用给该学科提供了重大进步的可能性。 根据Pistoia Alliance进行的2016年6月份高级制药和生命科学领袖调查,83%的受访者表示,他们预计在五年内将全面采用区块链技术。 Pistoia Alliance是一个全球性的非营利组织,致

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑