0x000--前文
Cobaltstrike系列教程(二)-Listner與Payload生成 heatlevel
0x001-Beacon詳解
1.Beacon命令
大家通過系列教程(二)的學習,配置好Listner,讓目標機執行我們的Payload/后門程序后,即可發現目標機已經上線

右鍵目標interact來使用Beacon,我們用它來執行各種命令

※在Cobalt Strike中它的心跳默認是60s(即sleep時間為60s,每一分鍾目標主機與teamserver通信一次), 這會讓我們執行命令或進行其他操作響應很慢。。。
我剛開始沒設置sleep時間甚至以為是cobaltstrike壞了--||。如果sleep時間過長,在下載文件面前更為明顯,所以在測試時會把時間降低一點 。所以拿到beacon我一般先執行sleep 5,大家可以根據實戰環境來調節,建議不要太快,不然流量會很明顯。

※注意:beacon中不能直接輸入cmd命令,比如要讓目標機執行ipconfig這條cmd命令,對應的beacon命令是shell ipconfig,新人不要在這里踩坑哈
其他的beacon命令,大家可以在beacon中輸入help來獲取~
我在這貼出一部分漢化的命令
Beacon Commands Command Description ------- ----------- browserpivot 注入受害者瀏覽器進程 bypassuac 繞過UAC cancel 取消正在進行的下載 cd 切換目錄 checkin 強制讓被控端回連一次 clear 清除beacon內部的任務隊列 connect Connect to a Beacon peer over TCP covertvpn 部署Covert VPN客戶端 cp 復制文件 dcsync 從DC中提取密碼哈希 desktop 遠程VNC dllinject 反射DLL注入進程 dllload 使用LoadLibrary將DLL加載到進程中 download 下載文件 downloads 列出正在進行的文件下載 drives 列出目標盤符 elevate 嘗試提權 execute 在目標上執行程序(無輸出) execute-assembly 在目標上內存中執行本地.NET程序 exit 退出beacon getprivs Enable system privileges on current token getsystem 嘗試獲取SYSTEM權限 getuid 獲取用戶ID hashdump 轉儲密碼哈希值 help 幫助 inject 在特定進程中生成會話 jobkill 殺死一個后台任務 jobs 列出后台任務 kerberos_ccache_use 從ccache文件中導入票據應用於此會話 kerberos_ticket_purge 清除當前會話的票據 kerberos_ticket_use 從ticket文件中導入票據應用於此會話 keylogger 鍵盤記錄 kill 結束進程 link Connect to a Beacon peer over a named pipe logonpasswords 使用mimikatz轉儲憑據和哈希值 ls 列出文件 make_token 創建令牌以傳遞憑據 mimikatz 運行mimikatz mkdir 創建一個目錄 mode dns 使用DNS A作為通信通道(僅限DNS beacon) mode dns-txt 使用DNS TXT作為通信通道(僅限D beacon) mode dns6 使用DNS AAAA作為通信通道(僅限DNS beacon) mode http 使用HTTP作為通信通道 mv 移動文件 net net命令 note 備注 portscan 進行端口掃描 powerpick 通過Unmanaged PowerShell執行命令 powershell 通過powershell.exe執行命令 powershell-import 導入powershell腳本 ppid Set parent PID for spawned post-ex jobs ps 顯示進程列表 p**ec Use a service to spawn a session on a host p**ec_psh Use PowerShell to spawn a session on a host psinject 在特定進程中執行PowerShell命令 pth 使用Mimikatz進行傳遞哈希 pwd 當前目錄位置 reg Query the registry rev2self 恢復原始令牌 rm 刪除文件或文件夾 rportfwd 端口轉發 run 在目標上執行程序(返回輸出) runas 以另一個用戶權限執行程序 runasadmin 在高權限下執行程序 runu Execute a program under another PID screenshot 屏幕截圖 setenv 設置環境變量 shell cmd執行命令 shinject 將shellcode注入進程 shspawn 生成進程並將shellcode注入其中 sleep 設置睡眠延遲時間 socks 啟動SOCKS4代理 socks stop 停止SOCKS4 spawn Spawn a session spawnas Spawn a session as another user spawnto Set executable to spawn processes into spawnu Spawn a session under another PID ssh 使用ssh連接遠程主機 ssh-key 使用密鑰連接遠程主機 steal_token 從進程中竊取令牌 timestomp 將一個文件時間戳應用到另一個文件 unlink Disconnect from parent Beacon upload 上傳文件 wdigest 使用mimikatz轉儲明文憑據 winrm 使用WinRM在主機上生成會話 wmi 使用WMI在主機上生成會話 argue 進程參數欺騙
2.多種beacon
以下beacon使用前均需要開啟對應的Listener,Listener如何開啟請看上一節
①http beacon&tcp beacon
這兩種beacon都是比較普通的,個人感覺講解的意義不是很大。只不過是主機與teamserver的通信協議不同而已。
②SMB beacon
1.簡介
官網介紹:SMB Beacon使用命名管道通過父級Beacon進行通訊,當兩個Beacons鏈接后,子Beacon從父Beacon獲取到任務並發送。
因為鏈接的Beacons使用Windows命名管道進行通信,此流量封裝在SMB協議中,所以SMB Beacon相對隱蔽,繞防火牆時可能發揮奇效。
這張圖很好的詮釋了SMB beacon的工作流程

②smb beacon使用
※這種beacon要求具有SMB Beacon的主機必須接受端口445上的連接.
派生一個SMB Beacon方法:在Listner生成SMB Beacon>目標主機>右鍵> spawn as>選中對應的Listener>上線
或在beacon中使用命令spawn smb(smb為我的smb listener名字


運行成功后外部可以看到∞∞這個字符,這就是派生的SMB Beacon。
當前是連接狀態,你可以Beacon上用link <ip>命令鏈接他或者unlink <ip>命令斷開它。

這種beacon在內網橫向滲透中運用的很多,橫向滲透留到日后再講。在內網環境中可以使用ipc $生成的SMB Beacon上傳到目標主機執行,但是目標主機並不會直接上線的,需要我們自己用鏈接命令(link <ip>)去連接他。
③DNS Beacon
DNS Beacon 在繞過防火牆 權限維持上非常有效,DNS beacon 可謂是是最受歡迎的Cobalt Strike功能之一。 官網給出的原理示意圖如下

使用DNS Beacon首先的有一個域名,域名建議用國外的,省去一些不必要的麻煩,也防止被查水表。。。域名使用一些通用平常的即可,整個配置過程配置非常簡單一條A記錄和幾條NS記錄即可
首先進入到域名管理界面(自己的域名過期了,用一下404師傅的圖)
配置A記錄指向服務器ip -->ns記錄都指向A記錄域名

配置好了我們可以用 nslookup 或者 dig +trace 來測試下 是否成功

如果返回的IP地址與你的服務器ip地址對應是正確的,那我們就可以開始配置dns beacon的監聽器了

Host那里最好填域名(A記錄解析那個),不要填服務器的ip地址

然后確定填上ns記錄 英文逗號隔開 ,然后生成后門測試效果

這是主機欄上出現了一個黑屏的logo,經過一段時間的等待,目標主機即可上線
④SSH beacon
當內網有Linux時Cobalt Strike也是考慮到的提供了ssh連接,大家可以通過metasploit爆破內網的ssh賬號密碼,然后用目標機的beacon去連接就可以了。
目前有兩種SSH Beacon連接方法
1.密碼直接連接
Beacon命令: ssh [target:port] [user] [pass]
2.ssh密匙連接
ssh [target:port] [user] [/path/to/key.pem]
鏈接成功后,如圖會出現一個子beacon

