Cobaltstrike內網滲透神器
前言
內網滲透是每一個安全工程師繞不過去的難題,往往內網滲透要比其他方面的滲透測試更為頭疼,其實主要原因還是在大家對攻入目標網絡的環境感到陌生罷了。第一次進入目標內網,獨自一人面對龐大的目標系統網絡、各種復雜的分區結構,很容易犯迷糊。如果這時能有個 Team 幫助你一起探索內網、一起協作,顯然會使得內網滲透的難度大大降低。本文要介紹的就是業內知名的一款能夠用于內網滲透時團隊協同作戰的工具“Cobalt Strike”。

Cobalt Strike 是一款美國 Red Team 開發的滲透測試神器,常被業界人稱為 CS。它是一款以 Metasploit 為基礎的 GUI 的框架式滲透工具,集成了端口轉發、服務掃描、自動化溢出、多模式端口監聽、Winexe 木馬生成、Win dll 木馬生成、Java 木馬生成、office宏病毒生成、木馬捆綁等;釣魚攻擊包括:站點克隆、目標信息獲取、Java執行、瀏覽器自動攻擊等。Cobalt Strike 項目的官網地址:https://www.cobaltstrike.com。
Cobalt Strike 主要用于團隊作戰,可以說是內網滲透中的團隊滲透神器, CobaltStrike 能夠讓多個攻擊者同時連接到團隊服務器上,共享攻擊資源與目標信心和 Session。要知道眾人拾柴火焰高的道理,當我們發現一個內網控制點后,為了使我們的攻擊收益最大化,最好的辦法就是跟團隊共享資源,給其他成員提供同樣的接入點,Cobalt Strike 很好的做到了這一點。因此 Cobalt Strike 作為一款協同 APT 工具,針對內網的滲透測試和作為 APT 的終端控制功能,使其變成眾多 APT 組織的首選工具。

實際上 Cobaltstrike 的社區版是大家熟知的 Armitage (一個 MSF 的圖形化界面工具),而 Cobaltstrike 大家可以理解其為 Armitage 的商業版。關于 MSF 框架和 Armitage 圖形工具的簡介,可參加我的另一篇博文:滲透測試-Metasploit實戰:https://blog.csdn.net/weixin_39190897/article/details/104285302。

基本使用
Cobalt Strike 4.0的下載和中文使用手冊地址:滲透利器Cobalt Strike4.0下載(附漢化版、視頻教程、中文使用手冊、插件):https://my.oschina.net/u/4587410/blog/4551030。
CS服務搭建
Cobalt Strike 分為客戶端和服務端,可分布式操作、協同作戰。服務器端只能運行在 Linux 系統中,可搭建在 VPS 上,團隊成員使用的圖形化客戶都安界面(Client GUI) 連接服務端。

服務端搭建
將下載后的 Cobaltstrike 4.1 安裝包上傳到 VPS 服務器上并解壓縮,服務端關鍵的文件是 teamserver,先將其修改位可執行文件,再執行./teamserver可以看到如下說明:

解釋下啟動參數含義:
./teamserver [/path/to/c2.profile] [YYYY-MM-DD] 必需參數 團隊服務器IP 必需參數 連接服務器的密碼[/path/to/c2.profile] 可選參數 指定C2通信配置文件,體現其強大的擴展性[YYYY-MM-DD] 可選參數 所有payload的終止時間
那么執行以下命令啟動 CS 服務:

以上就成功搭建好 Cobaltstrike 服務端了,請注意兩點:
1. Team server 必須以 root 權限運行,以便于監聽端口號為 0–1023 的 Listener;
2. 同時服務端默認使用 50050 端口監聽來自團隊成員 CS Client 的連接請求。
客戶端連接
Cobaltstrike 客戶端在 Windows、Linux、Mac下都可以運行 (需要配置好 Java 環境)。啟動 Cobalt Strike 客戶端,輸入服務端的IP以及端口、連接密碼,用戶名可以任意設置:

如圖已成功連接到 CS 服務端:

CS功能概覽
|Cobalt Strike|<-------New Connection #建立新的連接,允許連接多個服務器端|<-------Preferences #偏好設置(界面、控制臺樣式設置等)|<-------Visualization #窗口視圖模式(結果輸出模式) |<-------Pivot Graph #透視圖模式 |<-------Session Table #Session表模式 |<-------Target Table #目標表模式|<-------VPN Interfaces #VPN接入|<-------Listeners #監聽器(創建Listener)|<-------Script Manager #腳本管理功能 |View|<-------Applications #顯示目標機的應用信息|<-------Credentials #憑證(所有通過Mimikatz抓取的密碼都存儲在這里)|<-------Downloads #下載文件|<-------Event Log #事件日志,主機上線記錄及團隊交流記錄|<-------Keystrokes #鍵盤記錄|<-------Proxy Pivots #代理模塊|<-------Screenshots #查看目標機截圖|<-------Script Console #腳本控制臺|<-------Targets #顯示目標主機|<-------Web Log #Web日志 |Attacks|<-------Packages |<-------HTML Application #生成惡意的HTA木馬 |<-------MS Office Macro #生成Office宏病毒文件 |<-------Payload Generator #生成各種語言版本的payload |<-------USB/CD AutoPlay #生成自動播放執行的木馬文件 |<-------Windows Dropper #捆綁器、實現對文檔類進行捆綁 |<-------Windows Executable #生成EXE的payload |<-------Windows Executable(S) #把包含payload,Stageless生成EXE|<-------Web Drive-by #釣魚攻擊 |<-------Manage #對開啟的Web服務進行管理 |<-------Clone Site #克隆網站 |<-------Host File #提供Web以供下載某文件 |<-------Scripted Web Delivery #提供Web以供下載powershell |<-------Signed Applet Attack #使用java自簽名的程序進行釣魚 |<-------Smart Applet Attack #自動檢測java版本進行攻擊 |<-------System Profiler #用來獲取系統信息|<-------Spear Phish #郵件釣魚 |Reporting #報告展示模塊
權限獲取
了解了 Cobalt Strike 界面上所提供的功能后,接下來演示下 Cobalt Strike 的使用方法。使用 Cobalt Strike 最主要的目的是為了讓團隊的其他成員也能夠對我們控制的內網肉雞進行操作,所以我們第一步肯定是讓我們的內網受控機成功上線。
配監聽器&生成Payload
1、訪問監聽器功能:

2、創建新的監聽器:

監聽器的各類參數如下:

Cobaltstrike 4.1 版本提供了 8 種監聽器,
1. beacon_xx 系列為 Cobalt Strike 自身內置的監聽器,即在目標主機執行相應的payload,獲取 shell 到 CS 上,包括 dns、http、https、smb 四種方式的監聽器;
2. foreign 系列為外部監聽器,通常與 MSF 或者 Armitage 聯動,例如獲取 meterpreter 到 MSF上。
生成 Payload
假設我們控制了一臺 WIN7 的內網主機,想要生成一個 EXE 類型的 Payload 文件,可使用 Cobalt Strike 自帶的 Attacks 模塊生成我們所需要的Payload 文件:

選擇監聽器為上面新增配置的監聽器 Test:

運行Payload & Beacon
將生成的 Payload 文件 artifact.exe 傳 輸到 Win7 虛擬機(受害主機)并雙擊運行 Payload:

接著即可看到 Cobalt Strike 客戶端出現了目標主機的信息,同時團隊的其他成員也都可以對這臺機器進行操作了:

Beacon
成功將所控制的目標機資源上線之后,團隊內的其他成員即可對該臺機器進行進一步滲透。團隊成員通過點擊目標機右鍵,選擇 Interact 功能(進入 beacon),就可以用它來執行各種命令,開始對目標及進行操作:

【注意】
在 Cobalt Strike 中,默認心跳為 60s(即 CS 與受害機默認 60s 才進行一次交互),故執行命令的響應速度很慢,在下載文件時更加明顯,所以根據實戰環境把時間降低,建議不要太快,否則流量會相對明顯。在這里執行命令 sleep 5 可以把交互時間設置為 5 秒。
同時在 beacon 中,如果想對目標進行命令管理,需要在前面加上shell關鍵詞,如shell whoami、shell ipconfig等。

但是團隊成員所能操作的就是 Beacon 所提供的各種命令,接下來我們來看一看 Beacon 都提供了什么指令給滲透人員,執行 help 命令即可參看各項命令說明:

進一步可用help+命令的方式查看具體命令參數說明:

