大規模 DNS 流量中檢測惡意請求
工作來源
ESORICS 2021
工作背景
基于 DNS 數據來檢測不同種類的惡意域名是個常見的做法,但只有不到 20% 的惡意域名被發現并被添加到黑名單中。

此前的研究集中在對信標的檢測,失陷主機到特定域名的 DNS 查詢會表現出周期性。但這種方法存在局限,大型企業的主機與域名的 DNS 查詢關系非常多,為了應對龐大的數據規模就必須過濾部分數據或者降低檢測頻率。如果攻擊者同時使用多個域名,就無法在單個請求關系中被捕獲。典型的示例為 MSC(multistage channels),失陷主機會與多個域名進行通信,常見的 TrickBot 與 Emotet 都是如此。傳統的基于單個請求關系的檢測方法,數據集很大且需要進行大量過濾。而直接對域名進行分類,可以大量減少檢測數量且能夠應對各種對抗措施。
工作設計
主要分為兩個階段:數據處理與分類。數據處理階段主要將 DNS 查詢的時間序列轉換為 PSD 向量,表征各種頻率下周期性通信強度。另外,首先需要過濾掉良性的域名再按照時間聚合。對聚合的 DNS 查詢使用離散傅里葉變換(DFT)生成 PSD 向量。最終在分類階段,利用神經網絡根據域名請求進行分類。

數據處理
過濾
首先必須刪除非常不可能是惡意域名的請求,以此提高準確性并提高處理性能。為了兼顧全局和部分,目前的設定是 Alexa 前一百萬域名中排名低于五十萬或分析時被至少 3% 的主機訪問過,就可以被當作是可信的域名。
DNS 請求聚合
聚合計算時間范圍內進行 DNS 請求的數量,聚合數據會生成一個恒定大小的結果。時間范圍越小,粒度更細;時間范圍越大,效率越高。時間窗口設定為一小時,盡可能消除包括網絡延遲、掉線抖動以外的噪音。
PSD 計算
功率譜密度(PSD)為給定輸入的離散傅里葉變換(DFT)系數的平方幅值,常用于估計時間序列信號的頻譜密度,業界也常用其檢測周期性任務。PSD 向量可以被認為是特定時間頻率下事件發生的強度。
首先要對 DNS 請求聚合進行離散傅里葉變換:

最終的 PSD 向量為:

歸一化
由于 PSD 向量大小不同,需要進行歸一化將每個頻率的幅度映射為 0 到 1 之間的值。歸一化后的 PSD 向量,仍能夠保持每個頻率的尺度一致。
分類
使用前饋神經網絡,利用歸一化后的 PSD 向量進行分類。神經網絡由三個隱藏層(分別有 25、55 和 25 個神經元)、ReLU 激活函數與一個具有 sigmoid 激活函數的輸出層組成。并且,Adam 優化器用于最小化二元交叉熵損失。
分類結果以數字從 0 到 1 之間表示,數值與大表明 DNS 查詢由 Bot 發出的可能性越大。
工作準備
Akamai 從全球八個公司網絡(超過 16000 臺設備)收集一周的真實 DNS 數據,其中請求了 1262527 個域名,而設備與域名的請求對有 1893221 對。默認假定這些設備都是未失陷的,所以另外準備了惡意軟件通信(如 CobaltStrike、Empire 等)注入數據集。惡意流量需要對(1)連續查詢的時間間隔 (2)每次發送的 DNS 查詢數量 (3)查詢的域名進行控制。
將 16000 臺設備,拆分成 10000 臺設備的訓練集和 6000 臺設備的測試集。
工作評估
封閉測試集測試
MORTON 與 Baywatch、WARP 進行對比,信標檢測場景下 WARP 最準確(97%),其次是 MORTON(85%)。MSC 檢測場景下 MORTON 最準確(85%),其次是 Baywatch-100(72%)。

盡管 MORTON 與這兩者都能給以 85% 以上的準確率檢出惡意軟件信標。但對于 MSC 的情況,MORTON 仍然可以保持高檢出率。
定義丟棄率為惡意 DNS 請求從數據集中被丟棄的速率,從 0% 逐漸增加到 90%。從魯棒性上來看,信標檢測場景下 MORTON 與 Baywatch 都很好,而 WARP 表現較差。在 MSC 檢測場景下,MORTON 表現最好,而 Baywatch 與 WARP 表現都很差。

而且從性能上說,MORTON 比 Baywatch 和 WARP 快兩到三個數量級。整個測試集,MORTON 需要 70 秒、Baywatch-10 需要 16 分鐘、Baywatch-100 需要近三個小時、WARP 需要近 24 小時。
結果總結如下所示:

開放真實場景測試
實際部署三者到兩個大型企業一周時間,超過兩萬臺設備。檢測結果利用 VirusTotal 進行輔助驗證,分為 (1)VirusTotal 認為是 Bot 且確實是 (2)VirusTotal 不認為是 Bot 但確實是 (3)完全不是 Bot。

MORTON 在一周內檢出 77 臺設備,62% 確實是 Bot。MORTON 的這個檢出率,相比其他二者高三倍。而且,Baywatch-100 檢出了 365 個連接對,只有 19% 確實是 Bot。在實際場景中,這樣會使分析人員陷入告警疲勞。WARP 的誤報率為 0%,但檢出率只有 MORTON 的一半。
案例分析
- Gandalf:gammawizard.com 是一個提供在線交易分析的網站,而 Baywatch-100 將其檢出。合法行為是每兩分鐘進行一次查詢,但這并不是典型的信標行為。
- uBlock:uBlock 是 Chrome 瀏覽器的惡意插件,每十五分鐘請求域名的解析情況并向其發送心跳。
- IsErik:IsErik 是模塊化的廣告軟件,通過 MSC 與服務器進行通信。
三者的 DNS 查詢時間序列圖如下所示:

工作思考
這是一篇之前就說要寫但一直耽擱著的文章,這個工作早在 Botconf 2022 時就已經講過,感興趣可以查看之前寫過的文章。
根據通信模式檢測利用合法服務進行 C&C 的失陷主機