CS 4.0 SMB Beacon

2021-02-13 BugFor安全團隊

有機會一起喝茶


BUGFOR「.」COM 官網 團隊招人


正文


通過命名管道 psexec 通過 SMB Listener 橫向過去的話,會在 admin$ 共享路徑下上傳一個 exe 文件,這樣可能過不了殺軟。

但是 SMB Beacon 可以生成 Stageless 的 PowerShell payload。

如果把此 ps1 放到遠程進行下載、IEX 執行就可以無文件繞過查殺,結合 https 監聽器即可。

謝謝 @undefined 師傅教我。

昨天一個朋友問我 SMB Beacon 怎麼上線,我想在網上找篇文章給他沒找到,於是自己寫一篇。既然我寫了那麼多 CS 教程都忘了寫這篇,也算是填個坑,可能你們 HW 時候用得到。

0x01 主機1 - 初始權限

小聲bb:為什麼選這個做實驗,因為它防護少。不像 2019 那麼變態(默認開 defender),這樣一會兒就要涉及免殺了。選 2008 做實驗,省掉不少煩惱。再者,昨天我朋友遇到的真實環境也真的是 2008。我這幾臺主機上面防護軟體就只有阿里雲盾 AliYunDun.exe。

通過 Scripted Web Delivery(powershell) 生成的 payload 上線第一臺主機,其 hostname 為 father。

既然已經是 Administrator 權限,就省去了提權的步驟。

0x02 主機2 - SMB 上線

SMB Beacon 的使用場景是:

Klion《CobatStrike 各個協議監聽器及 payload 詳細用法 》:


當前已拿到了目標內網中的一臺機器的 beacon shell,然後又通過其它方式搞到了同內網下的另一臺 windows 機器的本地 administrator 密碼且這臺機器的 SMB[445 埠]能正常通。不幸的是、由於各種各樣的原因限制,那臺 windows 機器並不能正常訪問外網,也就是說沒法再正常的反彈 beacon shell 了,那麼其他那些反向監聽器也就全都用不上了,而我現在就想通過當前僅有的這個 beacon shell 能不能把內網那臺不能正常訪問外網的機器也一塊給帶出來呢?答案是肯定的,bind_pipe 就是專為適應這種實戰場景而設計的。

註:bind_pipe 是 CS SMB 協議 payload 的名字。

1、探測內網 445 埠開放情況

探測結果如下:

除了 hostname 為 FATHER 的這臺主機,還有兩臺主機的 445 埠開放:

先通過 SMB 協議使 190 主機上線:

2、 創建一個 SMB listener

監聽器名稱為 smb

Pipename 管道名稱為 test

可以注意到這個 SMB 監聽器並沒有讓我們指定埠,其實 CS 3.14 之前是可以指定埠的,但是在 CS 4.0 中直接刪掉了IP 和埠的填寫框。這是因為這個 Beacon Shell 會通過管道過去,只要對方機器的 445 埠保持暢通,那麼埠其實用不用都無所謂,至於 IP 保持默認即可。

3、 使用欲橫向主機的憑據填充令牌

beacon> shell net use \\172.31.51.190\admin$ /user:"administrator" "test1234@" beacon> ls \\172.31.51.190\c$

4、 SMB 連結過去

beacon> jump psexec64 172.31.51.190 smb

這樣就通過 SMB 協議成功橫向到了 172.31.51.190 這臺主機,獲取了其 SMB Beacon!

0x03 主機3 - link 連結

對於主機3(172.31.51.192),我想從主機2 (172.31.51.190)走 SMB 協議橫向過去。

1、填充憑據

現在還要上線 172.31.51.192 這臺主機,這臺主機同樣開放了 445 埠,另外它和 172.31.51.189 的憑據相同,那麼主機1就已經有其令牌了。

可以看到從 172.31.51.189 可以直接查看192這臺主機的 c 盤文件:

但是在 172.31.51.190 這臺主機就不可以:

這裡注意一下這裡的報錯 error 5:

如果在嘗試去連接到一個 Beacon 之後得到一個 error 5(權限拒絕),可以嘗試這樣解決:竊取域用戶的令牌或使用 make_token DOMAIN\user password 來使用對於目標有效的憑據來填充你的當前令牌,然後再次嘗試去連接到 Beacon。

順便提一句:53 錯誤是 445 埠不通,如下:

填充憑據:

註:自行查詢 ipc admin$。



對於 error 1312的解決方法:net use「發生系統錯誤 1312。指定的登錄會話不存在。可能已被終止。」解決方法

2、link SMB Beacon

從 Beacon 控制臺使用 link [host] [Pipename] 可以把當前的 Beacon 連結到一個等待連接的 SMB Beacon。噹噹前 Beacon check in,它的連結的對等 Beacon 也會 check in。

註:所謂的 check in ,指的是 Beacon 回連主機,回傳受害系統的元數據,準備好進行任務數據通訊的狀態。

