大约在9个多月以前(2011-10-11 05:33:00),本人曾写过一篇文章:
使用 MD5 碰撞算法伪装木马,躲过杀毒软件查杀,加入360白名单
当时这篇文章曾引爆了互联网,一度成为人们茶余饭后热议的对象,直到现在仍津津乐道……
这篇文章中的内容,彻底颠覆了传统的免杀思路,刷新了免杀界的历史,掀起了一场免杀革命,犹如一块美丽又神秘的新大陆一样,引诱无数个拿破仑都想踏入这块宝地里探索一番,又点燃了多少盏正苦于免杀的熊孩子的希望之灯……
咳咳,扯远了,以上文字纯属放屁,如有雷到,后果自负……
写本文的目的,只是为了再解释一下 MD5 碰撞,拨开它神秘的面纱,另一个目的呢,嗯,就是打假!哦呵呵呵,打假哟,亲~
正文开始……
自从写了这篇文章之后,互联网上就热议不断,议论的内容则更侧重于免杀方面……
关于碰撞的方案,或者叫“免杀的方法”吧,大概有以下两种:
方案一,假设有程序 A:
可以通过 A 生成 B、C 两个 MD5 一样,但实际数据不一样的程序(文件尾部多了碰撞出来的随机数据,不影响程序功能),这两个程序功能也是一样的。
A、B、C 三个程序 md5 值的关系是这样的:
md5(A) <> md5(B)
md5(A) <> md5(C)
md5(B) = md5(C)
此方法即我文章中所讲的内容,也给了具体方法、工具及演示程序,具体去看文章,这里不废话了……
再来看看网上热传、热衷的另一种所谓的“碰撞免杀方法”:
方案二,假设有程序 A、B:
A、B 功能及 MD5 值都不一样(很多人梦想:A = 系统文件,B = 某个木马,然后XOXX……)。
如果想通过 A、B 生成 C,并且要求 C 和 A 的 MD5 值一样,功能和 B 的一样(简单地说就是把 B 的 MD5 值“改成”和 A 一样,把新生成的文件叫 C;再简单地说就是指定 MD5 值碰撞;指定 MD5 进行碰撞……)。
那么,你知道要碰撞出指定 MD5 值的文件,并且是可以执行的,那需要多大的计算量?
以目前计算机的计算能力绝无可能做到,如果你拥有数台的量子计算机的话,倒是可以试试……
即使你很幸运的碰撞出来 MD5 和 A 一致的文件,还要它是PE格式的可执行文件,而且还要能成功运行(程序功能无损坏)……
这种几率恐怕和连续中 500w 次 500w 大奖没有区别……
为什么?
因为 MD5 碰撞算法是使用纯二进制值进行数学计算的,才不管你是什么格式的数据,所以这种方式碰撞出来的文件基本都是“损坏”的……
有很多人梦想着使用此种方法,将木马文件的 MD5 值碰撞成和系统文件一致,最终达到所谓的免杀效果……
所以,孩子们,如果你们梦想着将某个木马文件进行所谓的 MD5 碰撞后,使其和某个系统文件的 MD5 值一样,达到免杀效果……
我很遗憾的告诉你,人类目前无法做到……
所以,如果你碰到网上有出售所谓的碰撞机、指定 MD5 碰撞工具等类似软件(据我所知目前网上有很多此类垃圾软件,作者出来招摇撞骗,并且要价不菲),我可以很明确的告诉你,该工具作者除了装逼就是骗子,没有第三种可能……
更遗憾地告诉你:
现在的杀毒软件,根本不是依靠单一 Hash 值进行文件唯一性判断的!
而是同时使用多种消息摘要算法产生多个 Hash 值进行对比的,例如:sha1 + md5
(国内某个流氓公司的数字杀毒软件曾用过单一 Hash 进行文件唯一性校验,估计本站公布那篇文章之后,某数字杀软如果不是傻子的话应该早都改了……)
如果想要这些算法都可以碰撞(算法存在缺陷、漏洞,例如我国王小云教授在2005年发现的MD5碰撞算法),并且都可以碰撞成和某个文件一致,那是绝无可能的!
╮(╯_╰)╭
既然都看到这里了,我很高兴您耐心看文本篇破文,那么,作为回报,我就告诉您一个小秘密吧……
使用“方案一”,也就是本人曾写的那篇文章中的内容、方法、工具,是完全可以免杀 360 的哟~(至少之前可以)
具体方法很简单,为什么一定要碰撞成和系统文件一样的呢?其他文件不行么?其他白名单文件呢?或者360认证过的文件呢?
例如某个碰撞后的“看似正常”的程序呢?先提交上去,让某杀软认证,然后还有当时碰撞出来的另外一个附属产物……
点到为止……
哦,呵呵呵~~~
不知此文一出,有多少打着“指定 MD5 值碰撞免杀”幌子进行招摇撞骗的垃圾软件作者,会吐血而亡呢?
2012-07-15 15:45:38 补充:
我发现仍有很多同学没搞清楚“两个功能不一样,但 MD5 值一样的程序”究竟是如何碰撞出来的。
关于这个话题,我单独写了一篇文章,具体请参阅:
如何碰撞两个功能不一样,但 MD5 值一样的程序的方法 + 源码公布
留言评论(旧系统):