Jump to content

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,等待同步完成,如下圖

1.png選擇Options,選擇WSUS Server Configuration Wizard,重新進入配置頁面,連接成功,如下圖

2.png配置完成後需要創建計算機組,如下圖

3.png

當同步完成後,會提示下載了多少個補丁,如下圖

4.png選擇Updates頁面,可以查看已下載的補丁,Unapproved表示未安裝的補丁,安裝後的補丁可以選擇Approved進行查看,如下圖

5.png選中一個補丁,點擊Approve.彈出的對話框可以針對指定計算機組安裝補丁,如下圖

6.png2.客戶端配置客戶端只要是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'

返回結果示例:

7.png其中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'

返回結果示例:

8.png3.推送補丁在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在創建補丁時需要注意轉義字符,命令示例:

9.png這條命令將會在Updates的Security Updates頁面下創建WSUSDemo,如下圖

10.png2.補丁部署將補丁部署到指定計算機組,命令示例:

11.png這條命令會創建計算機組Demo Group,並且把win-iruj9k30gr7移動到該組下面,如下圖

12.png接下來需要等待客戶端安裝這個補丁

3.查看補丁狀態查看補丁是否被安裝,命令示例:

13.png補丁未安裝的輸出如下:

14.png還有一種查看方法是查看計算機的補丁更新時間,示例命令:SharpWSUS.exe inspect

輸出示例:

15.png為了便於測試,可以強制客戶端更新補丁,看到新的補丁信息,如下圖

16.png4.清除補丁信息命令示例:

17.png這條命令會刪除補丁,刪除添加的計算機組

在整個補丁更新過程中,WSUS服務器會將psexec.exe保存在WSUS服務器本地C:\wsus\wuagent.exe和C:\wsus\WsusContent\8E\FD7980D3E437F28000FA815574A326E569EB548E.exe,需要手動清除

在測試WSUSpendu時,為了便於分析細節,可以修改以下代碼:

18.png命令行執行:powershell -ep bypass -f WSUSpendu.ps1 -Verbose,將會輸出完整的信息

0x05 行為檢測客戶端的補丁歷史更新記錄會保存所有的補丁安裝信息:

如下圖

19.png

但是,攻擊者如果獲得了系統的管理員控制權限,可以通過命令行卸載補丁的方式清除歷史更新記錄,命令行卸載補丁的命令示例:

查看更新: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/

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...