0x00 前言在內網滲透中,當我們獲得了WSUS服務器的控制權限後,可以通過推送補丁的方式進行橫向移動。這個利用方法最早公開在BlackHat USA 2015。本文將要整理這個利用方法的相關資料,結合思路,得出行為檢測的方法。
0x01 簡介本文將要介紹以下內容:
環境搭建
利用思路
實現工具
行為檢測
0x02 環境搭建本節介紹WSUS服務器搭建的過程,通過配置客戶端實現補丁的推送
參考資料:
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/dd939822(v=ws.10)
1.WSUS服務器搭建WSUS服務器需要安裝在Windows Server操作系統
(1)安裝
在添加角色和功能頁面,選擇Windows Server Update Services
需要指定補丁更新包的存放路徑,這裡可以設置為C:\WSUS
(2)配置
打開Windows Server Update Services進行配置
配置時選擇默認選項即可,在選擇Download update information from Microsoft Update時,點擊Start Connecting,如果報錯提示An HTTP error has occurred,經過我的多次測試,可以採用以下方法解決:
關閉當前頁面
進入Windows Server Update Services,選擇synchronization,點擊synchronization Now,等待同步完成,如下圖
選擇Options,選擇WSUS Server Configuration Wizard,重新進入配置頁面,連接成功,如下圖
配置完成後需要創建計算機組,如下圖
當同步完成後,會提示下載了多少個補丁,如下圖
選擇Updates頁面,可以查看已下載的補丁,Unapproved表示未安裝的補丁,安裝後的補丁可以選擇Approved進行查看,如下圖
選中一個補丁,點擊Approve.彈出的對話框可以針對指定計算機組安裝補丁,如下圖
2.客戶端配置客戶端只要是Windows系統即可,需要通過組策略配置
依次選擇Computer Configuration-Administrative Templates-Windows Components-Windows Update,選擇Configure Automatic Updates,設置成Auto download and notify for install,選擇Specify intranet Microsoft update service location,設置更新服務器地址為http://192.168.1.182:8530
注:
需要指定端口8530
對於域環境,配置組策略後需要等待一段時間,這是因為組策略每90分鐘在後台更新一次,隨機偏移量為0-30分鐘,如果想立即生效,可以輸入命令:gpupdate /force
對於工作組環境,配置組策略可以立即生效
當客戶端開始補丁更新時,WSUS服務器會獲得客戶端的信息,並顯示在Computers頁面
組策略配置的操作等同於創建註冊表,具體信息如下:
(1)組策略配置自動更新後會創建註冊表HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
查詢命令:REG QUERY 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'
返回結果示例:
其中AUOptions對應組策略配置中的Configure automatic updating,2代表Notify for download and notify for install,3代表Auto download and notify for install,4代表Auto download and schedule the install,5代表Allow local admin to choose setting
(2)組策略配置服務器地址後會創建註冊表HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
查詢命令:REG QUERY 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate'
返回結果示例:
3.推送補丁在WSUS服務器的Windows Server Update Services頁面,選擇指定補丁,右鍵點擊Approve.在彈出的對話框中選擇計算機組即可
等待客戶端到達補丁更新時間,即可完成補丁的推送
0x03 利用思路如果我們能夠生成一個帶有Payload的補丁,就能夠通過補丁進行橫向移動,但是在利用上需要注意補丁文件的簽名問題:Windows的補丁文件需要帶有微軟的簽名
通常的利用方法是使用帶有微軟簽名的程序,例如psexec,通過psexec執行命令或者添加一個管理員用戶
0x04 實現工具開源的工具有以下三個:
https://github.com/nettitude/SharpWSUS
https://github.com/AlsidOfficial/WSUSpendu
https://github.com/ThunderGunExpress/Thunder_Woosus
以上三個工具的實現原理基本相同,都是創建一個調用psexec執行命令的補丁,將補丁推送至指定計算機,等待目標計算機更新補丁
創建補丁的操作需要連接SQL數據庫,依次實現以下操作:
ImportUpdate
PrepareXMLtoClient
InjectURL2Download
DeploymentRevision
PrepareBundle
PrepareXMLBundletoClient
DeploymentRevision
1.創建補丁SharpWSUS在創建補丁時需要注意轉義字符,命令示例:
這條命令將會在Updates的Security Updates頁面下創建WSUSDemo,如下圖
2.補丁部署將補丁部署到指定計算機組,命令示例:
這條命令會創建計算機組Demo Group,並且把win-iruj9k30gr7移動到該組下面,如下圖
接下來需要等待客戶端安裝這個補丁
3.查看補丁狀態查看補丁是否被安裝,命令示例:
補丁未安裝的輸出如下:
還有一種查看方法是查看計算機的補丁更新時間,示例命令:SharpWSUS.exe inspect
輸出示例:
為了便於測試,可以強制客戶端更新補丁,看到新的補丁信息,如下圖
4.清除補丁信息命令示例:
這條命令會刪除補丁,刪除添加的計算機組
在整個補丁更新過程中,WSUS服務器會將psexec.exe保存在WSUS服務器本地C:\wsus\wuagent.exe和C:\wsus\WsusContent\8E\FD7980D3E437F28000FA815574A326E569EB548E.exe,需要手動清除
在測試WSUSpendu時,為了便於分析細節,可以修改以下代碼:
命令行執行:powershell -ep bypass -f WSUSpendu.ps1 -Verbose,將會輸出完整的信息
0x05 行為檢測客戶端的補丁歷史更新記錄會保存所有的補丁安裝信息:
如下圖
但是,攻擊者如果獲得了系統的管理員控制權限,可以通過命令行卸載補丁的方式清除歷史更新記錄,命令行卸載補丁的命令示例:
查看更新:wmic qfe list brief/format:table
卸載指定更新:wusa /uninstall /kb:976902 /quiet /norestart
0x06 小結本文介紹了通過WSUS進行橫向移動的方法和實現工具,結合利用思路,給出行為檢測的建議。
參考資料:
https://www.blackhat.com/docs/us-15/materials/us-15-Stone-WSUSpect-Compromising-Windows-Enterprise-Via-Windows-Update.pdf
https://www.gosecure.net/blog/2020/09/03/wsus-attacks-part-1-introducing-pywsus/
https://labs.nettitude.com/blog/introducing-sharpwsus/
Recommended Comments