回复 7F 流星陨落 的帖子
分析的都是同一个病毒,哪能不“大同小异”?
你不要goole行为分析的,google反汇编的不就行了。
我替你百度了一下,找到这篇
http://bbs.duba.net/viewthread.php?tid=21890728&extra=&page=1锈剑没有很详细地注释,但是也算是反汇编的了。
其中提到的我的文章,即病毒如何向安全软件进程窗口发垃圾消息的,可以看
http://hi.baidu.com/yicong2007/blog/item/ac9205389f02daf6b311c770.html锈剑没有提到的,一个是怎么感染可执行文件和感染网页,另一个是驱动是怎么还原SSDT的。
感染可执行文件,不外乎就是用FindFileFirst和FindFileNext遍历文件(避开某些文件夹),判断后缀名,是可执行文件,就以捆绑方式感染之。
需要注意的细节是,在捆绑的过程中,对中间的原文件部分,也进行了一定的处理。如果没有找出这个处理的细节,就没有办法完全修复文件。
这个处理的细节,我之前也提到过,见
http://bbs.ikaka.com/showtopic-8407431.aspx第10楼
驱动做的事情,原理我也提到过,见
http://bbs.ikaka.com/showtopic-8418945.aspx,后来那作者似乎学乖了一点,那个“拿来主义”的马脚好像被去掉了。
至于驱动与Ring3部分交互还原SSDT部分的相应反汇编结果,就不用提供了吧,源代码网上到处飞。比如MJ之前的那个利用MS08-025的POC,进Ring0的原理是利用MS08-025,而所做的还原SSDT的操作,得到原始SSDT的方法,也就是跟磁碟机一样的。
除了锈剑的帖子之外,以上提到的我以前说的内容,基本都是就磁碟机中某个比较引人注意的特性,进行具体细节上的分析。
至于磁碟机其他部分的代码,基本都是代码的堆积,并没有什么很新的特性。因此,要全部逆向根本就是体力活,耗时又得不到新东西,因此我不主张特意为了追求全面去一次全部逆出来,不能为了逆向而逆向。
如果你想知道怎么找到它完整的行为,我可以告诉你一些线索:
磁碟机,作为一个用VC写的,基于对话框类的MFC程序,依照此类程序的一般作法,从对话框基本类CDialog中派生自己的对话框类。
磁碟机的病毒功能代码,位于对话框窗口类的OnInitDialog方法中。
在该方法中,它除调用父类的方法CDialog::OnInitDialog进行对话框的初始化外,干的其他事情,就是病毒功能。
IDA中通过找对CDialog::OnInitDialog的调用,可以比较容易地定位磁碟机的OnInitDialog方法。
OD中用动态调试的方法定位OnInitDialog方法函数的位置的方法,可以参考
http://bbs.pediy.com/showthread.php?t=65322具体到你这个样本,脱了UPX壳之后,用IDA找对CDialog::OnInitDialog的调用很容易找到OnInitDialog方法函数,位置在内存偏移0x3E66处开始。
再在OD里切换到这个位置,F2下个断点,F9运行断下,F2再取消断点,然后你就可以开始动态调试,看看这个病毒在做什么了。