在過去一段時間內,愛爾蘭的許多在線服務和公共網絡都遭受到了 DDoS 攻擊。英國廣播公司(BBC)最近的一篇文章[ 鏈接]就指出 2016 年 DDoS 攻擊事件將呈現上升趨勢。
針對愛爾蘭的 DDoS 攻擊大部分為 NTP 放大攻擊。之所以使用 NTP 進行DDoS攻擊,主要是因為 NTP 像 DNS 一樣是一個基于 UDP 的簡單協議,可以通過發送一個很小的請求包產生巨大的相應包。
本文首先會針對此次 DDoS 攻擊進行取證分析,隨后會給出緩解這類 DDoS 攻擊的方法。文中所有的截圖來源于 LANGuardian系統面板,該系統通過 SPAN 端口監控網絡邊界流量。
下列截圖全部來源于真實網絡環境,為 2016 年 1 月份遭受的多次 DDoS 攻擊。第一張圖展示了沒有遭受攻擊時的網絡相關流量信息,從圖中我們發現:
1、主要流量為 IPv4;
2、超過 97% 的流量為 TCP,而 UDP 流量只占到非常少的比例。這是非常正常以及我們期望的情況;
3、UPD 流量中絕大多數為 DNS 流量,對于大部分網絡來說,DNS 都會是最為活躍的 UDP 協議。
下圖為遭受 DDoS 攻擊時的網絡流量分布,最大的變化就是此時 UDP 流量占到了絕大多數,這也是遭受放大攻擊的典型特征。
進一步分析 UPD 流量發現,網絡中存在大量的 NTP 和 DNS 流量。但由于這兩個協議都非常重要,所以無法直接將其屏蔽。另一個問題在于,這些網絡數據包中包含的均為偽造的 IP 地址,所以基本的防火墻策略變的毫無用處。而這些看似合法的請求流量來自于大量的“僵尸”和偽造的身份,這也使得幾乎不可能進行識別并進行阻止這些惡意流量。
再進一步分析發現這些流量來自于4700個不同的服務器。我們可以對這些 IP 進行 whois 查詢看其是否來自于聲譽較好機構的真實 NTP 服務器。看上去不可能有4700個真實的 NTP 服務器被攻破用來進行這次攻擊,所以肯定發生了些其他的事情。
NTP 是一個基于 UDP 的無連接協議。這就意味著惡意攻擊的客戶端可以不使用自己的 IP 地址作為請求源地址,取而代之使用目標網絡的 IP 地址作為源地址創建一個 NTP 請求。而 NTP 服務器會認為請求是真實的并進行響應,但它會回復響應包到目標地址而不是發送客戶端的地址。這就是所謂的 NTP 放大攻擊。
可以確定現在正在遭受這種攻擊,因為我們的網絡沒有發送任何的 NTP 數據包給 NTP 服務器(0數據包發送,0比特發送)如下圖:
更進一步分析,我們可以計算出接收到的 NTP 應答包平均大小為 440 字節,這明顯大于標準的 NTP 應答包(90字節)。440 字節的數據包可能是對 monlist 請求進行相應的應答包,NTP 服務器響應 monlist 請求會返回與 NTP 服務器進行過時間同步的最后 600 個客戶端的 IP,響應包按照每 6 個 IP 進行分割,最多有 100 個響應包。也就是說一個簡單的 monlist 請求會收到多個大尺寸的相應數據包。這就是所謂的放大攻擊,只需一個很小的請求數據包就會收到很大的相應數據包。
最后,那么攻擊者的客戶端是如何發出 NTP 請求的?這點我們無從得知,因為攻擊者在 NTP 請求數據包中成功的偽造了源 IP 地址。我們認為這些客戶端都是僵尸網絡的一部分,在統一接收到命令后就開始攻擊目標網絡,這些僵尸網絡可能擁有成千上萬的客戶端。
下圖展示了一個命令和控制服務器是如何控制眾多僵尸節點生成畸形的 NTP 請求并發向許多服務器,進而向目標網絡發動 NTP 放大攻擊的。
報告中出現的任何本地服務器都需要檢測其服務器上是否含有惡意軟件,因為這些服務器可能是因為惡意軟件從而變成僵尸網絡的一個節點也可能其本身就是用于傳播惡意軟件的服務器。
如何緩解 DDoS 攻擊
說到緩解 DDoS 攻擊有很多選擇,但它取決于你當前情況,如果你目前正在遭受攻擊,你可能需要:
1、詢問你的 ISP 是否可以屏蔽攻擊流量。大部分情況下這是不行的,但如果你是一個教育或政府機構也許可以在 ISP 層面解決這個問題;
2、如果是自己架設 WEB 應用服務器可以考慮部署一個 DDoS 防御系統。高性能的防御系統可以跟蹤分析攻擊流量并進行清洗,從而抵御較大規模的 DDoS 攻擊;
3、如果你的網站是托管在其他地方,那你可以考慮使用像 Cloudflare DDos 防御設施;
4、在一些極端情況下,我聽說過有公司直接通過更換 ISP 來擺脫這個問題,公司的公網 IP 是唯一對外的目標,通過更換 ISP 可以轉移這個目標。