Windows服務
1.不安全的服務檔案許可權或路徑
基本原理
Windows服務是一種在後臺執行的計算機程式,它在概念上類似於Unix守護程式。
每個Windows服務都將其可執行檔案的路徑儲存在稱為BINARY_PATH_NAME
的變數中。當啟動服務時,會檢查此變數並執行其下設定的.exe
檔案。
步驟
前提條件:Windows服務必須啟用第3點許可權,並且當前使用者有啟動或停止服務許可權,否則必須等待系統重啟才能執行惡意攻擊載荷。
- 1.檢查目標系統中的所有服務
- 2.列舉服務的所有許可權集
- 3.查詢
SERVICE_ALL_ACCESS
或SERVICE_CHANGE_CONFIG
是否已啟用(這些許可權允許使用者修改服務配置和 bin 路徑) - 4.查詢該服務以檢查該服務是否以更高的許可權執行
- 5.可使用命令或惡意檔案更改服務的 BINARY_PATH_NAME (binpath)
- 6.重新整理或啟動服務並獲得更高許可權shell
實操
使用 PowerUp指令碼查詢錯誤配置,列舉機器服務尋找開啟了 binpath 的服務。
<#返回當前使用者可以寫入服務的路徑或其配置的服務#>
powershell -ep bypass
.\powerup.ps
Get-ModifiableServiceFile
找到了一個名為“daclsvc”的服務,為避免工具誤報,可使用Accesschk工具再次檢查此服務以確認它確實設定了SERVICE_ALL_ACCESS
或SERVICE_CHANGE_CONFIG
許可權。
不難看出,有啟動 (service_start)許可權 、停止許可權,也有權更改服務“daclsvc”的可執行檔案路徑的許可權
進一步檢視一下該服務以何種許可權執行
注意:大多數情況下,Windows會以 SYSTEM 或管理員許可權執行所有服務
利用這個錯誤配置,可以使用sc
或service control
(預設安裝)來更改此服務的可執行檔案路徑
可將其設定為反彈shell的可執行檔案路徑。再次使用sc
查詢以檢查設定的新路徑是否正確
配置無誤後,使用net
(預設安裝)啟動此服務即可獲得 SYSTEM 許可權的shell
服務已執行
2.不安全的服務檔案
基本原理
可執行檔案是包含可以由作業系統執行的機器碼指令構成的檔案,可以是特定於平臺的,也可以是跨平臺
步驟
前提條件:服務的 .exe(二進位制檔案)許可權是可寫的或啟用FILE_ALL_ACCESS
許可權以及啟動/停止服務的許可權
- 1.列舉所有服務以檢查全部原始
.exe
(二進位制檔案)是否可寫 - 2.使用惡意檔案替換或更改原始二進位制檔案
- 3.重新整理或啟動該服務,該服務將執行其
.exe
並以 SYSTEM 許可權執行上面寫入的任何內容
實操
使用 winPEAS 來列舉所有可執行檔案許可權配置錯誤的服務。
在 winpeas 探測結果中,我們可以看到filepermsvc
服務的原始 .exe
為任意使用者設定了AllAccess
許可權。簡單來說就是“系統上的所有使用者都可以對該檔案進行任何操作(r、w、x)”,再次使用accesschk
工具確認,這些自動化工具在加固的系統執行時可能觸發告警
利用錯誤配置,只需修改指令碼,或者在這裡用惡意檔案覆蓋原始的 .exe
最後只需啟動服務即可
注意:即使服務以localSystem
許可權執行,我們也有啟動和停止服務的許可權