當前位置:
首頁 > 最新 > Cobalt Strike中DNS隱蔽隧道的利用,以及使用DLP進行檢測

Cobalt Strike中DNS隱蔽隧道的利用,以及使用DLP進行檢測

本系列教程介紹演示常見外部入侵和內部威脅的手法、戰術、以及工具,並給出使用現有成熟產品進行檢測和響應的實際方法。

1.概述

現在,無論是開源或者商業套裝滲透軟體的應用已經得到普及。雖然目前各大安全技術網站有很多入門文章,但來源多為境外翻譯加入譯者想像,且有不少內容錯誤凸顯譯者缺乏實際操作經驗。同時,如何利用市面現有產品實施檢測的指導文章也鳳毛麟角。因此,筆者計劃編寫系列教程,介紹演示常見外部入侵和內部威脅的手段、戰術、以及工具,並給出使用現有成熟產品進行檢測和響應的實際方法。

惡意利用DNS隧道現象已存在多年,將數據封裝在DNS協議中傳輸已經是高級威脅團伙的標配工具。大部分防火牆和入侵檢測設備很少會過濾DNS流量,殭屍網路和入侵攻擊可幾乎無限制地加以利用,實現諸如遠控、文件傳輸等操作,例如前段時間危害巨大的Xshell木馬、PANW剛剛披露的伊朗黑客組織OilRig等。同時,內部惡意員工也逐漸學會了使用類似工具盜取關鍵數據資產。

DNS隱蔽隧道建立通訊並盜取數據,可輕易繞過傳統安全產品,使用特徵技術難以檢測。廣為人知的滲透商業軟體CobaltStrike和開源軟體iodine、DNScat2等亦提供了現成模塊,可被快速輕易地利用。對進行滲透測試的紅軍來說,熟練掌握隱蔽通暢的DNS隧道至關重要;而對於甲方安全和風控團隊來說,在DNS隱蔽隧道盜取數據的工具和方法得到普及的今天,此類數據泄露渠道須得到應有的重視。

本篇分步詳細講解CobaltStrike這一廣泛應用的商業滲透軟體中DNS隱蔽隧道的設置和利用,帶領讀者成功將目標系統中的數據外傳,並簡略展示分析其通信數據包,說明檢測演算法,最後演示使用現有DLP產品實現檢測未知威脅。

?????

分步驟指導教程儘可能簡單易上手,每位讀者都可以學會日常應用。

2.架設實驗環境

讓我們先將實際驗證環境架設好。筆者選擇了一台阿里雲伺服器安裝Ubuntu16.04系統作為Cobalt Strike Team Server,一台Windows7 x86虛擬機用作被攻擊盜取數據的目標,以及一台本地Kali Linux運行Cobalt Strike管理界面,最後需要一個可以配置的域名。讀者可以按照自己喜好自行修改。

首先,在雲伺服器(IP:3*.1**.***.***)上安裝Team Server。按照官方手冊安裝CobaltStrike十分簡單,目前在Ubuntu上安裝Java 1.7需要添加apt源,具體操作步驟讀者搜索一下即可獲取。解壓Cobalt Strike後運行命令./teamserver[IP] [password]即可啟動Team Server;為防止ssh登錄註銷後關閉,需要加入nohup或&命令保持後台運行。此外,大部分雲服務商需用戶自行配置打開伺服器埠。一般來說,TeamServer的預設管理埠為50050,至少需要53 UDP供DNS協議使用,還有80和8080埠也常被使用。

然後,在Kali中運行CobaltStrike,使用IP和password連接Team Server。

以上步驟官方手冊寫得十分清楚,筆者這裡就不贅述了。

接下來,我們配置域名cirrus.[domain]用於DNS隱蔽隧道,如下圖所示:創建A記錄,將自己的域名解析伺服器(ns.cirrus.[domain])指向TeamServer;再創建NS記錄將dnsch子域名的解析交給ns.cirrus.[domain]。

之後,在CobaltStrike中創建一個使用DNS的監聽器,如下圖所示。

請注意選擇payload的模式為windows/beacon_dns/reverse_dns_txt,之後便會利用DNSTXT記錄下載payload,避開傳統安全產品的檢測。

然後會彈窗提示進行監聽用域名的配置,將剛才設置NS記錄的子域名填入即可。

Cobalt Strike自帶DNS伺服器,如果返回結果為0.0.0.0則配置正確,否則請查詢相關DNS配置基本知識進行修正。某些域名解析供應商可能在功能實現上有限制,如果驗證始終不成功,讀者可以用dig命令嘗試發現問題,甚至切換服務商。

?????

3.生成投放artifact並載入

Cobalt Strike提供很多artifact生成方式,一般教程都會使用簡單的exe進行說明,筆者日常更喜歡使用PowerShell,沒有文件落地的好處顯而易見。實際操作也並不複雜,參考如下概述。

使用菜單Attacks-> Web Drive-by -> Scripted Web Delivery

現在伺服器dnsch路徑下已經掛好了用於投放的artifact,讓我們去看一眼長什麼樣子。

讀者馬上可以發揮想像,靈活創造更多的場景,在不同的地方保存和發布artifact,並不局限於CobaltStrike所提供的方式。

隨後彈出可供利用的PowerShell命令,拷貝保存。

打開攻擊目標Windows7虛擬機,運行PowerShell,輸入此命令並回車。

任務完成,木馬已被植入。Artifact的生成與載入有很多技巧,這裡只演示主要流程步驟,感興趣的讀者可以自行嘗試各種高級方法。

