完美的免殺方法
到目前為止衰猛,要實(shí)現(xiàn)惡意軟件的“FUD”,加密惡意代碼被認(rèn)為是個(gè)不錯(cuò)的選擇,不過有幾點(diǎn)要注意:
1.惡意程序在解密時(shí)馁痴,應(yīng)當(dāng)也進(jìn)行代碼混淆
2.當(dāng)惡意文件在內(nèi)存中運(yùn)行解密代碼時(shí)错沽,我們必須要保證在不重定位絕對地址的情況下進(jìn)行
3.惡意軟件是否在沙箱環(huán)境中運(yùn)行簿晓,如果是,則立馬停止惡意文件的解密
4.應(yīng)當(dāng)只對 PE 文件中的 shellcode 或 只有二進(jìn)制文件的.text部分進(jìn)行加密千埃,而不是對整個(gè) PE 文件進(jìn)行憔儿,以便把信息熵和降到最低
以下是惡意軟件流程圖。
我們的“殺軟檢測”功能將檢測惡意軟件是否正在沙箱中被動(dòng)態(tài)分析放可,如果功能檢測到AV掃描器的任何跡象谒臼,則它將再次調(diào)用主函數(shù)或者僅當(dāng) “AV Detect” 函數(shù)來用。如果沒有發(fā)現(xiàn)AV掃描器的任何跡象耀里,它會(huì)調(diào)用 “解密Shellcode” 的功能蜈缤。
以下就是 meterpreter 反匯編 shellcode 的原始格式。
為了讓信息熵保持適當(dāng)?shù)拇笮》肟妫覀冃枰獙hellcode注入方法改為使用多字節(jié)鍵的xor加密底哥,xor加密標(biāo)準(zhǔn)不同于RC4或blowfish。因?yàn)閻阂廛浖揪陀貌坏较馬C4或blowfish這樣的強(qiáng)加密房官,所以殺軟產(chǎn)品也不會(huì)企圖去解密信息熵中的shellcode趾徽,因此我們在編寫惡意軟件時(shí),只需保證shellcode具備不可讀和不可檢測的靜態(tài)字符串就足夠了翰守,如果使用xor孵奶,那解密過程更快,加密庫中的代碼量也會(huì)少很多蜡峰。
同一個(gè) meterpreter 代碼使用 XOR 加密的前后對比