BitErrant 攻击
BitErrant 攻击是一个有趣的漏洞,它证明了当 SHA1 碰撞攻击成为可能时BitTorrent 协议可能会出错。SHA1碰撞攻击导致下载的文件数据块(chunk)可能被完全不同的数据块替换,损坏下载的文件或者触发后门功能。当受害者使用 BitTorrent 协议下载可执行文件时,攻击者可以通过提供更改后的数据块,来改变可执行文件的执行路径。谢谢 Google 和 CWI 的好伙伴,使 SHA1碰撞攻击成为现实!
概念验证
这里有两个具有不同功能的 EXE 文件(恶意文件有一个 meterpreter 将会监听所有网络接口),但是产生相同的 .torrent 文件。
biterrant_poc.zip (点击查看原文下载)
密码:biterrant.io
SHA1: eed49a31e0a605464b41df46fbca189dcc620fc5 (你知道,因为什么原因它会出错)
此外,这里有一个复杂的(LOL)框架,关于如何生成这样的可执行文件。
事实证明大多数杀毒软件都是胡说八道:
正常文件在virustotal
恶意文件在virustotal
BitTorrent 工作原理
通过 BitTorrent 分发文件的第一步是:从原始文件(DATA)生成一个".torrent"文件。它是通过下面的步骤来实现的,首先将原始文件分割成固定大小的数据块,然后对每一块计算其 SHA1 哈希值。随后这些哈希值被连接在一起,并存储在 torrent 文件的 "pieces" 字典键值下。
当有人试图使用 BitTorrent 下载这个 DATA 文件时,首先"DATA.torrent"文件需要被下载并解析。根据 DATA.torrent 文件存储的信息,BT客户端搜索peers并下载原始文件(DATA)的数据块。为了确保 peers 不会发送恶意数据,客户端会使用存储在DATA.torrent文件中的哈希数据验证每一个下载的数据块。如果torrent文件中的哈希值与下载的数据块 SHA1 哈希值不同,这个有问题的数据块就被丢弃。
恶意文件的意图
攻击者可以创建一个可执行文件,这个文件在执行时看起来是无害的,但是会根据 SHATTER 区域内的数据更改其执行路径。当然,当用反病毒软件进行检查时,这个文件看起来是没有问题的,因为恶意代码被隐藏在一个加密的二进制对象(blob)中,并且永远也不会被执行。是这样吗?
好吧,不完全是这样。如果攻击者有两个大小相同的二进制数据块,具有相同的 SHA1 哈希值并考虑一些限制条件,生成两个数据不同的可执行文件但是产生相同的 .torrent 文件是可能的!
如果之前提到的限制条件都已经满足,那么这两个可执行文件现在有一个可以互换的数据块。攻击者可以替换这个数据块来触发代码中的恶意功能。
上图,根据哪一个数据块被 BitTorrent 协议获取来决定 shellcode 是否被执行。
原理是,当使用不正确的 SHATTER 数据,解密会产生垃圾数据。例如,shatter-2.pdf 碰撞数据被用来加密,shatter-1.pdf 数据被用来分发。在下载过程中,攻击者开始把使用 shatter-2.pdf 数据的文件做种,从而有效的替换那个数据块,这样对于那些非常不幸从攻击者下载了特定数据块的用户,将会触发 shellcode 的解密与执行。
FAQ
Q1:这个事情严重吗?
不严重,至少现在不严重。当这种方式被野蛮使用时,我可能会评估这个报告。
Q2:我如何保护自己?
始终交叉检查下载文件的 MD4 MD5 SHA1 SHA256 哈希值。 祝你找到发布哈希值的 torrent 网站。
这里还有一个选择,当生成 torrent 文件时,在生成的 torrent 文件中包含完整数据文件的 MD5 值。大多数时候它没有被使用,甚至不确定是不是所有 torrent客户端会检查它。
原文链接:https://biterrant.io/
本文由看雪翻译小组 FlamePeak 编译
热 门 阅 读:
利用汽车内置传感器数据 鉴别汽车驾驶员(上)@老司机
利用汽车内置传感器数据 鉴别汽车驾驶员(下)@老司机
【技术探索】EPS文件利用如何逃逸 EMET
....
更多优秀文章点击左下角“关注原文”查看!
看雪论坛:http://bbs.pediy.com/
微信公众号 ID:ikanxue
微博:看雪安全
投稿、合作:www.kanxue.com