一、背景
遠控工具在黑客攻擊、滲透測試、紅藍對抗、攻防演練等場景中被廣泛應用,針對遠控類攻擊的研究及檢測刻不容緩,常見遠程管理控制工具包括MSF、CobaltStrike、Armitage等。
隨著攻防對抗的升級,攻擊者的攻擊姿勢也在不斷提升,常規普通木馬直接利用到免殺處理,導致本地查殺更加困難。
二、CobaltStrike介紹
CobaltStrike是一款美國Red Team開發的滲透測試神器,常被業界人稱為CS。CobaltStrike分為客戶端與服務端,服務端只有一個,客戶端可以有多個,這樣就可以通過團隊進行分布式協團操作。CobaltStrike集成了端口轉發、服務掃描、自動化溢出、多模式端口監聽、Windows exe木馬生成、Windows dll木馬生成、Java木馬生成、Office 宏病毒生成、木馬捆綁瀏覽器自動攻擊等強大的功能。同時,Cobalt Strike還可以調用Mimikatz等其他知名工具,因此廣受黑客喜愛。
這次分享僅介紹其中最常用的功能生成惡意程序,監聽上線受害者終端。

這個工具的社區版是Armitage(一個MSF的圖形化界面工具),而Cobaltstrike可以理解其為Armitage的商業版。早期版本CobaltSrtike依賴Metasploit框架,而現在Cobalt Strike已經不再使用MSF而是作為單獨的平臺使用,它分為客戶端(Client)與服務端(Teamserver),服務端是一個,客戶端可以有多個,團隊可進行分布式協團操作。
項目官網:https://www.cobaltstrike.com
下圖所示,多個客戶端可以方便團隊多人協作完成項目攻擊滲透。其中:
Client:攻擊者A、攻擊者B…….
TeamServer:運行Cobalt Strike工具的服務端,一般為虛擬專用服務器。
Server:受害者終端及運行了惡意程序的主機。

下圖為CobaltStrike工作界面及運行環境簡單拓撲,其中前面客戶端為攻擊者,中間為攻擊者的服務端一般是互聯網虛擬專用服務器,后面為被攻擊者終端,三者之間關系為攻擊者通過啟動客戶端+服務端對被攻擊者進行數據獲取達到攻擊目標。

1.服務端運行
服務端啟動(基于Java環境需要安裝jdk)本次運行環境為Linux。切換到程序目錄,運行程序+真實IP+密碼
./teamserver 103.234.72.90 tianmu
注意:這里IP為虛擬專用服務器地址,密碼為客戶連接輸入使用,可以自定義。

2.客戶端啟動
切換到程序目錄,以Windows環境啟動為例,運行bat文件或者vbs文件打開客戶端。

根據服務端信息依次填寫,這里用戶名可以隨意填寫,完成后連接即可使用客戶端對服務端進行操作。

3.連接成功到服務端這里需要注意服務端防火墻策略允許,否則無法成功連接。

在控制臺所有操作指令都會被記錄保留在Cobalt Strike目錄logs下。
(上述操作行為是攻擊者準備階段,未對被攻擊端做控制)
3.參數詳情
以下為攻擊者客戶端成功連接服務端程序功能介紹。
程序功能1

New Connection #新的連接(支持連接多個服務端)
Preferences #偏好設置(設置Cobal Strike界面、控制臺、以及輸出報告樣式、TeamServer連接記錄等)
Visualization #窗口視圖模式(展示輸出結果的形式)
Listenrs #監聽器(創建Listener)
Script Manager #腳本管理
Close #關閉
程序功能2

Applications #應用(顯示受害者機器的應用信息)
Credentials #憑證(通過hashdump或Mimikatz抓取過的密碼都會儲存在這里)
Downloads #下載文件
Event Log #事件日志(主機上線記錄以及團隊協作聊天記錄)
Keystrokes #鍵盤記錄
Proxy Pivots #代理模塊
Screenshots #截圖
Script Console #腳本控制臺(可以加載各種腳本,增強功能https://github.com/rsmudge/cortana-scripts)
Targets #顯示目標主機
Web Log #Web日志
程序功能3

HTML Application #生成惡意的HTA木馬文件
MS Office Macro #生成office宏病毒文件
Payload Generator #生成各種語言版本的payload
USB/CD AutoPlay #生成利用自動播放運行的木馬文件
Windows Dropper #捆綁器,能夠對文檔類進行捆綁
Windows Executable #生成可執行Payload
Windows Executable(S) #把包含payload,Stageless生成可執行文件(包含多數功能)
程序功能4

Activity report #活動報告
Hosts report #主機報告
Indicators of Compromise #威脅報告
Sessions report #會話報告
Social engineering report #社會工程學報告
Tactics, Techniques, and Procedures #策略、技巧和程序
Reset Data #重置數據
Export Data #導出數據
程序功能5
Homepage #官方主頁
Support #技術支持
Arsenal #開發者
System information #版本信息
About #關于

