一、背景


遠控工具在黑客攻擊、滲透測試、紅藍對抗、攻防演練等場景中被廣泛應用,針對遠控類攻擊的研究及檢測刻不容緩,常見遠程管理控制工具包括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