后滲透提權輔助工具BeRoot詳解


0x00 工具介紹

前言

BeRoot是一個后期開發工具,用於檢查常見的Windows的配置錯誤,以方便找到提高我們提權的方法。其二進制編譯地址為:

https://github.com/AlessandroZ/BeRoot/releases

它將作為后開發模塊被添加到pupy(Pupy是一個開源,跨平台(Windows,Linux,OSX,Android),多功能RAT遠程管理工具和后開發工具,主要用python編寫)項目中(因此它將在內存中執行,而不會在硬盤中執行)。

需要注意的是,這款工具只能用來檢測,而無法直接利用目標系統中存在的漏洞。但是,如果它發現了錯誤配置,它可以通過模版來利用這些漏洞。模版文件位於templates/service目錄下,如果項目提供的模版文件無法運行,我們也可以根據目標系統的情況手動創建一個模版文件。

工具下載

beRoot.zip】(zip)

源代碼】(zip)

源代碼】(tar.gz)

工具運行:

|==============================================

|                                                                    |

|                    Windows Privilege Escalation                    |

|                                                                    |

|                          ! BANG BANG !                             |

|                                                                    |

|==============================================

usage: beRoot.exe [-h] [-l] [-w] [-c CMD]

Windows Privilege Escalation

optional arguments:

  -h, --help         show this help message and exit

  -l, --list         list all softwares installed (not run by default)

  -w, --write        write output

  -c CMD, --cmd CMD  cmd to execute for the webclient check (default: whoami)

 

 

0x01 工具利用

包含沒有引號的空格路徑:

如以下文件路徑:

C:\Program Files\Some Test\binary.exe

如果路徑中包含空格並且沒有引號,Windows將嘗試按以下順序查找和執行目標程序:

C:\Program.exe

C:\Program Files\Some.exe

C:\Program Files\Some Folder\binary.exe

按照此順序,如果“C:\”文件夾是可寫的,可能會創建一個名為“Program.exe”的惡意可執行二進制文件,如果“binary.exe”擁有高權限,那么我們就可以利用這種機制來提升我們的權限。

注意:BeRoot會對每一條服務路徑、計划任務、以及HKLM條目中的啟動鍵執行這樣的檢測

利用方法:

在利用存在安全缺陷的路徑時,我們應該遵循以下方法:

1.    如果是一個服務,那么我們就創建一個惡意服務(或編譯一個service模版)。

個人理解為:通過該工具檢查到的服務運行的路徑為帶空格且沒有引號的目錄路徑,則可以用其他惡意服務來替換來達到提權。

2.    如果是一個可執行程序,那么我們就可以創建一個惡意的可執行程序

可寫目錄:

如下文件路徑:

C:\Program Files\Some Test\binary.exe

如果“binary.exe”的根目錄是可寫的(“C:\ Program Files \ Some Test”)並以高權限運行,那么我們就可以利用它來實現提權。

利用方法

1.    如果服務不處於運行狀態:用我們的服務模版替換掉合法服務,重啟該服務,並嘗試觸發該服務。

2.    服務處於運行狀態且無法被終止:這是大多數的情況,可以嘗試進行DLL劫持並使用其他的技術來重啟服務

%PATH%上的可寫目錄:

這項技術可在以下Windows版本中使用:

6.0      =>      Windows Vista / Windows Server 2008

6.1      =>      Windows 7 / Windows Server 2008 R2

6.2      =>      Windows 8 / Windows Server 2012

在上述Windows版本中,DLL文件是通過指令代碼進行加載的,Windows會通過下列步驟來嘗試定位相應的代碼:

- 定位代碼所在目錄

- C:\Windows\System32

- C:\Windows\System

- C:\Windows\

- 當前目錄下的代碼已啟動

- 目錄地址將會保存在%PATH%環境變量中

二進制文件啟動的當前目錄

