SHA1碰撞衍生出的BitErrant攻击

SHA1碰撞衍生出的BitErrant攻击

BitErrant是一种非常有意思的攻击技术,它给我们展示了当SHA1碰撞成为现实之后,BitTorrent协议会出现怎样的错误。SHA1碰撞不仅会导致已下载文件中的数据块被替换成完全不同的内容,而且还有可能使下载文件崩溃,有时甚至还能触发后门功能。当目标用户使用BitTorrent协议来下载可执行文件时,攻击者将可以通过修改数据块来改变可执行文件的执行路径。这一切多亏了Google和CWI的安全研究专家,如果没有SHAttered攻击的话,SHA1碰撞也无法成为了现实。

PoC

我们在这里提供了两个功能不同的EXE文件(即一个正常文件和一个恶意文件,恶意文件中包含一个meterpreter,它可以监听所有的接口),并且全部压缩在了一个压缩包内。【种子文件biterrant_poc.zip

密码:biterrant.io

SHA1: eed49a31e0a605464b41df46fbca189dcc620fc5

除此之外,我们还给大家提供了一个GitHub库【传送门】来告诉大家如何去生成这样的可执行文件。

更新(2017.03.06)

当前反病毒产品的检测状态:

Virustotal:正常文件

Virustotal:恶意文件

BitTorrent的工作机制

SHA1碰撞衍生出的BitErrant攻击

通过BitTorrent来发布文件的第一步就是利用原始文件(DATA。)来生成一个“.torrent”文件。在这一步中,首先要将文件切分成固定大小的数据块,然后计算每一个数据块的SHA1哈希。计算完所有的数据块之后,再将所有的哈希字节连接起来并存储在种子文件的“pieces”字典密钥中。

SHA1碰撞衍生出的BitErrant攻击

当用户尝试通过BitTorrent下载数据文件时,首先要下载并解析“DATA.torrent”文件。客户端需要根据DATA.torrent文件中存储的信息来搜索peer并下载原始文件(DATA)的数据块。为了确保恶意peer无法发送恶意数据,客户端需要根据DATA.torrent文件中存储的哈希数据来验证每一个下载下来的区块。如果种子文件中的哈希数据与已下载数据块中的SHA1哈希无法匹配的话,那么无效的数据块将会被丢弃。

恶意意图

SHA1碰撞衍生出的BitErrant攻击

攻击者可以创建一个在执行过程中看起来无害的可执行文件,但是这个文件可以根据SHATTER域中的数据来修改其执行路径。当然了,反病毒软件在检测这种文件时是不会报毒的,因为恶意文件已经将恶意代码隐藏在一个加密数据块之内了,而这些恶意代码是不会被执行的,但真的是这样吗?

SHA1碰撞衍生出的BitErrant攻击

如果攻击者有两个SHA1哈希相同的数据块,那么攻击者就有可能用不同的数据生成两个不同的可执行文件并放在同一个的.torrent文件中(需要考虑一些约束条件)。

SHA1碰撞衍生出的BitErrant攻击

如果之前所提到的那些约束条件都能够满足,那么现在这两个不同的可执行文件中就会有一个数据块的数据是可以相互替换的。还记得之前存储在加密数据块中的恶意代码么?此时,攻击者就可以将这个数据块中的数据替换成能够触发那些恶意代码的数据了。

SHA1碰撞衍生出的BitErrant攻击

比如说,shatter-2.pdf中的数据是用来触发恶意代码的,shatter-1.pdf的数据是用来分发的。在下载的过程中,攻击者可以用shatter-2.pdf来做种,然后替换替换其中的一个数据块并在目标客户端中解密并执行shellcode。

常见问题解答 这个问题很严重吗?

目前来说还不是很严重。不过在这项技术得到广泛应用之后,我可能还会更正这个问题的答案。

如何保护自己?

当你下载完成了一个文件之后,一定要验证这个文件的MD5或SHA256哈希,一般的网站在提供种子文件时都会提供相应的验证值。还有一种方法,就是在生成种子文件时将完整数据文件的MD5值一起包含在里面,但是这种方法一般都不会采用,因为并非所有的Torrent客户端都支持这种形式的文件。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/838c3fd5fd21d337ffb36c0056f4bb4e.html