小红伞和NOD32源码免杀积累经验总结
针对小红伞和NOD32基于源码的免杀经验总结
1.小红伞:AntiVir PersonalEdition是由德国的安全软件公司H+BEDV开发的针对个人用户的产品。Classi小红伞Classic版是AntiVir的个人免费版(以下简称小红伞Classic版);Premium是付费版(以下简称小红伞Premium版),官方目前还没有发布中文版(以前曾说要放中文版,但中国盗版较多就没放。我们该好好反省了)另外,有人曾试着汉化,但由于红伞有内核保护,升级了又成英文版了,所以放弃了。 小红伞对于家庭用户分为小红伞Classic版和小红伞Premium版。一个是免费版,一个是收费版。两者在杀毒效果上完全一致,没有任何的区别。
2.NOD32 拥有一个高度优化的引擎,担任统一的安全保护,防止病毒、蠕虫、间谍程序的恶意攻击,并且在不断的更新。Eset NOD32拥有先进的ThreatSense技术,可有效侦测未知的病毒。NOD32的ThreatSense技术,对于未知病毒的侦测率高达70%90%。NOD32 的ThreatSense(R)引擎同时支持三种启发杀毒,基因码,虚拟机,以及代码分析这三种功能。基因码类似于我们常说的行为特征,NOD32对于同一种(类)病毒会收集它们的共同的行为特征,这样,即使这个病毒有10万个变种,NOD32只需要快速的核对一条基因码,而且这样的基因码对于未来的所有变种都会有效。而虚拟机与代码分析集成在同一引擎之中,使种NOD32可以非常完美的对付让人头痛的加壳变种以及一些隐藏技术。不同与传统的杀毒软件,NOD32将众多优秀的功能集中在单一引擎之内,这不仅造就了NOD32对付未知病毒的超高能力,更使得整个杀毒引擎的性能高于所有竞争对手数倍。
具体的做法:
小红伞和NOD32的杀毒引擎是非常厉害的,尤其是他们的启发式杀毒,简直快把病毒木马逼到了绝路。由于需要,这两天我和CG(一个高手)对一个远控软件进行了小红伞和NOD32的免杀。一开始很自然的拿出CCL对PE文件的病毒特征码进行定位,但是却定位到了导入表和PE文件头上(这两款杀毒软件的确太狠了)。没有办法,常规的修改指令的方法是行不通了。GOOGLE了一下,发现网上有利用重构导入表的方法来做小红伞和NOD32的免杀。但这需要对PE文件有很深的了解,还要有足够的时间。呵呵,恰好这两点我都不具备。但幸运的是——咱有源代码。
我想有源代码得情况下进行杀软的免杀是一件很easy的事情,但其实不是这么简单。我和CG的做法是对函数进行注释屏蔽,然后交给杀软查杀,如果不查杀被注释的函数被杀软定位了。首先,进入入口函数逐个屏蔽,找到问题函数,再进入到函数中去把其子函数这个屏蔽,这样递归屏蔽下去。(在这个过程中,我喜欢深度优先进行函数屏蔽,而CG喜欢广度优先,其实两种方法效率都差不多。都纯属示体力活)。最终,我们可以找到杀毒软件盯上的API函数(这些函数往往是一些敏感函数,如CreateRemoteThread,VirtualAllocEx这样的函数)。
接下来,就是对API函数进行替换。替换有四种方法:
1.GetProcAddress的方法,即动态导入函数地址的方法。
2.同功能函数替换。有许多函数功能是相似的,比如GetSystemDirectory函数可以用DoEnvironmentSubst来进行替换,strcpy可以用memcpy替换。
3.用Shellcode实现GetProcAddress。
小红伞和NOD32的启发式杀毒有时候连动态导入函数这种方法都可以进行定位。只要用GetProcAddress来获取那个API的地址就被杀,而且这个时候又没有可以替换的其他函数,所以要用shellcode的方法来实现GetProcAddress
4.内联函数替换。
一些较简单的函数如果被杀,就可以采用这种方法。
积累的经验总结:
1.在编写远控软件这种程序时,起初设计就应该将敏感的API用动态导入的方法进行获取。这样,就不容易被杀毒软件抓到特征码。
2.动态导入函数地址的时候可以对函数名进行加密。
3.进行函数替换后最好能进行一下测试。全都替换后再进行测试如果遇到程序错误往往很难定位错误点。
上一篇:各位大牛经典入侵经验摘录
下一篇:清理友情链接