注意上面的劃線部分,什麼叫「等待連結」?我們可以做個小實驗來理解其概念。

在主機2(172.31.51.190)的 Beacon Shell 中填充完主機3(172.31.51.192)的憑據、獲取了其 token 之後,我們來嘗試一下 link 命令。如下圖所示是失敗的。

於是我們使用 psexec 命令從主機2(172.31.51.190)橫向到主機3(172.31.51.192),於是就建立了主機2到主機3的連結:

CS 官方手冊 snowming 譯本:


要銷毀一個 Beacon 連結,在父會話或子會話中使用 unlink [ip address] [session PID] 。這個 [session PID] 參數是要取消連結的 Beacon 的進程 ID。該值用於當有多個子 Beacon 時,指定一個特定的 Beacon 來斷開連結。

我們使用 unlink 172.31.51.192 2520 命令取消對主機3的連結:

但是對主機3的 SMB Beacon 取消連結之後,發生了什麼呢?

此 SMB Beacon 不會離開並消失。相反,它進入一種等待其他 Beacon 連接的狀態。我們可以使用 link 命令來從將來的另一個 Beacon 恢復對 SMB Beacon 的控制。

於是再次嘗試 link 命令,就成功了!

所以總結一下:什麼叫「等待連結」?

就是之前橫向過獲得了其 SMB Beacon,然後通過 unlink 命令取消了對此 SMB Beacon 的連結,之後這個被取消連結的 SMB Beacon 就處於等待連結狀態。可以通過 link 命令再次連結。

這裡還有一些額外要補充的:

為了與正常流量融合,連結的 Beacon 使用 Windows 命名管道進行通信。這個流量被封裝於 SMB 協議中。對於此方法有一些警告:

具有 SMB Beacon 的主機必須接受 445 埠上的連接。

只能連結由同一個 Cobalt Strike 實例管理的 Beacon。

0x04 總結

SMB Beacon 使用場景:

當前已拿到了目標內網中的一臺機器的 beacon shell,然後又通過其它方式搞到了同內網下的另一臺 windows 機器的本地 administrator 密碼且這臺機器的 SMB[445 埠]能正常 通。不幸的是、由於各種各樣的原因限制,那臺 windows 機器並不能正常訪問外網,也就是說沒法再正常的反彈 beacon shell 了,那麼其他那些反向監聽器也就全都用不上了,而我現在就想通過當前僅有的這個 beacon shell 能不能把內網那臺不能正常訪問外網的機器也一塊給帶出來呢?答案是肯定的,bind_pipe 就是專為適應這種實戰場景而設計的。

SMB Beacon 使用步驟:

1. 建立 SMB 監聽器2. 填充憑據beacon> shell net use \\172.31.51.190\admin$ /user:"administrator" "test1234@" 3. 橫向建立 SMB Beaconbeacon> jump psexec64 172.31.51.190 smb 4. 取消連結unlink [ip address] [session PID]5. 再次連結到 SMB Beaconlink [host] [Pipename]

最終效果展示:

一個圈(我又加上了 hostname 為 bro 的 SMB Beacon 對 hostname 為 father 的 SMB Beacon 的一個級聯連結):

多個級聯:

2020/6/11日更新:

使用 SMB Beacon 的前提是憑據必須是 administrator 的。

我試過用域內的服務帳戶的憑據去 SMB 一臺域內主機。如下面的記錄,填充憑據沒有問題,也可以列出目錄。但是 jump psexec 橫向時候就失敗了。

beacon> shell net use \\192.168.0.134\C$ /user:"DT****\ir***ervice" "i*****123"[*] Tasked beacon to run: net use \\192.168.0.134\C$ /user:"DTG***M\ir***ervice" "i*****123"[+] host called home, sent: 101 bytes[+] received output:The command completed successfully.# 註:這條命令的回顯我省略了部分beacon> ls \\192.168.0.134\C$[*] Tasked beacon to list files in \\192.168.0.134\C$[+] host called home, sent: 36 bytes[*] Listing: \\192.168.0.134\C$\Size     Type    Last Modified         Name----     ----    ---         ----          dir     05/17/2019 14:30:58   $Recycle.Bin          dir     01/30/2013 21:18:26   Backup CA          dir     01/14/2015 18:01:19   Backup Exec AOFO Store          beacon> jump psexec64 192.168.0.134 smb[*] Tasked beacon to run windows/beacon_bind_pipe (\\.\pipe\msagent_98d5) on 192.168.0.134 via Service Control Manager (\\192.168.0.134\ADMIN$\773c614.exe)[+] host called home, sent: 289492 bytes[-] Could not open service control manager on 192.168.0.134: 5[-] Could not connect to pipe: 2

所以說必須是有了想要橫向的那臺主機的管理員權限才可以!!!

參考文檔:

CobatStrike 各個協議監聽器及 payload 詳細用法,Klion [星球文章請勿向我索要]

CobaltStrike4.0用戶手冊_中文翻譯,QAX-A TEAM



BUGFOR 安全團隊聯繫人