簡單介紹下各項命令
Beacon Commands=============== Command Description ------- ----------- argue 進程參數欺騙 blockdlls 在子進程中阻止非Microsoft的DLLs文件 browserpivot 注入受害者瀏覽器進程 bypassuac 繞過UAC cancel 取消正在進行的下載 cd 切換目錄 checkin 強制讓被控端回連一次 clear 清除beacon內部的任務隊列 connect 通過TCP連接到Beacon covertvpn 部署Covert VPN客戶端 cp 復制文件 dcsync 從DC中提取密碼哈希 desktop 遠程VNC dllinject 反射DLL注入進程 dllload 使用LoadLibrary將DLL加載到進程中 download 下載文件 downloads 列出正在進行的文件下載 drives 列出目標盤符 elevate 嘗試提權 execute 在目標上執行程序(無輸出) execute-assembly 在目標上內存中執行本地.NET程序 exit 退出beacon getprivs 對當前令牌啟用系統權限 getsystem 嘗試獲取SYSTEM權限 getuid 獲取用戶ID hashdump 轉儲密碼哈希值 help 幫助 inject 在特定進程中生成會話 jobkill 殺死一個后臺任務 jobs 列出后臺任務 kerberos_ccache_use 從ccache文件中導入票據應用于此會話 kerberos_ticket_purge 清除當前會話的票據 kerberos_ticket_use 從ticket文件中導入票據應用于此會話 keylogger 鍵盤記錄 kill 結束進程 link 通過命名管道連接到Beacon 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 為生成的post-ex任務設置父PID ps 顯示進程列表 psexec 使用服務在主機上生成會話 psexec_psh 使用PowerShell在主機上生成會話 psinject 在特定進程中執行PowerShell命令 pth 使用Mimikatz進行傳遞哈希 pwd 當前目錄位置 reg 查詢注冊表 rev2self 恢復原始令牌 rm 刪除文件或文件夾 rportfwd 端口轉發 run 在目標上執行程序(返回輸出) runas 以另一個用戶權限執行程序 runasadmin 在高權限下執行程序 runu 在另一個PID下執行程序 screenshot 屏幕截圖 setenv 設置環境變量 shell cmd執行命令 shinject 將shellcode注入進程 shspawn 生成進程并將shellcode注入其中 sleep 設置睡眠延遲時間 socks 啟動SOCKS4代理 socks stop 停止SOCKS4 spawn 生成一個會話 spawnas 以其他用戶身份生成會話 spawnto 將可執行程序注入進程 spawnu 在另一個PID下生成會話 ssh 使用ssh連接遠程主機 ssh-key 使用密鑰連接遠程主機 steal_token 從進程中竊取令牌 timestomp 將一個文件時間戳應用到另一個文件 unlink 斷開與Beacon的連接 upload 上傳文件 wdigest 使用mimikatz轉儲明文憑據 winrm 使用WinRM在主機上生成會話 wmi 使用WMI在主機上生成會話
下面看一下一些實際的命令執行效果:
1、keylogger 鍵盤記錄

在靶機瀏覽器輸入訪問百度的請求:

查看鍵盤記錄:

2、screenshot 屏幕截圖

查看截圖結果:

3、net view 查看局域網主機

4、portscan 執行端口掃描

如圖可以選擇目標靶機右鍵勾選執行操作:

此時 Beacon 中會自動執行對應命令并輸出:

社會工程
接下來簡單看下 CS 里面的社會工程學功能:

克隆網站&鍵盤記錄
該模塊用來克隆一個網站,來獲取用戶的鍵盤記錄:

被克隆的站點為:

此時靶機(物理機或者隨便一個主機都行)訪問目標鏈接:

此時訪問 Web 日志功能可以查看用戶輸入的密碼信息:

同時記錄往用戶的輸入,站點會自動跳轉到真實的站點鏈接上:

社工郵件&鏈接傳送
接下來繼續看下 CS 的一個社工功能——社工郵件:

配置社工郵件:

配置描述:
targets 發送的目標信息,可導入本地的txt 格式:xxxx@xxx.comtmplate 郵件模板,一般在郵件的更多選項中 ,選擇導出,或者顯示原文attachment 附件Embed URL 要嵌入的網址(可以是社工鏈接)Mail server SMTPBounce to 模仿發件人preview 預覽我們的模板文件
其中郵件模板的獲取如:

此處 MailServer 配置一直失敗,原因不詳,請知情大佬賜教……
主機進階
為了方便接下來的演示,將 Win7 靶機切換到管理員賬戶后重新上線:

【Win7 切換到管理員賬戶的方法】以管理員身份運行 CMD,執行命令:net user administrator /active:yes,重啟 Windows 系統,然后切換 Administrator 賬戶登錄即可,或者進入桌面后注銷,切換到其他賬戶登錄。
抓取Hash和dump明文密碼
這兩項功能都需要管理員權限,如果權限不足,需要先提權。
1、抓取主機用戶密碼 Hash 值(也可以直接輸入命令:hashdump)

