免殺技術指的是一種能使病毒木馬免于被殺毒軟件查殺的技術。常見的免殺技術包括:
修改特征碼
所謂特征碼,就是防毒軟件從病毒樣本中提取的不超過64字節且能代表病毒特征的十六進制代碼。主要有單一特征碼、多重特征碼和復合特征碼這三種類型。既然殺毒軟件在最開始時,使用了病毒特征碼概念,那么我們可以通過修改病毒特征碼的方式躲過殺軟掃描。
花指令免殺
花指令免殺。花指令是設計者特意構思的,它最根本的思想就是希望在反匯編時出錯,并為反病毒人員設下陷阱。而如果花指令可以成功保護軟件真正代碼不被輕易反匯編,那么對于反病毒軟件來說,它所檢測的自然也就不是木馬文件中真正的內容了。花指令可能會用到各種指令:例如jmp, call, ret的一些堆棧技巧,位置運算等等。
加殼免殺
軟件加殼其實也可以稱為軟件加密(或軟件壓縮),只是加密(或壓縮)的方式與目的不一樣罷了。殼就是軟件所增加的保護,并不會破壞里面的程序結構,當我們運行這個加殼的程序時,系統首先會運行程序里的殼,然后由殼將加密的程序逐步還原到內存中,最后運行程序。
加殼雖然對于特征碼繞過有非常好的效果,加密殼基本上可以把特征碼全部掩蓋,但是缺點也非常的明顯,因為殼自己也有特征。在某些比較流氓的國產殺軟的檢測方式下,主流的殼如VMP, Themida等,一旦被檢測到加殼直接彈框告訴你這玩意兒有問題,雖然很直接,但是還是挺有效的。有些情況下,有的常見版本的殼會被直接脫掉分析。
內存免殺
內存免殺技術大多數只需要使用“ShellCode加載器”就可以達到很好的免殺效果,內存免殺后門大部分基于“VirtualAlloc”函數申請內存,使用shellcode加載器將shellcode直接加載進內存,避免文件落地就可以繞過文件掃描。
二次編譯
metasploit的msfvenom提供了多種格式的payload和encoder,生成的shellcode也為二次加工提供了方便,但是也被各大廠商盯得死死的。
而shikata_ga_nai是msf中唯一excellent的編碼器,這種多態編碼技術使得每次生成的攻擊載荷文件是不一樣的,編碼和解碼也都是不一樣。還可以利用管道進行多重編碼進行免殺。
目前msfvenom的encoder特征基本都進入了殺軟的漏洞庫,很難實現單一encoder編碼而繞過殺軟,所以對shellcode進行進一步修改編譯成了msf免殺的主流。互聯網上有很多借助于C、C#、python等語言對shellcode進行二次編碼從而達到免殺的效果。
資源修改
有些殺軟會設置有掃描白名單,比如之前把程序圖標替換為360安全衛士圖標就能過360的查殺。
使用ResHacker對文件進行資源操作,找來多個正常軟件,將它們的資源加入到自己軟件,如圖片,版本信息,對話框等。
使用ResHacker替換無用的資源(Version等)。
使用簽名偽造工具,將正常軟件的簽名信息加入到自己軟件中。