4.免殺
在介紹免殺之前,需要先了解什么啥查殺。殺毒軟件基本由掃描器、病毒特征庫和虛擬機組成,它會把文件放在虛擬機內運行,掃描該文件的特征,包括靜態特征、內存特征、行為特征等,通過和病毒特征庫對比來判斷一個文件是否為惡意文件。常見的殺毒軟件查殺主要包括以下幾個方面:
靜態查殺:查殺靜態的文件,一個病毒文件在編譯生成之后,該文件本身就會有特征,比如文件的某個部分是由特定字符組成,殺軟匹配到特定字符則判斷該文件為惡意文件。
內存查殺:病毒文件在運行后會將自身釋放到內存中,釋放后的文件在內存中也會存在特定字符,根據這些特定字符也可查殺。
行為查殺:程序的一些特定行為也會被殺軟判定為惡意程序,如自刪除、加入啟動項、釋放文件到特定目錄、調用敏感的dll或程序、獲取主機殺軟運行狀態等。
云查殺:相當于所有用戶的機器為Agent,然后有一個服務端,殺軟會把文件自動傳到云沙想使用各種殺毒引擎查殺并同步病毒特征到所有Agent。
三、紅隊視角CobaltStrike獵殺
接下來將從紅隊的視角進行實戰攻擊演示。這里只做樣本層面的對抗,至于流量層面的對抗后續可以介紹。
攻擊拓撲

以下為客戶端已經成功登錄到服務端,此時在客戶端登錄頁面配置遠程惡意程序的相關參數,并生成回連的惡意遠程控制程序。
1.服務端配置
1.配置監聽地址(這里以https為例)


2.生成上線程序(這里生成C語言的shellcode)
這樣方便進行免殺處理。

以下為生成的shellcode

2.免殺處理
1.使用紅隊專用免殺工具掩日

可以看到有5種免殺方式,這直接選擇直接執行(工具自動生成exe程序,編譯過程中加載惡意shellcode代碼)就會生成可執行程序。

2.使用火絨進行查殺測試(完成免殺)

3.通過社工、釣魚郵件投遞受害者
進行二次偽裝,修改程序日期和圖標,將程序發送受害者,當受害者運行該惡意程序就很CS成功上線。

3.上線提示
配置飛書上線功能,飛書上線拓撲圖(釘釘、微信都可以,這里以飛書為例。)

上圖中當受害者運行攻擊惡意程序,就會觸發攻擊者服務器上線監聽插件,并將信息發送到對應飛書機器人,可以是客戶端或移動端,這樣就會收到上線提示。
1.在CS運行服務端(虛擬專用服務器)配置運行飛書API插件。

2.當受害者運行攻擊惡意程序,飛書機器人就好在群里進行上線提示。

3.受害者成功上線。

4.內網漫游
對上線主機進行攻擊獲取信息,內網橫向滲透拿下更多服務器。
會話功能1

Dump Hashes #獲取hash
Elevate #提權
Golden Ticket #生成黃金票據注入當前會話
Make token #憑證轉換
Run Mimikatz #運行 Mimikatz
Spawn As #用其他用戶生成Cobalt Strike偵聽器
會話功能2
Browser Pivot #劫持目標瀏覽器進程
Desktop(VNC) #桌面交互
File Browser #文件瀏覽器
Net View #命令Net View
Port Scan #端口掃描
Process List #進程列表
Screenshot #截圖

會話功能3
SOCKS Server #代理服務
Listener #反向端口轉發

會話功能4
紅隊的研究人員基于此,開發了很多高效實用的功能插件,可以快速的進行攻擊滲透,從而快速的獲取相關信息。

這里舉例演示一個(獲取受害者瀏覽器登錄cookie用戶名及密碼)

會話功能5
常見命令

beacon> help Beacon Commands =============== Command Description ------- ----------- argue 進程參數欺騙 blockdlls 阻止子進程加載非Microsoft DLL browserpivot 注入受害者瀏覽器進程 bypassuac 繞過UAC提升權限 cancel 取消正在進行的下載 cd 切換目錄 checkin 強制讓被控端回連一次 clear 清除beacon內部的任務隊列 connect Connect to a Beacon peer over TCP covert 部署Covert 客戶端 cp 復制文件 dcsync 從DC中提取密碼哈希 desktop 遠程桌面(VNC) dllinject 反射DLL注入進程 dllload 使用LoadLibrary將DLL加載到進程中 download 下載文件 downloads 列出正在進行的文件下載 drives 列出目標盤符 elevate 使用exp 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 Apply 從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 顯示進程列表 psexec Use a service to spawn a session on a host psexec_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橫向滲透
四、CobaltStrike思考
未知攻焉知防!CobaltStrike是一款優秀的紅隊攻擊工具,可以高效的進行團隊合作完成項目。攻擊者可以基于此進行二次開發即魔改,從而繞過安全檢測產品,另一方面讓安全研究人員從攻擊的角度進行思考怎么檢測防御,同時該工具還支持https流量,目前對于加密流量可以通過機器學習方式進行檢測,從而也更好的說明了安全本質就是不斷對抗較量.......
對抗是一個動態變化的過程,隨著攻擊的變化,工具的更新,需要我們不斷跟蹤對每一種工具做持續的迭代分析與防護。這里只是簡單描CobaltStrike的用法,其中還有很多功能的使用,需要實際操作中去發現。更核心的地方在于理解CobaltStrike的Beacon在內網中的通信過程,這對于滲透者能否更進一步深入內網起到重要作用,也是神器的價值所在。
五、參考文檔
https://www.likecs.com/show-204300747.html
https://www.freebuf.com/articles/web/250764.html
cayman
一顆小胡椒
FreeBuf
X0_0X
上官雨寶
上官雨寶
ManageEngine卓豪
商密君
一顆小胡椒
一顆小胡椒
Coremail郵件安全
Anna艷娜