Windows服務是一種在後臺執行的計算機程式,它在概念上類似於Unix守護行程。
每個Windows服務都將其可執行檔案的路徑儲存在稱為BINARY_PATH_NAME
的變數中。當啟動服務時,會檢查此變數並執行其下設定的.exe
檔案。
前提條件:Windows服務必須啟用第3點許可權,並且當前使用者有啟動或停止服務許可權,否則必須等待系統重啟才能執行惡意攻擊載荷。
SERVICE_ALL_ACCESS
或SERVICE_CHANGE_CONFIG
是否已啟用(這些許可權允許使用者修改服務設定和 bin 路徑)使用 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
服務已執行
可執行檔案是包含可以由作業系統執行的機器碼指令構成的檔案,可以是特定於平臺的,也可以是跨平臺
前提條件:服務的 .exe(二進位制檔案)許可權是可寫的或啟用FILE_ALL_ACCESS
許可權以及啟動/停止服務的許可權
.exe
(二進位制檔案)是否可寫.exe
並以 SYSTEM 許可權執行上面寫入的任何內容使用 winPEAS 來列舉所有可執行檔案許可權設定錯誤的服務。
在 winpeas 探測結果中,我們可以看到filepermsvc
服務的原始 .exe
為任意使用者設定了AllAccess
許可權。簡單來說就是「系統上的所有使用者都可以對該檔案進行任何操作(r、w、x)」,再次使用accesschk
工具確認,這些自動化工具在加固的系統執行時可能觸發告警
利用錯誤設定,只需修改指令碼,或者在這裡用惡意檔案覆蓋原始的 .exe
最後只需啟動服務即可
注意:即使服務以localSystem
許可權執行,我們也有啟動和停止服務的許可權