基於MITRE ATT&CK的Red Teaming行動實踐
- 2019 年 11 月 28 日
- 筆記
前言
如果要評選最近一年內國內信息安全圈最火的一個安全新名詞,那一定是「MITRE ATT&CK」了。這個詞在其被引入國內的那一刻起,就似乎備受青睞,常見於各種文章、PPT、演講之中,大有趕超前幾年的安全熱詞「威脅情報」之勢。一時間造成了一種如果在2019年沒聽說過「MITRE ATT&CK」的安全從業人員不算是真正的業內人士的錯覺。可是,物極必反,但凡被吹捧的越高往往跌的越慘,筆者私下裡也在多個場合聽到一些對「MITRE ATT&CK」被過度吹捧的反感言論,其實看待任何新鮮的事物和概念都需要冷靜分析、客觀思考、取其精華、去其糟粕,最後為我所用才是正道。
根據MITRE ATT&CK的官方描述,我們可以知道其是一個梳理攻擊者的入侵行為(包括戰術和技術)的知識庫,其目的在於幫助防守方全面地了解和分析攻擊者的TTPs。對於乙方安全公司,可以利用ATT&CK來開發各種安全產品或服務的威脅檢測方法提高入侵檢測的覆蓋面;而對於甲方企業,則可以利用ATT&CK來設計各種威脅模型來檢測與之對應的攻擊手法,提高整體的防禦檢測的能力。
本文將探討如何利用ATT&CK站在攻擊者視角來組織和實踐Red Teaming行動,更加有針對性的模擬真實世界的攻擊者以達到「實戰養兵」的目的。至於什麼是Red Teaming,本文將不再贅述,具體可參閱筆者之前的文章《Red Team從0到1的實踐與思考》。
規劃
有效的Red Teaming行動是離不開充分的事前準備和行動規劃的。那麼如何利用Red Teaming行動來模擬真實攻擊者呢?目前比較流行的方法有以下幾種:
- 模擬直接威脅者:根據特定的威脅情報來模擬攻擊者,所謂「以情報驅動的Red Teaming行動」,目前深受國際主流互聯網企業的Red Team團隊的青睞,例如針對某些特定行業或者國家的APT組織的TTPs的模擬;
- 模擬已知威脅者:根據已披露的APT組織的TTPs來模擬攻擊者,例如利用MITRE ATT&CK來規劃Red Teaming行動所需的TTPs;
- 模擬未知威脅者:根據真實入侵的各個階段收集到的具體目標信息實時地規劃攻擊路徑從而模擬攻擊者。
這三種方法其實應該算是Red Teaming行動在企業處於不同的威脅階段時應該採用的不同方法,個人以為前兩種應該作為甲方企業自身Red Team的主要工作方向,第三種可作為前兩種的進階補充或者乙方Red Teaming服務的工作重心。具體而言,第一種方法主要是模擬直接威脅者,通過威脅情報提前發現直接威脅者的TTPs並加以模擬來檢測防守團隊應對直接威脅的防禦能力,這是Red Teaming行動的基本目標;第二種方法主要是模擬已知威脅者,通過模擬目前所有已知的攻擊組織的TTPs來全面而系統地識別防守團隊的防禦弱點並幫助其提高檢測所有已知威脅的覆蓋率,這是Red Teaming行動的主要目標;第三種方法主要是模擬未知威脅者,通過模擬真實黑客的潛在入侵行為來檢測當前企業面對未知威脅的防禦能力,這是Red Teaming的進階目標。
本文將重點介紹一下第二種方法即利用MITRE ATT&CK來規劃Red Teaming行動從而全面而系統地模擬已知威脅者,換句話說就是以ATT&CK里所列的TTPs以「連點成線」的方式來規劃所有可行的攻擊路徑。
實踐
我們都知道官方的ATT&CK框架只是籠統地歸納總結了所有目前已知的攻擊者的Tactics(戰術階段)和每個Tactics對應的Techniques(技術點),但卻並沒有深入地介紹每個Technique的具體技術細節,這實際上就為Red Teaming行動的模擬帶來了很大的不便,也就意味着Red Team自己需要分析和整理一個包含每個技術點詳細介紹的ATT&CK框架,筆者根據自身的實踐經驗已經做了類似的落地工作如下:

有了這樣的基本框架,作為Red Teaming行動的實施者就可以按照以下的步驟來規劃和實施具體的Red Teaming行動了。

