完美的免殺方法
到目前為止,要實現惡意軟件的“FUD”,加密惡意代碼被認為是個不錯的選擇,不過有幾點要注意:
1.惡意程序在解密時,應當也進行代碼混淆
2.當惡意文件在內存中運行解密代碼時,我們必須要保證在不重定位絕對地址的情況下進行
3.惡意軟件是否在沙箱環境中運行,如果是,則立馬停止惡意文件的解密
4.應當只對 PE 文件中的 shellcode 或 只有二進制文件的.text部分進行加密,而不是對整個 PE 文件進行,以便把信息熵和降到最低
以下是惡意軟件流程圖。
4.png
我們的“殺軟檢測”功能將檢測惡意軟件是否正在沙箱中被動態分析,如果功能檢測到AV掃描器的任何跡象,則它將再次調用主函數或者僅當 “AV Detect” 函數來用。如果沒有發現AV掃描器的任何跡象,它會調用 “解密Shellcode” 的功能。
以下就是 meterpreter 反匯編 shellcode 的原始格式。
5.png
為了讓信息熵保持適當的大小,我們需要將shellcode注入方法改為使用多字節鍵的xor加密,xor加密標準不同于RC4或blowfish。因為惡意軟件根本就用不到像RC4或blowfish這樣的強加密,所以殺軟產品也不會企圖去解密信息熵中的shellcode,因此我們在編寫惡意軟件時,只需保證shellcode具備不可讀和不可檢測的靜態字符串就足夠了,如果使用xor,那解密過程更快,加密庫中的代碼量也會少很多。
同一個 meterpreter 代碼使用 XOR 加密的前后對比
6.png