攻擊Windows PXE 啟動鏡像
你曾經在一次滲透測試中運行過不安全的PXE啟動部署,那麼你就會知道它們可以為許可權升級提供大量的可能性。獲取PXE啟動鏡像的許可權可以為攻擊者提供一個連接已加入域的系統、域憑據和橫向或垂直移動滲透的機會。本博文概述了許多不同的方法來提升特權並從PXE啟動鏡像中檢索密碼。這些技術分為三個部分:後門攻擊、密碼抓取攻擊和後登錄密碼轉儲。許多攻擊將依賴於安裝Windows鏡像文章主題將從「鏡像磁碟」開始。
推薦工具:
·VMware(工作站或Fusion)
·Microsoft Hyper-V
·Kali Linux iso
·Windows鏡像(本文使用Windows 10專業版)
總體概述:
·PXE使用Hyper-V引導Windows鏡像
·安裝Windows鏡像
·後門攻擊
o 在安裝過程中添加本地管理員
o 安裝鏡像磁碟 - 向所有用戶添加批處理文件或可執行文件
o 裝載鏡像磁碟 – 替換sethc.exe或其他輔助功能選項
o 裝載鏡像磁碟 - 使用chntpw工具覆蓋管理員密碼
·密碼抓取攻擊
o 在安裝或登錄過程中抓取VM內存文件以獲取密碼
o 安裝鏡像磁碟 - 查看本地Unattend / Sysprep文件
o 安裝鏡像磁碟 - 複製SAM文件並使用管理員帳戶的HASH進行PTH攻擊
o 安裝鏡像磁碟 - 複製SAM文件並破解管理員帳戶
·登錄密碼轉儲
緩解和預防
參考
PXE使用Hyper-V引導Windows鏡像
通過新建虛擬機嚮導創建新的虛擬機。遵循指導的步驟,並確保選擇「從基於網路的安裝伺服器安裝操作系統」選項。嚮導完成後檢查設置菜單,並確保「傳統網路適配器」位於啟動順序的第一個位置。
保存並啟動虛擬機。PXE網路安裝應該啟動並開始Microsoft Deployment Toolkit部署嚮導。
運行嚮導並開始目標鏡像的安裝任務序列。這可能需要一段時間。
安裝Windows鏡像
一旦完成設置(包括Windows操作系統設置),你應該有一個工作的Windows VM。確保安全關閉虛擬機並下載Kali Linux iso。轉到設置菜單並選擇DVD驅動器鏡像文件的位置。
現在,更改引導順序,使「CD」位於BIOS啟動順序的頂部。
保存設置並啟動虛擬機。選擇啟動進入「Live(取證模式)」。
一旦啟動Kali,請使用以下示例命令裝入Windows分區。確保將分區改為本文示例所使用的/dev/sda2分區。
fdisk -l
mkdir /mnt/ntfs
mount -t ntfs-3g /dev/sda2 /mnt/ntfs
後門攻擊
1.在安裝過程中添加本地管理員。
這可能是獲得對系統鏡像的高級訪問的最簡單方式。在經過Windows PE啟動過程之後,返回到VM的設置菜單。將「IDE」設置為BIOS部分「啟動順序」中的頂部。
保存設置,啟動虛擬機,然後連接到控制台。虛擬機應該進入最初的Windows安裝過程。按Shift + F10將彈出一個系統控制台。請注意,這與在Windows PE部署階段按F8不同。輸入以下命令以添加你的本地管理員用戶。
net user netspi Password123! /add
net localgroup administrators /add netspi
檢查管理員組成員資格。
現在用戶已創建並添加到管理員組,請等待虛擬機完成設置並登錄。
登錄後,你將擁有本地管理員許可權!我們可以執行更進一步的操作,通過PsExec獲得本地系統。
PsExec.exe -i -s cmd.exe
本地系統的cmd可用於檢查計算機帳戶是否具有域用戶許可權。使用諸如BloodHound / SharpHound之類的工具來映射域,這可能是一個很好的起點。
2.安裝鏡像磁碟 - 將批處理或可執行文件添加到所有用戶。
位於C:Users%用戶名%AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup中的快捷方式或文件將在用戶登錄啟動時運行。將目錄更改為管理員的啟動目錄並使用以下命令創建批處理文件。
@echo off
net user "startup" "password" /add
net localgroup "Administrators" /add "startup"
批處理文件將在管理員用戶登錄時運行。如果此攻擊與攻擊情形#4結合使用,則管理員用戶可以使用空密碼登錄。檢查以確認啟動用戶是在登錄後創建並添加到管理員組。
3.安裝鏡像磁碟 – 替換sethc.exe或其他輔助功能選項。
替換sethc.exe(粘滯鍵)是一種經典的特權升級技術。sethc.exe位於%windir%System32sethc.exe中。下面的命令複製cmd.exe並將其重命名為sethc.exe。
cp cmd.exe sethc.exe
如果啟用粘滯鍵,當連續單擊五次「Shift」時,將彈出一個本地系統的cmd。
4.安裝鏡像磁碟 - 使用chntpw工具覆蓋管理員密碼。
chntpw工具可以清除Windows用戶的密碼。SAM和SYSTEM文件位於%windir%System32config目錄中。
netspi用戶的密碼被清除,並且可以在不輸入密碼的情況下登錄帳戶。
密碼抓取攻擊
5.在安裝或登錄時抓取VM內存文件以獲取密碼。
我的同事詹姆斯·休斯頓應對這次攻擊的過程值得說出來。這裡的一般想法是使用快照或暫停功能來捕獲虛擬機內存中的密碼。這可以在實際的PXE引導部署過程,安裝或登錄步驟中完成。此示例將在MDT部署過程中檢索部署服務帳戶的密碼。
部署用戶用於在部署任務序列的「計算機詳細信息」步驟中將計算機加入域。
此時,暫停或拍攝虛擬機當前狀態的快照。在Hyper-V中,使用檢查點功能拍攝快照。在「設置」中的「檢查點」菜單下,確保選擇了「標準檢查點」。這將確保應用程序和系統內存被捕獲。快照位置也在此菜單中設置。
瀏覽到快照文件位置並查找你的虛擬機管理程序的相應文件。
· VMWare:.vmem,.vmsn(快照內存文件),.vmss(暫停內存文件)
· Hyper-V:.BIN,.VSV,.VMRS(虛擬機運行時文件)
由於此示例使用Hyper-V,請複製.VMRS文件以搜索密碼。我使用Kali Linux以及字元串和grep來查找服務帳戶和密碼。如果在Windows部署嚮導過程中未顯示用戶名或密碼,搜索「用戶」或「密碼」等關鍵字是一個很好的開始。
strings PXEtest.VMRS | grep -C 4 "UserID=deployment"
6.安裝鏡像磁碟 - 查看本地Unattend/Sysprep文件。
Unattend和Sysprep文件可以包含用於部署和設置的密碼。以下位置包含與Sysprep相關的文件。
· %WINDIR%Panther
· %WINDIR%PantherUnattend
· %WINDIR%SYSTEM32Sysprep
在這種情況下,unattend.xml文件已被清理,但始終值得檢查這些位置是否有密碼和敏感信息。
7.安裝鏡像磁碟 - 複製SAM文件,並使用管理員帳戶的HASH執行PTH攻擊
SAM和SYSTEM文件位於%windir%System32config目錄中。
這個文件可以拷貝到你的本地機器上,Mimikatz可以用來提取哈希值。管理員散列可通過使用CrackMapExec或Invoke-TheHash的散列攻擊。
crackmapexec smb targetip -u username -H LMHASH:NTHASH
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -
Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
如果域共享本地管理員密碼,這可能是提升許可權的非常有效的技術。
8.安裝鏡像磁碟 - 複製SAM文件並破解管理員帳戶
像上面一樣,一旦將SAM和SYSTEM文件複製到本地計算機上,管理員帳戶可以使用Hashcat或John the Ripper破解。下面是一個Hashcat示例破解命令。訪問hashcat wiki以獲取設置和基本用法。
hashcat64.bin -m 1000 targethashes.txt wordlist.txt -r crackrule.rule -o cleartextpw.txt --outfile-format 5 --potfile-disable --loopback -w 3
登錄密碼轉儲
一旦上述技術可以訪問PXE引導鏡像,我們可以轉儲密碼。Mimikatz是導出密碼的好工具。
sekurlsa :: logonpasswords會從LSASS內存轉儲密碼。
lsadump :: secrets轉儲LSA密文。
vault :: cred從證書管理器轉儲保存的憑證。但是,如果將保存的憑證設置為域密碼類型,則此命令將不會成功檢索憑證。該Mimikatz維基對如何提取這些憑據一個很好的解釋。
緩解和預防
使用不需要任何身份驗證或授權的PXE進行相關的部署過程固然是有安全風險的,特別是在用戶的LAN上。強烈建議PXE安裝需要憑據才能開始安裝過程。例如,只需在System Center Configuration Manager中檢查「計算機使用PXE時需要密碼」,就可以在分發伺服器上配置此功能。
上述攻擊的主要內容中的一點是,包含敏感數據的應用程序或軟體不應包含在任何鏡像中。另外,共享本地管理員密碼或服務帳戶密碼不應在鏡像上(或域中的任何位置)使用。鏡像可能會受到影響,這應該有助於降低域中計算機的風險。最後,PXE部署應該只能在隔離網路上使用。查看Microsoft提供的這些最佳實踐,以獲取有關保護PXE引導部署的更多信息。
參考
感謝Scott Sutherland(@ _nullbind),Alex Dolney(@ alexdolney)和James Houston的智慧和指導!
https://www.vmware.com/products/personal-desktop-virtualization.html
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/
https://www.kali.org/downloads/
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
https://github.com/BloodHoundAD/BloodHound
https://github.com/BloodHoundAD/SharpHound
https://github.com/byt3bl33d3r/CrackMapExec
https://github.com/Kevin-Robertson/Invoke-TheHash
https://hashcat.net/wiki/
https://github.com/gentilkiwi/mimikatz
https://github.com/gentilkiwi/mimikatz/wiki/howto-~-credential-manager-saved-credentials
https://docs.microsoft.com/en-us/sccm/osd/plan-design/security-and-privacy-for-operating-system-deployment
※鍵盤記錄器用法新姿勢:挖礦
※黎巴嫩國家APT組織「黑山貓Dark Caracal」浮出水面
TAG:嘶吼RoarTalk |