通過命名管道分析實現Cobalt Strike默認模塊的檢測

2021-01-11 網易

  

  0x00 概述

  近年來,Cobalt Strike框架受到了紅隊成員和威脅參與者的廣泛歡迎。由於具有較強的功能性、靈活性和穩定性,它也順理成章成為了商業化命令與控制框架的領導者。

  與此同時,防禦人員為了構建Cobalt Strike及其植入物Beacon的可靠籤名,已經進行了大量的研究和努力。這篇文章主要研究一些此前未知的威脅指標(IoC)。由於此前已經有大量的研究人員對Cobalt Strike默認配置的籤名進行過研究,因此我們在這裡就不再重複這方面,而是重點關注一些Cobalt Strike的後漏洞利用功能的內置模塊,例如鍵盤記錄器、Mimikatz和屏幕截圖模塊。

  需要說明的是,這裡涉及到的威脅指標和行為特徵都是根據Cobalt Strike作者提供的信息,在4.2版本的Malleable配置文件中作為可以自定義的選項供攻擊者自行設置。

  希望這篇文章可以有助於藍隊成員增強其檢測能力,同時能夠促進紅隊成員使用更加複雜和定製化的技術。

  0x01 分析

  我們知道,Cobalt Strike在執行某些命令時會使用一種特定的模式,被稱為「Fork-n-Run」。Fork-n-Run模式會產生一個新的進程(也被稱為Sacrificial Process),並將功能注入到其中。這種模式有很多好處,其中之一就是可以執行需要長時間運行的任務,不會阻塞Beacon主線程,鍵盤記錄器Keylogger就是一個很好的例子。通常情況下,這些功能需要以反射式DLL的方式來實現。

  該框架的最新版本為攻擊者提供了很大的靈活性,使其可以自定義注入進程的功能。但除此之外的其他地方並沒有太大的變動,而這些地方就是我們需要重點關注的位置。

  更具體地來說,沒有變動的地方,就是檢索注入模塊的輸出的能力。例如,鍵盤記錄器(Keylogger)模塊可以將按鍵發送回主Beacon進程。但是,鍵盤記錄器模塊是無文件形式的,那麼與主Beacon進程的通信如何發生?

  答案是——通過管道。

  管道是用於進程之間相互通信的共享內存,具體可以分為兩種類型——命名管道和未命名管道。

  顧名思義,命名管道帶有名稱,可以通過引用該名稱的方式進行訪問。

  未命名管道需要將其句柄傳遞給其他通信進程,從而交換數據。這個過程可以通過多種方式來完成。

  Cobalt Strike同時使用了命名管道和未命名管道在Beacon和Sacrificial Process之間交換數據。

  0x02 命名管道

  我們發現,當使用一些Cobalt Strike的模塊,將反射式DLL注入Sacrificial Process時,會創建具有可預測的規律的命名管道。

  請注意,這些命名管道不是用於橫向移動的SMB命名管道,可以通過Malleable配置文件對其進行自定義。在4.2版本之前,這個命名管道的名稱不能由攻擊者修改。

  具體而言,一旦啟動了作業(Job),Beacon就會創建一個命名管道。管道的名稱僅包含十六進位字符,且長度等於模塊名稱的長度(例如:屏幕截圖模塊screenshot,長度為10個字符)。我們發現如下模塊符合上述特徵:

  1、鍵盤記錄器 Keylogger

  2、屏幕截圖工具 Screenshot

  3、Mimikatz (dcsync、dpapi、logonpasswords)

  4、Powerpick

  5、Net (netview)

  下面的截圖中分別展示了執行「keylogger」命令後,Sysmon事件ID 17和18(分別是管道創建和管道訪問)的示例:

  

  

  我們進行了一些實驗,沒有發現其他的合法應用程式會創建具有相同命名特徵的命名管道。我們隨後打算使用這個特徵來創建Splunk搜索,搜索過程中使用Sysmon和Yara規則來掃描進程內存。

  0x03 匿名管道

  並非每個Cobalt Strike命令都會創建一個命名管道,其中一些也會使用匿名(未命名)管道來實現相同的目標。下圖展示了發出「execute-assembly」命令後創建的管道:

  

  我們可以對啟動長時間運行的程序集所產生的Sacrificial Process進行調試,以確認這一點:

  

  我們在「ntdll!NtWriteFile」函數上設置了一個斷點,可以看到,Sacrificial Process在試圖寫入的句柄與屬於管道文件系統(NPFS)的未命名文件相關聯:

  

  我們發現,例如「execute-assembly」這類的命令並不像上述示例那樣瑣碎。那麼,我們使用管道可以做些什麼呢?

  從理論上說,我們可以針對使用匿名管道的進程建立基線。值得關注的是,本地Windows進程通常不會使用匿名管道。因此,我們就可以尋找連接到匿名管道的Windows進程,並從那裡開始調查。

  之所以在這裡要著重提到Windows進程,是因為攻擊者經常會將本地Windows二進位文件作為Malleable配置文件中的Sacrificial Process。我們可以從C2Concealer存儲庫中找到一些已經列出的二進位文件,C2Concealer存儲庫是一個用於創建隨機Malleable配置文件的項目。從下述C2Concealer默認配置中,我們可以發現可執行文件:

  ''

  #################################################

  Data set containing post_ex block data, including

  spawn-to processes.

  #################################################

  '''

  #CUSTOMIZE THIS LIST#

  spawn_processes = ['runonce.exe','svchost.exe','regsvr32.exe','WUAUCLT.exe']

  可以看到,上述進程是用於後漏洞利用作業。它們通常都不使用匿名管道與不同的進程進行通信。因此,可以藉助這一點來進行搜索,並最終建立檢測規則。

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

  ·wsmprovhost.exe

  ·ngen.exe

  ·splunk.exe

  ·splunkd.exe

  ·firefox.exe

  上述方法同樣適用於通過Cobalt Strike的dllspawn API執行的自定義反射式DLL,因為基本的通信機制是相同的。對應的一個例子是Outflank的Ps-Tools存儲庫。Ps-Tools是與Cobalt Strike完全兼容的rDLL集合,允許攻擊者監視活動。我們嘗試執行「psw」模塊,該模塊用於枚舉活動的Windows,如下所示:

  

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

  

  0x04 檢測規則

  可以通過多種方法來檢測異常命名管道。作為概念驗證,我們開發了可以用於掃描進程內存和查找活動實例的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)

  }

  針對Sacrificial Process執行的示例:

  .\yara64.exe .\cs-job-pipe.yar -s 9908

  cs_job_pipe 9908

  0x13372b7b698:$pipe: \\.\pipe\928316d80

  0x13372bf3940:$pipe: \\x00\\x00.\x00\\x00p\x00i\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}$"

  在對命名管道進行自動化檢測的過程中,這種方法可能更容易出現誤報。但是,它可以與其他威脅指標結合使用,以獲得更準確的結果。

  Splunk搜索的示例可以用於獲取創建匿名管道的進程,會按照頻率由低到高排序:

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

  0x05 逃避檢測的注意事項

  站在紅隊的視角來看,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」參數中,可以選擇合法使用匿名管道的二進位文件,從而減少被檢測到的概率。

  可以參考官方的Malleable命令說明,以及ThreatExpress的jQuery示例配置文件,從而更加深入地了解Cobalt Strike的Malleable配置文件選項。

  0x06 總結

  這篇文章展示了兩種不同的策略,用於識別終端上使用Cobalt Strike的情況。首先,我們分析與默認模塊相關的異常命名管道,然後再將重點轉移到統計學的方法上,以識別更為複雜的攻擊。

  對於紅隊隊員來說,不要使用默認設置和默認模塊則變得更為關鍵。對於藍隊防禦者來說,我們希望能夠提供一些如何發現該工具的實用建議,讓大家可以更加廣泛地使用Sysmon等工具對管道異常進行監控。

  參考及來源:https://labs.f-secure.com/blog/detecting-cobalt-strike-default-modules-via-named-pipe-analysis/

相關焦點

  • Cobalt Strike 證書修改
    Cobalt Strike 服務端和客戶端是通過 SSL 加密通訊的,由於SSL配置文件和代理配置文件由於默認配置導致keystore文件內容通常被用於防火牆識別。4.store文件查看通過keytool工具進行證書文件查看keytool -list -v -keystore "test.store"5.store文件修改修改證書密碼keytool -storepasswd -keystore test.store執行後會提示輸入證書的當前密碼,和新密碼以及重複新密碼確認
  • 滲透測試神器Cobalt Strike使用教程
    圖3agscript拓展應用的腳本c2lint 用於檢查profile的錯誤異常teamserver服務端程序cobaltstrike,cobaltstrike.jar圖17默認擁有60s的心跳,避免流量太明顯,可根據情況適當減少;
  • 逆向分析Cobalt Strike安裝後門
    安裝後門的技術原理,跟蹤一下它是如何與伺服器進行連接,並安裝Beacon後門模塊的。 這樣beacon的後裝模塊就安裝成功了,就是之前我們在客戶端上通過beacon的後門模塊進行後面的操作了。
  • 【福利】Cobalt Strike 4.0 官方教程筆記來了!
    訪問Cobalt Strike官網https://www.cobaltstrike.com/可以申請到21天測試版的序列號。Why Cobalt Strike相較於Metasploit,Cobalt Strike更適合於域滲透,並具有諸多優點。
  • 惡意軟體分析:藉助軍事相關誘餌文檔傳播Cobalt Strike
    其演變過程表明,攻擊者持續加強了逃避檢測方面所使用的策略和技術。該惡意活動還表明,儘管基於網絡的檢測非常關鍵,但是也應該通過分析系統行為特徵、部署終端防護產品等方式,對網絡層檢測能力進行補充,以提供額外的安全性。
  • 網絡安全紅藍對抗——「CobaltStrike」應用攻擊手段實例分析
    在紅藍對抗樣本中也碰到了多個樣本對Malleable C2的使用,如將Host修改為microsoft相關的常見域名,Referer倒是用了公開參考的配置文件裡的一些默認配置,對jquery有一定的偏好。
  • 管道cctv檢測是什麼意思?
    1、什麼是cctv管道檢測介紹cctv管道檢測是管道檢測機器人系統一種可用於排水管道內部攝像檢測及測量工作的管道機器人,具有強勁的動力性能,驅動及越障能力強,即使在惡劣的管道條件下也能正常工作,管道閉路電視檢測系統可以實現排水管道的內窺檢測工作:可以檢測管道的破裂、腐蝕和焊縫質量情況.採用模式識別和神經網絡等一系列圖像處理技術,將採集到的圖像進行進一步的處理,能更好的識別管道病害情況
  • 追蹤活動中相遇CobaltStrike的故事
    現在分析一下$DoIt的代碼內容,如下。 上述的代碼因為涉及到異或解碼過程,所以需要調試PowerShell,可通過微軟自帶的ISE進行調試, 然後將解密後的變量值通過管道輸出至文本文件中,然後後續進行處理。
  • 杜集區管道機器人CCTV-管道檢測系統,武漢天儀ty333,應用範圍廣
    水陸兩用管道檢測機器人無線/有線雙用ty-GSL05(專利)杜集區管道機器人CCTV-管道檢測系統,武漢天儀ty333,應用範圍廣天儀儀器公司管道機器人有9款,推薦給您:ty-150管道檢測機器人ty-200管道檢測機器人(詳細資料請點擊右邊我們網址進入查看詳情)ty-300水上漂無線管道檢測機器人(詳細資料請點擊右邊我們網址進入查看詳情
  • 什麼是管道檢測?管道CCTV檢測怎麼收費?多少錢一米
    管道常見的管道檢測有:管道CCTV檢測、管道QV檢測、管道聲納檢測這三種。這三種管道內檢測方式可以基本滿足市政官網檢測,街道、小區、企業單位檢測的需求。管道檢測可以實時監測和記錄管道內部的情況,這些情況包括管道的變形程度、堵塞程度、積淤程度、腐蝕程度等等。並且準確地做出定位,拍攝高清視頻和截取圖片。
  • 無錫CCTV機器人雨汙管道檢測多少錢,CCTV管道檢測報告和收費
    CCTV機器人檢查雨水汙水管道是一種新型的科技手段,相較於傳統雨汙管道檢測,更加高效、安全和科學。CCTV檢測和QV檢測什麼都是機器人配合設備完成,省去了人工成本和時間成本。那麼無錫CCTV機器人查雨水汙水管道多少錢一米呢?管道檢測的收費標準又是怎樣的?今天小編與你了解一下。
  • 益陽市蒸汽管道保溫鋼套鋼生產廠家檢測工藝
    益陽市蒸汽管道保溫鋼套鋼生產廠家檢測工藝   益陽市蒸汽管道保溫鋼套鋼生產廠家檢測工藝    鋼管幾何形狀檢查:鋼管端面槽角和鈍邊檢查:角尺和夾板(鋼管彎曲檢驗:用直尺、水準儀(1m)、塞尺和細線測量每米彎曲度和全長彎曲度鋼管長度檢驗:鋼帶、手動和自動長度測量鋼管外徑和橢圓度檢查
  • 新洲地下自來水管道漏水檢測專業可靠專業儀器
    服務寄語:管道檢測-您的一個電話,我們將迅速到達服務宗旨:專注檢測;追求卓越;用心服務;合作共贏;服務範圍:自來水、消防、噴淋、供熱、中央空調、園林綠化等壓力管道洩漏點定位;管道測漏、查漏水點;管道漏水檢測;地下不明管線走向定位。
  • 全球首發 | 排水管道高水位檢測利器——「鴨嘴獸」,Otter-S動力...
    ⑤設備其他功能:設備適用於DN500以上的市政排水管道、箱涵、河道等高水位工況,可實現單次1000m檢測,自帶動力,聲吶圖示清晰,雙攝像頭配合高亮燈光可輔助人員了解管道內部情況。傳統CCTV和QV設備,在不封堵管道降低水位,做足預處理的情況下,很難對此類管道進行有效的檢測。而即使是專業的蛙人下井潛水檢測,也會存在較高的人員安全風險和高昂的成本費用。因此,現階段的市政排水管道,在高水位狀態時,一般採用無動力聲吶檢測漂浮筏設備進行檢測,但此類設備對管網的工作環境和狀況,要求較高,受限於管道工況的影響,並不能起到高水位管道的快速檢測普及性。
  • 模塊模板 | TTF格式字體轉換為Magisk模塊模板(多字重)及使用方法
    最細,w9 最粗,w4 是系統默認調用的正文字重。將喜愛的ttf格式字體按字重(粗細)依次重命名為「fontw1.ttf」~「fontw9.ttf」複製到模塊的「system/fonts」目錄下刷入重啟。
  • 成分分析檢測的流程是什麼?
    一、什麼是成分分析? 成分分析是通過微觀譜圖及雷射檢測分子結構對產品或樣品的成分進行分析,對各個成分進行定性定量分析,這個過程叫成分分析。
  • Fortinet 發布自學習人工智慧產品 實現亞秒級威脅檢測與分析
    原標題:Fortinet發布自學習人工智慧產品,實現亞秒級威脅檢測與分析FortiAI引入深度神經網絡來實現自動化威脅檢測、分析與溯源,進一步豐富Fortinet AI驅動的安全解決方案提供全面,集成,自動化網絡安全解決方案的全球領導者Fortinet(NASDAQ:FTNT),今天正式發布
  • 蔡佳霖:「音樂王子」的「管道制暖」之路
    選手檔案廣州市公用事業技師學院2016級學生,自2017年開始學習管道與制暖項目以來,希望通過自己的努力順利進入國家集訓隊。「每天早晨叫醒我的,不是鬧鐘而是夢想。」「多少次,迎著冷眼與嘲笑,從沒有放棄過心中的理想……」在第一屆全國技能大賽管道與制暖項目比賽現場,剛結束比賽的蔡佳霖用一首《海闊天空》表達了自己的心情。
  • CobaltStrike利用ExternalC2 繞過AV
    打內網方便一點,但是奈何一直繞不過去,大概試了這些方法然後最近看文章發現倆個東西(感謝倆位開發者):https://github.com/gloxec/CrossC2https://github.com/Lz1y/GECC/這是倆個Cs的ExternalC2,cs除了默認內置的控制方式以外還支持自定義
  • cctv檢測是什麼意思?機器人檢測管道多少錢?
    無錫瑞宏利管道檢測公司瑞宏利公司是一家設備完善較具規模的現代化管道疏通、從事工作多年來在管道疏通行業中留下了良好的口啤、我們擁有一支強大的、專業的員工隊伍。包括吸糞車、高壓管道清疏車隊設備、及專業清淤設施等設備。