VirusTotal 惡意 URL 研究與分類
工作來源
arXiv:2205.13155
工作背景
研究表明,只有少數惡意 URL 的生命周期會超過一個月,大部分只有幾天甚至幾個小時。但即便檢測引擎會在檢測到新的惡意 URL 后不久就更新惡意 URL 列表,VirusTotal 也不一定會及時更新掃描結果。
過往大多數針對 VirusTotal 的研究都是針對文件的,研究 URL 的很少。
由于各種原因,使用固定閾值肯定不是最佳選擇。與樣本文件的情況類似,VirusTotal 上的檢出引擎數并不一定能夠反應威脅情況:
- 檢測引擎之間未必獨立
- 部分引擎就是比其他引擎檢出要早
- 引擎檢出標簽會在短時間內反復變動
工作準備
2019 年 7 月到 2022 年 1 月 VirusTotal 中所有 URL 的報告,總計近 500 萬份。其中,新發現的 FQDN 與 APEX 大約為 50 萬與 35 萬個。首次掃描的 URL 被認為是新興 URL,數量如下所示:

一共出現了 95 個檢測引擎,如下所示:

過濾掉那些沒有被任何檢測引擎檢出為惡意的 URL。而惡意 URL 分類如下所示:

引入手動標記與兩個不同于 VirusTotal 的公開 URL 情報來源(APWG 與 McAfee SiteAdvisor URL),URL 的標簽也都進行手動驗證。可見在非通用類型中,網絡釣魚與惡意軟件是出現量最大的。
利用分層抽樣的方法從新興 URL 中挑選 3800 個 URL,由 5 位安全研究人員進行手動標記。具體情況,如下所示:

工作評估
攻擊類型
各類型數量的 CDF 圖如下所示:

各類型占數據集的比例如下所示:

惡意釣魚 URL 通常比惡意軟件 URL 具有更多標簽,75% 的惡意釣魚 URL 具有三個以上標簽。不同的引擎本來就會給打上不同的標簽,多標簽是很正常的。并且,有一部分多標簽是由于檢測引擎在短時間內改變了檢測結果。
檢測精度

沒有引擎對所有類型的 URL 都表現良好。例如 BitDefender 檢測網絡釣魚類 URL 較好,但檢測惡意軟件類 URL 不佳。通常來說,在 URL 被提交到 VirusTotal 后的第五天,F1 分數最高。
穩定性

通常來說,檢測引擎具有相對穩定的二元標簽(是否惡意),但多元標簽(具體類別)會隨著時間更改。

Sophos、Bitdefender 與 Kaspersky 等被業界公認較好的引擎也為 URL 分配了多種類型的標簽。按統計來看,53% 的引擎會不斷更改檢測的具體類別,最終穩定在一個類別上。還有 47% 的引擎持續在具體類別上“反復橫跳”,最終也不會穩定在一個類別上。
二元標簽與多元標簽的關聯
使用 Jaccard 與 DTW 計算相關性。以 Malware 為例,其他請查看原文:


計算 Jaccard 相似度矩陣的 Frobenius 范數,衡量相似度是否隨時間變化保持一致。

基于 DTW 距離進行層次聚類,相似引擎如下所示:

引擎間可能是不獨立的,在利用多數投票時一定要注意這一點。
時效性

有些引擎(如 Segasec)總是較早檢測,有些引擎(如 alphaMountain.ai)總是較晚檢測。
工作設計
基于隨機森林構建一個機器學習模型,比多數投票可以提高 10-45%。

整體流程如上所示,一共使用四組特征:
- VirusTotal 特征
- 詞法特征
- 部署特征
- Whois 特征
對比結果如下所示:

除了 VirusTotal 特征以外的其他特征,也對性能的提高是有幫助的:

通常來說,惡意軟件類 URL 比網絡釣魚類 URL 要多:

工作思考
VirusTotal 左手文件右手 URL,分析文件的工作眾多,研究 URL 的相對較少。針對 VirusTotal 的研究總是讓人很感興趣,希望將來哪天 VirusTotal 自己能出來講講自己的架構什么的,供大家討論學習。