大约在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 值一样的程序的方法 + 源码公布

留言评论(旧系统):

【匿名者】 @ 2012-07-14 22:14:04

赞一个....

本站回复:

↖(^ω^)↗

【匿名者】 @ 2012-07-15 07:16:59

吐槽无力..

本站回复:

如果吐,请深吐……

75 2658683 @ 2012-11-05 11:22:12

写一堆没看明白

本站回复:

很多人看完都和你一样,没整明白,这个确实有点绕口,留着慢慢消化消化就好了……

md5碰撞专家 @ 2012-11-09 20:35:35

大哥你公布的这个技术一点意义也没有,可以介绍一下,md5前缀碰撞技术吗?2个不同的文件,同时写入碰撞数据,然后让2个不同的文件有同样的md5值?你会吗?

本站回复:

没有此类所谓的“技术”,仔细看完文章再问此类狗血问题……(我知道你想干什么)

佚名 @ 2013-01-16 20:07:05

我想不明白,是不是这样,A程序,生成两个相同MD5程序。然后B程序生成两个相同程序,把B里面两个相同的MD5程序最后面的那段数据,覆盖到A程序两个相同的MD5程序,他们MD5就一样了。我试了,好像不行,求解。

本站回复:

首先,毫不忌讳的说,你的方法完全错误!!!错的一塌糊涂!!!! 你这“方法”完全是没看文章,并且完全不了解“MD5碰撞”相关的知识,自以为是的瞎捣鼓,若能成功就是奇迹了…… 你所需要的答案已经在文章中出现了很多次了,请阅读文章,以及相关的内容。

小龙 @ 2014-08-21 20:41:16

(⊙v⊙)嗯,懂了些呢...收藏此文

本站回复:

good good study, day day up~

tyzz @ 2015-12-05 17:23:53

历害!不过我学习倒不是拿来做什么坏事,只是想修改删除一些ROM中自带的APP,我不知道魅族的ROM包刷机是不是要验证MD5的,反正他们的ROM包我删了自带APP或者我添加了自用的APP后就提示刷机包损坏了,试了好几次都不行,所以想是不是修改它的MD5成原包一样的是不是就能刷进去了呢,不知道大神玩过魅族的ROM包没有,还请指教!

本站回复:

-_-!!!