如果%PATH%變量中的目錄路徑是可寫的,那么我們就有可能實現DDL劫持攻擊。那么接下來,我們的目標就是要找出一個能夠加載DLL文件但路徑還不在%PATH%變量中的服務。默認情況下,我們選擇使用“IKEEXT”服務,它可以加載我們的惡意DLL文件-wlbsctrl.dll。

如何利用:創建一個名為“wlbsctrl.dll”(使用DLL模版)的惡意DLL文件,並將其添加至%PATH%變量中的可寫路徑,開啟“IKEEXT”服務,為了在沒有高級權限的情況下開啟IKEEXT服務,我們可以參考法國雜志MISC90中所介紹的方法,方法大致如下:

根據下列信息創建一個文件:

C:\Users\bob\Desktop>typetest.txt

[IKEEXTPOC]

MEDIA=rastapi

Port=VPN2-0

Device=Wan Miniport (IKEv2)

DEVICE=vpn

PhoneNumber=127.0.0.1

使用“rasdial”命令開啟IKEEXT服務,如果鏈接失效,則說明該服務已經處於運行狀態了。

MS16-075漏洞檢查

對於懂法語的用戶,我建議可以參考MISC 90中提供的技術細節。

微軟已經在公告MS16-075的補丁中修復了這個漏洞,但是很多服務器仍然存在這個問題,這里給大家提供一個C++PoC【點我獲取】。大致的實現方法如下:

1.    使用某些方法(使用其UUID)開啟Webclient服務

2.    在本地開啟一個HTTP服務器

3.    找到一個能夠觸發SYSTEM NTLM哈希的服務

4.    啟用該服務的文件追蹤,修改其注冊表鍵值,並讓其指向我們的Web服務器(\\127.0.0.1@port\tracing)

5.    開啟該服務

6.    讓我們的HTTP服務器請求獲取SYSTEM NTLM哈希

7.    使用這個哈希和SMB來執行我們的自定義Payload

8.    清除痕跡(終止服務,清除注冊表鍵等等)

如何利用:在目標主機中,BeRoot可以通過下列命令來執行自定義命令:

beRoot.exe -c “net userZapata LaLuchaSigue /add”

beRoot.exe -c “net localgroupAdministrators Zapata /add”

注冊表鍵AlwaysInstallElevated

通過對AlwaysInstallElevated進行設置,我們可以讓非特權用戶使用高級權限(SYSTEM權限)來運行MicrosoftWindows Installer包文件。為此,我們需要將下面這兩個注冊表鍵值設置為1:

HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated

如何利用:創建一個惡意MSI文件,然后執行。

Unattend安裝文件

很多安裝文件中包含程序的所有配置信息,並且會在程序的安裝過程中對程序進行配置,而有些安裝文件中還包含對本地賬號(例如管理員賬號)的配置信息,我們可以通過下列路徑獲取到這些文件:

C:\Windows\Panther\Unattend.xml

C:\Windows\Panther\Unattended.xml

C:\Windows\Panther\Unattend\Unattended.xml

C:\Windows\Panther\Unattend\Unattend.xml

C:\Windows\System32\Sysprep\unattend.xml

C:\Windows\System32\Sysprep\Panther\unattend.xml

如何利用:打開unattend.xml文件,檢查其中是否含有密碼。文件結構大致如下:

<UserAccounts>

   <LocalAccounts>

       <LocalAccount>

           <Password>

               <Value>RmFrZVBhc3N3MHJk</Value>

               <PlainText>false</PlainText>

           </Password>

           <Description>Local Administrator</Description>

           <DisplayName>Administrator</DisplayName>

           <Group>Administrators</Group>

           <Name>Administrator</Name>

       </LocalAccount>

   </LocalAccounts>

</UserAccounts>

0x03 總結

可檢查以下的內容:

可寫的應用程序路徑

可寫不含引號有空格的路徑

可利用的注冊表鍵值

找到無人值守安裝文件

可檢查到MS16-075漏洞利用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM