針對Office巨集病毒的高階檢測

白鷺鷺鷺發表於2022-02-21

前言

攻擊者可能傳送帶有惡意附件的釣魚郵件,誘導受害者點選從而獲取對方的系統控制許可權

期間會藉助 Atomic 工具完成攻擊復現,再對具體的過程細節進行分析取證,然後深入研究、剖析其行為特徵

最後輸出檢測規則或者 dashboard,作為本次威脅狩獵活動的產出

PS:注意,這裡只是提供一種檢測思路,測試過程均在實驗環境下完成,並不代表實際工作效果

分析取證

在對特定攻擊活動做數字取證(Digital Forensics)的過程中,通常我會採用漏斗狀的思維模型,一步步縮小觀測範圍,聚焦目標行為特徵

簡單做了張圖,大概是這麼個意思:

image

採集全量日誌

針對威脅假設的場景,首先我們需要儘可能地保證 office 辦公軟體的所有行為無處遁形

為了實現圖中的逐層分析,還是拿出我慣用的 sysmon,藉助其配置檔案來完成,千萬別小瞧了這些配置,裡面可是有寶藏的!

第一步,建立 OfficeWatch.xml 的配置檔案,部分內容示例如下:

<Sysmon schemaversion="4.70">
  <HashAlgorithms>md5</HashAlgorithms>
  <CheckRevocation/>
  <EventFiltering>
    <RuleGroup name="Process Creation-Include" groupRelation="or">
        <ProcessCreate onmatch="include">
          <Image name="" condition="end with">WINWORD.EXE</Image>
          <ParentImage name="" condition="end with">WINWORD.EXE</ParentImage>
          <Image name="" condition="end with">EXCEL.EXE</Image>
          <ParentImage name="" condition="end with">EXCEL.EXE</ParentImage>
        </ProcessCreate>
    </RuleGroup>
    <RuleGroup name="Process Creation-Exclude" groupRelation="or">
        <ProcessCreate onmatch="exclude">
        </ProcessCreate>
    </RuleGroup>
    <RuleGroup name="Network Connect-Include" groupRelation="or">
        <NetworkConnect onmatch="include">
          <Image name="" condition="end with">WINWORD.EXE</Image>
          <Image name="" condition="end with">EXCEL.EXE</Image>
        </NetworkConnect>
    </RuleGroup>
    <RuleGroup name="Network Connect-Exclude" groupRelation="or">
      <NetworkConnect onmatch="exclude">
      </NetworkConnect>
    </RuleGroup>
    <RuleGroup name="File Create - Include" groupRelation="or">
      <FileCreate onmatch="include">
          <Image name="" condition="end with">WINWORD.EXE</Image>
          <Image name="" condition="end with">EXCEL.EXE</Image>
      </FileCreate>
    </RuleGroup>
    <RuleGroup name="File Create - Exclude" groupRelation="or">
      <FileCreate onmatch="exclude">
      </FileCreate>
    </RuleGroup>
  </EventFiltering>
</Sysmon>

指定 office 軟體相關的檔名,保證其程式、檔案、網路、DLL 載入和登錄檔等日誌均能被全量採集,同時避免干擾資訊

另外,這一步的主要目的不僅是為了保持觀測目標的可見性,更是為了下一步縮小觀測範圍而建立遙測資料的白名單

例如,平常我們在開啟 word 文件的過程中,會產生與微軟伺服器間的通訊,這些是我們需要進行加白處理的

image

同樣的,這些載入的 DLL 檔案也可以建立一份白名單,當然也別忘了多加留意它們的簽名狀態(SignatureStatus)

image

最後,分析、彙總上述成果,建立一份新的配置檔案,用於過濾 office 辦公軟體的正常行為,將其命名為 OfficeShush.xml

image

過濾正常行為

關於 OfficeShush.xml 檔案的迭代,其實也就是我們對 office 軟體相關程式建設行為基線的過程

這一步需要我們在實驗環境下考量全面,夯實基礎,再去生產環境中慢慢打磨優化