?????

4.遠程控制

此時,在CobaltStrike管理界面中,可以看到我們剛剛植入artifact的目標系統,已經向伺服器報告過狀態,並自動下載運行所需的payload。

右鍵點擊此台終端,選擇Interact,我們可以使用命令行嘗試遠程控制,例如截屏、查閱進程列表、下載文件等。

我們還可以利用mode命令隨時改變數據傳輸通道,例如modedns使用A記錄傳輸,mode dns6使用AAAA記錄,mode http顯而易見使用http通道等等。Cobalt Strike的圖形化界面菜單也很完善,常見的遠控操作任務都可以點幾下滑鼠完成。

讀者不妨多嘗試一些命令操作。

遠程截屏。

使用download命令遠程下載文件。

有一定基本軟體能力的內部惡意員工,按照網上流傳的入門教程操作,購買雲伺服器,幾天內便可輕易快捷搭建基礎設施,在辦公電腦上甚至無需安裝軟體,就能利用DNS隱蔽隧道長期盜取關鍵數據,無法被傳統安全產品檢測,潛在危害巨大,是安全團隊必需重視的風險。

?????

5.進階

有餘力的讀者可嘗試一些高級DNS隱蔽隧道架設技巧。

在進行紅隊滲透評估時,許多因素都影響進攻的成敗。其中非常重要的因素是,儘力保持C2基礎架構的隱藏性,讓藍隊難以發現。如果對手發現並阻止了您的C2,即使不會立刻結束戰役,至少它會減慢你的速度,而你重新架設基礎設施,浪費大量時間精力。使用DNS是一個辦法以隱藏從端點到C2的通信,但如果藍隊能夠進行遞歸DNS查找到TeamServer,就會很麻煩。我們可以阻止藍隊進行這些反向查找,或至少建立一些障礙,使用主機重定向進一步隱藏流量。

參考架構如上圖所示,感興趣的進階讀者可以嘗試。本篇因為是入門教程,筆者就不贅述了。

?????

只想學習如何使用CobaltStrike利用DNS隧道外傳數據的讀者到這裡已經達到基本目標,只需翻看官方手冊便能順利操作。接下來,對其背後具體通訊機制感興趣的讀者,可以在Windows虛擬機上安裝Wireshark軟體,捕獲網路流量數據包,進而讓我們一起做個簡單分析。

6. DNS隧道機制

DNS隱蔽隧道基於互聯網不可或缺的DNS基礎協議,天然具備穿透性強的優勢,是惡意團伙穿透安全防護的一把利器。讓我們先用一張CobaltStrike官方示意圖理解其通訊框架。

被控端和控制端間採取DNS請求和應答機制,即由被控端主動發送DNS請求實現操作輸出數據的回傳、控制端回復DNS應答實現控制命令的下發。

木馬定期詢問C&C伺服器

預設設置每60秒按格式[Session ID].dnsch.cirrus.[domain]發送A記錄解析請求,向C2伺服器報告上線。

利用TXT欄位從C&C伺服器下載模塊

我們隨便選取一條記錄,觀察TXT記錄返回的結果。

通常使用TXT類型的數據記錄來攜帶下傳數據,TXT記錄主要用來保存域名的附加文本信息,為了方便傳輸一般應用BASE-64進行編碼,每個位元組編碼6個比特的原始數據。

使用A記錄查詢向C&C上傳數據

在一個DNS查詢報文中最多可以攜帶242個字元,每個字元可以有37個不同的取值。如果要使用DNS隱蔽通道傳遞任意數據,則必須先對要傳輸的數據進行編碼,使其滿足DNS協議標準的要求。

?????

7.使用DLP檢測通過DNS隧道盜取數據行為

DNS隱蔽隧道檢測是識別未知威脅必不可少的關鍵技術能力。超過90%外部入侵和內部威脅的目標最終就是盜取數據資產。因此,監控數據外泄渠道是安全對抗中十分重要的環節。

由於DNS隧道具有隱蔽性和多變性的複雜特徵,傳統DLP產品無法檢測。實際場景中,加入域名生成演算法DGA和改變數據外發編碼等技術,大大增加了自動辨認的複雜性,造成基於特徵匹配規則的安全產品無法準確識別。即使破解某一特定木馬的DNS通訊模式,對未來出現的新格式無效。對於開源軟體來說,改變網路通信特徵輕而易舉,特徵匹配技術顯然應對不了層出不窮的變種。

合法軟體也使用DNS隧道,如果不加處理,則誤報數量巨大難以接受。

有些技術文章提出按照請求量、長子域名統計進行檢測,但頻繁請求同一域中大量子域名的情況在實際環境中較為常見,極易產生誤報,同時又容易忽略低頻率低帶寬的通道,造成漏報。若使用特殊資源記錄類型統計,檢測DNS隱蔽通道常用的TXT和NULL資源記錄,iodine等使用A記錄請求即會使此方法失效。即便採用字元頻率統計演算法,用於訓練的合法流量產自Alexa排名前百萬網站,僅代表Web域名特徵,與實際DNS流量特性差異較大,效果並不理想。

思睿嘉得DLP產品應用機器學習演算法分析終端等實體的網路流量行為,能準確檢測出DNS隱蔽隧道,包括CobaltStrike所使用的TXT記錄等下載payload、A記錄上傳數據至C&C伺服器等手段。檢測結果如下圖所示。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 DJ的札記 的精彩文章:

TAG:DJ的札記 |