相關焦點

  • Cobaltstrike系列教程(三)beacon詳解
    注意:beacon中不能直接輸入cmd命令,比如要讓目標機執行ipconfig這條cmd命令,對應的beacon命令是shell ipconfig,新人不要在這裡踩坑哈其他的beacon命令,大家可以在beacon中輸入
  • 建議收藏 | CS學習筆記合集
    如今 Cobalt Strike 4.0 也已經發布,改動相比 3.x 還是不小的,筆者在演示的時候使用的 Cobalt Strike 4.0,看的視頻教程是 3.x 的教程。192.168.175.200:9527Proxies => socks4:192.168.175.200:95274、掃描 192.168.232.0/24 地址段中的 445 埠這裡作為演示,只掃描一下 445 埠use auxiliary/scanner/smb/smb_versionset
  • 內網學習筆記 | 23、SMBExec 與 DCOM 的使用
    1、SMBExec利用 SMBExec 可以通過文件共享(admin$、c$、ipc$、d$)在遠程系統中執行命令,它的工作方式類似於 PsExec
  • 【經典回顧系列】 一步一步教你漏洞挖掘之Windows SMB Ghost CVE-2020-0796(二)
    https://media.blackhat.com/bh-us-12/Briefings/Cerrudo/BH_US_12_Cerrudo_Windows_Kernel_WP.pdfAbusing Token Privileges For EoPhttps://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.
  • SMB協議漏洞分析
    Status (4 bytes)Command (2 bytes)CreditRequest/CreditResons (2 bytes)Flags (4 bytes)NextCommand
  • Linux 下的init 0,1,2,3,4,5,6知識介紹
    二. init一共分為7個級別,這7個級別的所代表的含義如下0:停機或者關機(千萬不能將initdefault設置為0)1:單用戶模式,只root用戶進行維護2:多用戶模式,不能使用NFS(Net File System)3:完全多用戶模式(標準的運行級別)4:安全模式
  • 【EZ4.0】高分乾貨|CS115 & CS135教授大解析!最全面最走心的大一CS教授測評
    Becker,Byron Weber Lec002: 08:30-09:50TThLec005: 11:30-12:50TThRate My Professor 評分:3.3推薦指數:4教授簡介:一位很熱情的prof, 講課有條理並且會運用簡單易懂的例子,課上和office
  • ETH2.0:它會是什麼?(一)
    階段0 —— Beacon鏈 階段0引入「beacon 鏈」。ETH2.0設計者希望beacon鏈成為ETH2.0的生態系統的樞紐,成為所有其他分片的安全和驗證的根源。一旦部署,beacon鏈將使用Casper FFG(Casper the Friendly Finality Gadget)運行PoS。Beacon鏈早期迭代設計儘可能簡單,這也是階段0將不支持智能合約、帳戶、資產轉移,也不包括任何分片的原因。在beacon鏈上的Ether將不會在鏈上轉移,這意味著用戶也無法將其存入交易所。
  • cobalt strike 4.0 逆向破解分析
    下載連結原版:cobaltstrike4.0-originalCracked版:cobaltstrike4.0-cracked
  • 記某次文章打碼不嚴導致的利用CS進行DNS協議上線
    然後我們回到 CS中進行調整。但是在有的情況必須要編碼,所以我們可以採取ping -n 5 127.0.0.1 形式來檢驗命令是否可以執行,如果可以執行,那麼我們的服務端回延遲5s返回,因為ping 127.0.0.1 每ping一次為1s,ping 5次 為 5s。
  • 斯坦福 CS183 系列中文筆記
    在線閱讀(http://cs183.apachecn.org/)ApacheCN 面試求職交流群 724187166ApacheCN 學習資源(http://www.apachecn.org/)目錄Zero to One 從0到1 | Tony翻譯版(https://github.com/apachecn/stanford-cs183-notes
  • 好孩子兒童汽車安全座椅CS800E VS CS888
    好孩子兒童汽車安全座椅CS800E VS CS888  【慧聰汽車用品網】CS800適用0-4歲段的嬰兒。厚實貝殼型的設計,可以將撞擊力分解到面積更大的椅面上。  在上篇兒童安全座椅哪種好 好孩子CS888車載嬰兒童汽車安全座椅 評測中介紹的cs888與本款CS800有很多的雷同的地方。下面來對比一下它們的不同之處,方便大家有比較的選擇適合自己寶寶的安全座椅。  1、在結構設計上和製造工藝上不同  CS800是注塑一次成形,而CS888是吹塑一次成形的。
  • cs這款遊戲的大致發展路程是怎麼樣的?
    Beta 1.0- 在cs_ship, cs_siege, cs_tire 地圖中增加了新的人質點Beta 5.0由於4.1版只簡單地對伺服器端作了很少的修正,我們省略了對他的介紹並移到下一個作了比較大修改的部分:beta 5,這個版本在1999年聖誕節前幾天發布,這是一個與前面變化差不多的版本。