<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    通過命名管道分析檢測 Cobalt Strike

    VSole2021-09-17 20:59:18

    基本分析

    Cobalt Strike 在執行其某些命令時會使用一種稱為“Fork-n-Run”的特定模式。“Fork-n-Run”模式包括產生一個新進程(也稱為犧牲進程)并將shellcode注入其中。

    這種模式提供了許多好處,一個是能夠執行長時間運行的任務,例如:“鍵盤記錄器”,不會阻塞主 Beacon 線程。一般來說都是由反射 DLL 實現的。

    在Cobalt Strike的最新版本 在如何自定義能力注入過程方面為紅隊提供了極大的靈活性。我們應該更加關注一些沒有太大變化的東西。

    更具體地說,一個保持不變的特性是能夠檢索注入模塊的輸出。例如,“鍵盤記錄器”模塊能夠將按下的鍵發送回主信標進程。但是由于“鍵盤記錄器”模塊是完全無文件的,與主信標進程的通信是如何發生的?

    答案是:管道!

    管道是用于進程相互通信的共享內存。基本上有兩種類型的管道:

    命名管道和未命名管道。命名管道,顧名思義,有一個名字,可以通過引用這個名字來訪問。匿名管道,需要將其句柄傳遞給其他通信進程以交換數據。這可以通過多種方式完成。
    

    Cobalt Strike 使用命名管道和未命名管道在信標與其犧牲進程之間交換數據。

    命名管道

    F-Secure 觀察到,當使用 Cobalt Strike 的一些模塊將反射 DLL 注入犧牲進程時,會創建一個具有可預測模式的命名管道。

    請注意,這些命名管道不是用于橫向移動的 SMB 命名管道,可以通過可塑性配置文件進行自定義。在 4.2 版之前,操作員無法修改此命名管道的名稱。

    更具體地說,觀察到一旦啟動了“作業”,信標就創建了一個命名管道;管道的名稱僅包含十六進制字符,并且發現其長度等于模塊名稱的長度(例如,屏幕截圖模塊的長度為 10 個字符)。

    一些被發現具有這種行為的模塊:

    KeyloggerScreenshotMimikatz (dcsync, dpapi, logonpasswords)PowerpickNet (netview
    

    下面的屏幕截圖顯示了執行“keylogger”命令后 Sysmon 事件 ID 17 和 18(分別創建和訪問管道)的示例:

    進行了有限數量的實驗,但沒有發現其他合法應用程序可以創建具有相同命名約定的命名管道。我們稍后將使用此信息創建 Splunk 搜索,這些搜索使用 Sysmon 和 Yara 規則來掃描進程內存

    匿名管道

    并非每個 Cobalt Strike 命令都會創建一個命名管道,其中一些將使用匿名管道來實現相同的結果。

    下圖顯示了發出“execute-assembly”命令后創建的管道實例:

    我們可以通過調試啟動長時間運行的程序集后產生的犧牲進程來確認:

    在“ntdll!NtWriteFile”函數上設置了一個斷點,并且可以看到,犧牲進程試圖寫入的句柄與屬于管道文件系統(Npfs)的未命名文件相關聯:

    正如我們所見,發現諸如“execute-assembly”之類的命令并不像上面那么簡單。

    理論上,我們可以對使用匿名管道的流程進行基線處理。我們知道本機 Windows 進程并不經常使用匿名管道。因此,我們可以查找連接到匿名管道的 Windows 進程并從那里進行檢測。

    攻擊者通常使用本地 Windows 二進制文件作為其可塑性配置文件中的犧牲進程。

    '' ############################################# #包含 post_ex 塊數據的數據集,包括spawn-to 進程。################################################# “ '' #自定義此列表# spawn_processes = ['runonce.exe','svchost.exe','regsvr32.exe','WUAUCLT.exe']
    

    可以看出,上述過程用于后開發作業。它們通常都不會使用匿名管道與不同的進程進行通信;因此,可以使用它來執行搜索并最終創建檢測規則。

    在實驗過程中,發現以下 Windows 二進制文件使用匿名管道進行進程間通信:

    wsmprovhost.exengen.exesplunk.exesplunkd.exefirefox.exe
    

    這同樣適用于通過 Cobalt Strike 的 dllspawn API 執行的自定義反射 DLL,因為底層的通信機制是相同的。

    其中一個例子是 Outflank 的Ps-Tools存儲庫。Ps-Tools 是與 Cobalt Strike 完全兼容的 rDLL 集合,允許監控過程活動。讓我們執行“psw”模塊,用于枚舉活動的Windows,如下圖:

    執行這個模塊,我們可以識別出我們之前看到的相同的匿名管道行為:

    檢測規則

    異常命名管道的檢測可以通過多種方式實現。作為概念驗證,我們開發了可用于掃描進程內存和查找實時實例的 Yara 簽名,以及可與 Sysmon 結合使用的 Splunk 搜索。

    Yara 規則如下所示:

    rule cs_job_pipe{    meta:        description = "Detects CobaltStrike Post Exploitation Named Pipes"        author = "Riccardo Ancarani & Jon Cave"        date = "2020-10-04"    strings:        $pipe = /\\\\\.\\pipe\\[0-9a-f]{7,10}/ ascii wide fullword        $guidPipe = /\\\\\.\\pipe\\[0-9a-f]{8}\-/ ascii wide    condition:        $pipe and not ($guidPipe)}
    

    針對犧牲進程的執行示例:

    .\yara64.exe .\cs-job-pipe.yar -s 9908 cs_job_pipe 9908 0x13372b7b698:$pipe: \\.\pipe\928316d80 0x13372bf3940:$x0\x0p\x0\\x0\x0p \x00p\x00e\x00\\x009\x002\x008\x003\x001\x006\x00d\x008\x000\x00
    

    下面的 Splunk 可以搜索與上述模式匹配的命名管道的創建

    index="YOUR_INDEX" source="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=17 PipeName!=""   | regex PipeName="^\\\\[a-f0-9]{7,10}$"
    

    關于使用匿名管道進行自動檢測,這種方法更容易出現誤報。但是,它可以與其他 IOC 結合使用以達到更好的效果。

    Splunk 搜索的示例,可用于獲取創建匿名管道的進程,按最低頻率排序:

    index="YOUR_INDEX" source="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=17 PipeName=""| rare limit=20 Image
    

    注意事項

    從紅隊的角度來看,Cobalt Strike 4.2 版使操作員能夠修改上述命名管道命名約定。事實上,可以在“post-ex”塊中配置“pipename”參數,其名稱在理想情況下可以與環境中使用的管道混合。

    “post-ex”塊的示例如下所示:

    post-ex {        set spawnto_x86 "%windir%\\syswow64\\dllhost.exe";    set spawnto_x64 "%windir%\\sysnative\\dllhost.exe";
        set obfuscate "true";    set smartinject "true";    set amsi_disable "true";
        set pipename "pipe\\CtxSharefilepipe###,";    }
    

    此外,在“spawnto_x86”和“spawnto_x64”參數中選擇合法使用匿名管道的二進制文件將減少被檢測到的機會。

    進程間通信命名管道
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Cobalt Strike 在執行其某些命令時會使用一種稱為“Fork-n-Run”的特定模式。一般來說都是由反射 DLL 實現的。在Cobalt Strike的最新版本 在如何自定義能力注入過程方面為紅隊提供了極大的靈活性。例如,“鍵盤記錄器”模塊能夠將按下的鍵發送回主信標進程命名管道,顧名思義,有一個名字,可以通過引用這個名字來訪問。匿名管道,需要將其句柄傳遞給其他通信進程以交換數據。
    SMB Beacon 與命名管道在 Windows 中,無管理員權限的情況下,即無法添加白名單。定義特定版本的協議的消息數據包集稱為方言。進行身份驗證后,用戶可以訪問服務器上不受共享級別安全性保護的所有共享。
    1.IPC橫向 IPC(Internet Process Connection)共享命名管道的資源,是為了實現進程間通信而開放的命名管道。IPC可以通過驗證用戶名和密碼獲得相應的權限,使用139、445端口。 1.1 利用條件
    針對中東地區電信服務提供商的網絡攻擊是利用名為 HTTPSnoop 和 PipeSnoop 的新型惡意軟件實施的,這些惡意軟件允許網絡犯罪分子遠程控制這些感染了這種惡意軟件的設備。
    域內橫向移動
    2022-01-11 15:18:17
    利用域內橫向移動技術,訪問其他域內主機
    IPC$ (Internet Process Connection) 是共享“命名管道”的資源,它是為了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道并以此通道進行加密數據的交換,從而實現對遠程計算機的訪問。IPC$是NT2000的一項新功能,它有一個特點,即在同一時間內,兩個IP之間只允許建立一個連接。
    現如今,我們已進入互聯網5G時代,工作、生活、辦公都離不開移動互聯網。在這萬物互聯的年代,大家都已經習慣了用手機進行購物和支付。 互聯網在給我們帶來方便的同時,網絡知識不夠普及、安全意識薄弱也暴露出一些系統風險。對普通人來說,“木馬、后門、掛馬、IPC”等一些詞可能并不熟悉,但往往這些就是網絡上的陷阱,可能會給你帶來巨額的財產損失。 近期,浙江省杭州市公安局下城區分局破獲了一起非法獲取計算機信
    內網滲透主要是基于前期外圍打點getshell的webserver,通過收集webserver上的信息,然后對其他內網主機進行口令上的攻擊,當然也有一些基于漏洞的攻擊。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类