確定目標
確定Red Teaming行動的目標通常是評估行動結果與效果的最有價值的衡量標準,因此行動前制定明確可度量的目標是非常重要的。比如,我們可以制定以下的行動目標:
- 成功地在目標系統或者網絡里執行所有已經選取的TTPs;
- 識別所有選取TTPs被防守團隊檢測和中斷所花費的時間。
制定計劃
一旦確定了行動目標,我們就可以依據ATT&CK框架來制定具體的行動計划了。首先,我們可以按照不同的Tactics把整體的行動分為以下幾個階段。
事前準備(Pre-Attack)
- T1266 – Acquire OSINT data sets and information. 從開源情報數據中收集目標企業員工的郵箱信息。
初始訪問(Initial-Access)
- T1192 – Spearphishing Link. 利用第三方可信的雲存儲服務來存放惡意的Word文檔作為釣魚鏈接。
執行(Execution)
- T1155 – AppleScript. 利用AppleScript在Mac上運行Python腳本。
- T1059 – Command-Line Interface. 使用cmd.exe執行系統命令和惡意代碼。
- T1085 – Rundll32. 利用Rundll32執行惡意DLL文件。
- T1118 – InstallUtil. 利用InstallUtil執行惡意代碼。
- T1086 – PowerShell. 利用PowerShell在Windows上下載和執行惡意代碼。
持久化與特權提升(Persistence & Privilege Escalation)
- T1197 – BITS Jobs. 使用BITSAdmin下載惡意文件。
- T1053 – Scheduled Task. 利用schtasks建立計劃任務實現持久化和特權提升。
防禦繞過(Defensive Evasion)
- T1221 – Template Injection. 使用Word遠程模版注入的方式執行惡意宏繞過郵件網關的沙箱檢測。
- T1088 – Bypass User Account Control. 利用Windows計劃任務中的環境變量繞過UAC。
憑據訪問(Credential Access)
- T1003 – Credential Dumping. 利用Procdump拉取lsass.exe進程的內存並從中獲取明文的用戶憑據。
命令與控制(Command and Control)
- T1104 – Multi-Stage Channels. 使用各種後門工具,Metasploit反向Shell,甚至是RAT工具來作為多層C2通道。
- T1219 – Remote Access Tools. 利用開源RAT打造自己的遠程控制平台。
數據滲出(Exfiltration)
- T1041 – ExfiltraOon Over Command and Control Channel. 通過C2通道滲出目標數據。
然後,我們就可以根據上述選擇的TTPs設計具體的模擬攻擊路徑,如下圖:

準備TTPs
根據上面制定的行動計劃,我們接下來需要分析所有已選取TTPs的具體技術實現,準備payload以及相應的測試,這時我們就需要依賴在本節一開始提到的包含每個Techniques具體技術細節的ATT&CK攻擊框架,以下以部分在上述已制定的行動計劃中選取的TTPs的準備為例。
T1192 – Spearphishing Link. 利用第三方可信的雲存儲服務來存放惡意的Word文檔作為釣魚鏈接。

T1155 – AppleScript. 利用AppleScript在Mac上運行Python腳本。

T1085 – Rundll32. 利用Rundll32執行惡意DLL文件。




T1197 – BITS Jobs. 使用BITSAdmin下載惡意文件。

T1221 – Template Injection. 使用Word遠程模版注入的方式執行惡意宏。


T1003 – Credential Dumping. 利用Procdump拉取lsass.exe進程的內存並從中獲取明文的用戶憑據。

T1219 – Remote Access Tools. 利用開源RAT打造自己的遠程控制平台。

T1041 – ExfiltraOon Over Command and Control Channel. 通過C2通道滲出目標數據。

依據以上TTPs的技術細節,我們就可以快速地製作Red Teaming行動各個階段所需的payload(如釣魚樣本,反彈shell樣本,持久化與特權提升樣本等)和工具(如C2平台,RAT遠控工具等)。
實施攻擊
計劃好Red Teaming行動的具體時間表(例如盡量避開公司業務高峰期和敏感期,儘可能地減少對實際業務的潛在影響),按照規劃好的攻擊路徑和已經準備好的TTPs對目標企業網絡實施攻擊。
完成報告
在完成攻擊後,完整且詳細地記錄以上各個步驟的詳細信息和攻擊行為時間線,對照行動開始前確定的目標完成結果分析,並最終形成報告,提交至防守團隊進行復盤和改進。
總結
洋洋洒洒寫了這麼多,總結起來其實就是一句話:Red Teaming的攻擊形式多種多樣、紛繁複雜,然而究其攻擊思路其實可以通過ATT&CK框架來梳理和模擬,利用ATT&CK來指導和落地Red Teaming行動也是幫助防守團隊識別當前企業面臨的TOP安全威脅的有效方法之一。
參考
- https://attack.mitre.org/
- Red Team從0到1的實踐與思考