小红伞和NOD32基于源码的免杀经验总结
小紅傘和NOD32的殺毒引擎是非常厲害的,尤其是他們的啟發(fā)式殺毒,簡直快把病毒木馬逼到了絕路。由于需要,這兩天我和CG(一個(gè)高手)對一個(gè)遠(yuǎn)控軟件進(jìn)行了小紅傘和NOD32的免殺。一開始很自然的拿出CCL對PE文件的病毒特征碼進(jìn)行定位,但是卻定位到了導(dǎo)入表和PE文件頭上(這兩款殺毒軟件的確太狠了)。沒有辦法,常規(guī)的修改指令的方法是行不通了。GOOGLE了一下,發(fā)現(xiàn)網(wǎng)上有利用重構(gòu)導(dǎo)入表的方法來做小紅傘和NOD32的免殺。但這需要對PE文件有很深的了解,還要有足夠的時(shí)間。呵呵,恰好這兩點(diǎn)我都不具備。但幸運(yùn)的是——咱有源代碼。 ? ?我想有源代碼得情況下進(jìn)行殺軟的免殺是一件很easy的事情,但其實(shí)不是這么簡單。我和CG的做法是對函數(shù)進(jìn)行注釋屏蔽,然后交給殺軟查殺,如果不查殺被注釋的函數(shù)被殺軟定位了。首先,進(jìn)入入口函數(shù)逐個(gè)屏蔽,找到問題函數(shù),再進(jìn)入到函數(shù)中去把其子函數(shù)這個(gè)屏蔽,這樣遞歸屏蔽下去。(在這個(gè)過程中,我喜歡深度優(yōu)先進(jìn)行函數(shù)屏蔽,而CG喜歡廣度優(yōu)先,其實(shí)兩種方法效率都差不多。都純屬示體力活)。
? ? ? ? ?最終,我們可以找到殺毒軟件盯上的API函數(shù)(這些函數(shù)往往是一些敏感函數(shù),如CreateRemoteThread,VirtualAllocEx這樣的函數(shù))。 ??
? ? ? ?接下來,就是對API函數(shù)進(jìn)行替換。替換有四種方法: ??
? ? ? ?1.GetProcAddress的方法,即動(dòng)態(tài)導(dǎo)入函數(shù)地址的方法。 ?
? ? ? ?2.同功能函數(shù)替換。有許多函數(shù)功能是相似的,比如GetSystemDirectory函數(shù)可以用DoEnvironmentSubst來進(jìn)行替換,strcpy可以用memcpy替換。 ??
? ? ? ?3.用Shellcode實(shí)現(xiàn)GetProcAddress。 ? 小紅傘和NOD32的啟發(fā)式殺毒有時(shí)候連動(dòng)態(tài)導(dǎo)入函數(shù)這種方法都可以進(jìn)行定位。只要用GetProcAddress來獲取那個(gè)API的地址就被殺,而且這個(gè)時(shí)候又沒有可以替換的其他函數(shù),所以要用shellcode的方法來實(shí)現(xiàn)GetProcAddress ??
? ? ?4.內(nèi)聯(lián)函數(shù)替換。 ? 一些較簡單的函數(shù)如果被殺,就可以采用這種方法。 ? ??
? ? ? ?積累的經(jīng)驗(yàn)總結(jié): ??
? ? ? 1.在編寫遠(yuǎn)控軟件這種程序時(shí),起初設(shè)計(jì)就應(yīng)該將敏感的API用動(dòng)態(tài)導(dǎo)入的方法進(jìn)行獲取。這樣,就不容易被殺毒軟件抓到特征碼。 ??
? ? ? 2.動(dòng)態(tài)導(dǎo)入函數(shù)地址的時(shí)候可以對函數(shù)名進(jìn)行加密。 ? ?
? ? ? 3.進(jìn)行函數(shù)替換后最好能進(jìn)行一下測試。全都替換后再進(jìn)行測試如果遇到程序錯(cuò)誤往往很難定位錯(cuò)誤點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的小红伞和NOD32基于源码的免杀经验总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从内存中加载并运行exe(两种方法)
- 下一篇: 源码免杀-过启发式的思路