2、使用 mimikatz 抓取明文密碼(也可以直接輸入命令:logonpasswords):

3、抓取完之后,點擊 “憑證信息”,就會顯示我們抓取過的哈希或者明文。這里我們也可以手動添加或修改憑證信息:

使用在線 Hash 計算對比下已知的密碼:

同時發現管理員賬戶是空密碼:

【注意】內網滲透有一個技術很實用的技術就是,密碼噴灑攻擊。說白就是拿收集到的靶機密碼去碰撞內網其他主機的密碼,往往會發現很多主機密碼是相同的!詳情可參見:域內用戶枚舉和密碼噴射淺析:https://mp.weixin.qq.com/s/ub0whpXQ2Epk3DOsJxjpJw 。
普通權限用戶提權到管理員
實際上內網滲透經常碰見的情況就是拿到 shell 后發現是普通管理員,這個時候為了獲得更高權限、讀取密碼 hash 等就需要嘗試進行提權了。為了進行演示實驗,我們將 Win7 靶機繼續切換回普通用戶登錄并上線到 CS 中:

1、嘗試進行主機提權:

選擇監聽器和 EXP(此版本的 CS 只有兩類提權的 EXP):

2、提權失敗:

3、該默認 EXP 無法提權沒關系,我們還可以自己加入一些提權腳本進去。在 Github 上有一個提權工具包,使用這個提權工具包可以增加幾種提權方法:https://github.com/rsmudge/ElevateKit 。下載好該提權工具包后,導入:

此時再選擇提權則有多種 EXP 可以選擇了:

4、發現使用 ms14-058 可成功提權,CS 彈回來一個 system 權限的 beacon :

5、提權后可以抓取主機用戶密碼 Hash 值了:

Socks4 代理實現內網穿透
當我們控制的主機是一臺位于公網和內網邊界的服務器 ,我們想利用該主機繼續對內網進行滲透,于是,我們可以利用 CS 來建立 Socks4 代理。
1、首先我們先在 Win7 靶機搭建 DVWA 服務:

2、接著設置 Socks4 代理:

需要輸入一個未占用的端口即可,CS 會給出一個默認端口,我們直接點擊開始即可。

3、至此便完成在自己的主機上設置 Socks4 代理(代理 IP 是我們 CS 服務端的 IP,端口即是 1485),如果我們想查看整個 CS 代理的設置,可以點擊 View 查看:

4、接下來,我在一臺連接著我手機熱點(1號WIFI)的電腦的谷歌瀏覽器設置代理,如下圖所示:

5、然后訪問 http://192.168.0.106/DVWA/login.php 即可成功訪問到家用網絡 WIFI 環境(2號WIFI)下的 Win7 靶機的內網服務(DVWA靶場),實現內網穿透:

【注意】實戰經驗總結:
在實際的滲透測試過程中,我們可以借助已經拿到 Shell 的外網靶機(此處的 Win7) 當跳板機,訪問靶機所在的內網的主機和 Web 服務,使用 Socks4 代理即可在自己的物理機中訪問到目標內網的服務;
雖然上述直接在物理機的瀏覽器設置 CS 服務器 IP 的代理可以達到訪問目標內網的目的,但是這樣子我們沒法使用 BurpSuite 開展進一步的滲透測試,因此還可以用另一種流量代理方案——在瀏覽器設置 Burp 代理,然后在 Burp 中設置 CS 服務器的 Socks4 代理:

總結
Cobaltstrike 功能強大復雜,篇幅所限,不再繼續展開介紹,更多教程請參見:安全客謝公子的文章(很全):CobaltStrike使用詳解 :https://www.anquanke.com/post/id/235251#h3-5;Cobaltstrike 的批量詳細使用教程:CN-SEC 中文網:http://cn-sec.com/archives/tag/cobaltstrike/; 語雀 xiaogege-yxttw 大佬的專欄:Cobaltstrike:https://www.yuque.com/xiaogege-yxttw/pmozby/cobaltstrike;Github資源合集:Awesome-CobaltStrike:https://github.com/zer0yu/Awesome-CobaltStrike;Cobaltstrike 中文使用手冊:https://pan.baidu.com/share/init?surl=LpMkskfUaBuiwVvQ2vjHPQ,密碼: nifi。 原文轉自:https://blog.csdn.net/weixin_39190897/article/details/118243520