然後,便得引入豐富的惡意樣本,分析其在過濾正常行為後的特徵表現

這裡其實就是攻擊復現的過程了,以 T1204.002 為例,跑完攻擊指令碼,看看會有哪些有意思的發現:

—— 一些指令碼檔案的建立

image

—— 一些異常的命令執行和父子程式關係

image

—— 一些特定行為(例如執行巨集、XMLDOM、WMI等)才會載入的 DLL

image

聚焦可疑特徵

通過對各類惡意樣本或者具體攻擊方式做深入分析,我們可以簡單梳理一些常見攻擊行為會表現出來的特徵:

— 可疑檔案的落地(釋放指令碼或可執行檔案)
— 涉及敏感登錄檔位置的修改
— 可疑DLL檔案的載入行為(載入COM、WMI、或.NET功能所必需的DLL檔案)
— 可疑的網路請求行為(與雲服務商或者奇怪的域名通訊)
— 異常的父子程式關係(office軟體呼叫powershell、cmd命令列)
— …

整理好這些特徵點,我們可以憑此生成新的日誌採集配置檔案,或者給相應的遙測資料打上標籤,或者直接加工後轉換成檢測規則

但是在此之前呢,我想先介紹一種告警手段 —— Risk-Based Alerting(RBA)

一些安全運營人員可能對“元告警”(Meta-Alert)的概念並不陌生,這類告警通常由其它安全裝置上報而來

比如在 SIEM 上消費由 EDR 產生的病毒或後門類的告警,這種可以稱之為 “meta alert”

在此基礎之上,我想談論的情況是:在一段時間內,有兩條及以上針對同一主機(事件)的檢測規則,組合產生了一條告警

什麼時候應該使用這種告警方式呢?

在很多場景中,SIEM 或 SOC 平臺上的規則檢出只能被視為一種弱訊號(weak signals)

它們更適宜被歸類成 observable 或 indicator,而不適合直接用作告警,否則會引起運營人員的告警疲勞

此時如果我們通過一種檢測方式對這些訊號做關聯分析,最後產出告警,這一思路就被稱作 RBA

受限於手頭的工具和平臺,本文我只能借助 splunk 演示一種類似的檢測方式,通過生成一段 Hyper Queries 來達到差不多的效果

威脅分析

行為檢測

根據前面整理出的這些 office 巨集病毒相關的可疑活動或者高危操作的行為特徵,先寫一些簡單的規則給它們定個性

這一步可以藉助 splunk 給符合特定行為的 sysmon 日誌打上不同的標籤,或者進行危害評分,便於後續做關聯分析

比如攻擊者可能會利用巨集程式碼呼叫 cmd、powershell 等程式,進一步完成惡意命令執行的操作

image.png

或者攻擊者會將 payload 寫入磁碟,以特定字尾形式的檔案在受害者主機落地

image

風險判定

放在平時,或許很多人會直接拿著這些行為特徵輸出成告警

但是針對 office 郵件釣魚這類頻發場景,我們不妨深入研究下,加入一些演算法以提高告警置信度

以下演示中,我會為不同的行為簡單地指定風險評分,最後進行求和彙總,將超過特定閾值的一系列行為視作高危操作

為方便讀者自行對比,找了一篇友商近期的分析文章:https://mp.weixin.qq.com/s/1L7o1C-aGlMBAXzHqR9udA

然後上 ANYRUN 拿了份樣本:https://app.any.run/tasks/300229f4-dd97-42d8-bbce-72274ef8b9e9

實驗過程中的檢測效果如下:

image

演示程式碼放在這裡:https://github.com/Moofeng/DemoCode/blob/main/office_detection_spl

結合上述文章和檢測結果,可以看到攻擊過程幾個異常點都能很好的標識出來,例如 background.dll 檔案的落地通過 COM 物件執行計劃任務等關鍵步驟

最後的判定結果還是具備一定參考意義的,當然,具體的評分體系需要自行設定和優化

相關文章