2024 AIS3|研究專題
聚類分析技術-惡意軟體變體辨識方法研究
結合 CAPA、Jaccard、K-means 與 SentenceTransformer,自動比較未知樣本與惡意軟體家族的相似度。
- Year
- 2024
- Role
- 惡意軟體分析/分析腳本
- Team
- 4 人團隊
- Share
- 25%
專案總覽
專題目標是自動解析未知惡意軟體與已知家族間的相似度,協助逆向分析人員更有效率地識別、比較與分類變體。
問題與動機
惡意軟體變體會改變檔案內容、字串與包裝方式;單一雜湊難以反映行為相似度,而人工逆向大量樣本又十分耗時。
內容稍微變動就會造成傳統雜湊完全不同。
能力描述、文本與二進位格式需要不同的相似度方法。
方法與核心內容
系統透過 CAPA 擷取靜態能力特徵,再使用 Jaccard、K-means、SentenceTransformer 與二進位格式比較,形成多視角的相似度結果。
利用 CAPA 規則將樣本行為轉換為可比較的能力集合。
以集合、向量與聚類方法交叉觀察樣本間的接近程度。
技術脈絡
流程從樣本靜態解析開始,分別產生能力、文本與二進位特徵,再彙整為相似度視圖。
樣本來源與 CAPA 特徵
樣本由 MalwareBazaar 取得,保留家族標籤並透過 CAPA 做靜態分析。分析不只讀取樣本基本資訊,也使用 MITRE ATT&CK、MBC 與 capability 規則;對結果有疑問時以 capa.exe malware.exe -vv 追查命中依據,再以人工逆向確認。
方法一:CAPA 規則集合與 Jaccard
先將每個樣本命中的 CAPA rule ID/tag 轉成二元存在向量,再以交集與聯集比較 WannaCry 變體、其他勒索軟體與其他惡意程式。初期直接依空白切詞會破壞多字詞規則,因此改為擷取 tag 並依逗號切分。
J(A, B) = |A ∩ B| / |A ∪ B|
方法二:文字向量與 K-means
團隊嘗試以 CountVectorizer 的 Bag-of-Words、SentenceTransformer 語意向量、K-means 與 PCA 將能力描述映射到向量空間。實驗結果未形成預期群聚,估計仍需要較長時間調參與檢查資料分布,因此沒有把它當作最終方案。
最終視圖:相似度矩陣與 UMAP
在調整前處理後,最終以樣本相似度矩陣作為輸入,透過 UMAP 降維呈現群聚;圖中標示已知 WannaCry 樣本,再插入未知樣本觀察鄰近關係。另以 t-SNE 進行比較,確認視覺結果不是單一降維方法造成。
執行流程
以已知家族作為參考,觀察未知樣本在不同特徵空間中的鄰近關係。
01 — 建立樣本資料
整理來源、家族標籤與可安全分析的惡意程式樣本。
02 — 擷取靜態特徵
執行 CAPA 與格式解析腳本,將結果轉為可比較資料。
03 — 計算與視覺化
比較多種算法結果,呈現家族與變體間的關係。
自動化與效能改善
早期流程需要多支腳本分別下載、執行 CAPA 與轉換資料,路徑與錯誤處理容易中斷;後續把五段處理整合,並以非同步/多執行緒加速 MalwareBazaar 下載與 CAPA 分析。簡報紀錄 148 個變體的初版處理曾耗費兩堂課,顯示分析吞吐本身也是研究瓶頸。
如何使用相似度結果
視圖的用途是幫分析人員縮小優先逆向範圍,而非直接取代家族判定。未知樣本靠近已知家族時,仍需回看共同 CAPA 規則、樣本來源與人工逆向結果,避免把降維圖上的距離當作最終證據。
從 CAPA 報告到可解釋的變體比較
原始分析輸出適合供程式處理,卻不適合直接閱讀:單一 CAPA 報告包含大量規則,而 TTP 比對則會形成整排 0 與 1。這裡將兩者分成「樣本能力摘要」、「特徵命中分布」與「樣本相似度」三層,保留判讀依據而不傾倒原始資料。
只留下能說明樣本行為的代表結果
- ATT&CK 戰術
- 4
- 技術命中
- 8
- CAPA 能力
- 33
此份報告針對 Windows i386 PE 樣本進行靜態分析。頁面不逐條抄錄 CAPA 結果,而是先以 ATT&CK 戰術整理行為脈絡,再摘錄對家族辨識較有意義的能力;需要驗證時,才回查完整 rule match 與位址。
把 0/1 改成可掃讀的特徵命中熱帶
每一欄代表特徵字典中的一個 TTP 維度:1 表示該樣本命中,0 表示目前沒有觀察到。熱帶保留二元向量的精確結構,但讓讀者先看出命中密度與分布,再決定是否查看個別欄位。右側數字同時列出 69 維 TTP 向量與 475 維 CAPA 能力向量的命中數。
用 Jaccard 矩陣回答哪些樣本最接近
J(A, B) = |A ∩ B| / |A ∪ B|
將每個樣本命中的 TTP 視為集合,分數越接近 1,代表兩者共享的 TTP 結構越相似;這比直接展示 69 個位元更容易比較,同時仍可回到上方熱帶檢查共同命中位置。
| Sample | 001 | 002 | 003 | 004 | 005 |
|---|---|---|---|---|---|
| 001 | 1.000 | 0.750 | 0.412 | 0.333 | 0.750 |
| 002 | 0.750 | 1.000 | 0.235 | 0.190 | 1.000 |
| 003 | 0.412 | 0.235 | 1.000 | 0.556 | 0.235 |
| 004 | 0.333 | 0.190 | 0.556 | 1.000 | 0.190 |
| 005 | 0.750 | 1.000 | 0.235 | 0.190 | 1.000 |
兩者在這 69 維 TTP 表示中得到 1.000;這表示此特徵層無法區分它們,不代表兩個檔案完全相同。
兩者相似度為 0.556,且共享一段與 001/002/005 不同的命中分布,可優先進一步逆向比較。
5 個樣本共同命中特徵 14、21、36;這些穩定特徵可作為後續確認家族核心行為的入口。
我的貢獻
貢獻比例 25%,主要負責惡意軟體分析、資料處理與分析腳本撰寫。
- 01樣本分析檢視樣本特性並整理可供比較的分析結果。
- 02資料處理清理 CAPA 與其他靜態分析輸出。
- 03分析腳本撰寫自動化解析與格式轉換程式。
- 04結果驗證協助比較算法結果與已知家族標籤。
成果與反思
專題完成多種特徵與算法的相似度比較流程,能以整體視圖協助觀察未知樣本和既有惡意軟體家族的關係。