參考
https://blog.cloudflare.com/understanding-and-mitigating-ntp-based-ddos-attacks/
https://www.slideshare.net/jgrahamc/cloud-flarejgc-secure2013andvirusbulletin2013
https://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack/
反射攻擊 & 放大攻擊
反射攻擊(reflection attack)是指攻擊者可以發送偽造源IP地址的報文。攻擊者將生成一個來自目標受害者的數據包發送到Internet上的某個服務器,該服務器將立即回復。因為源IP地址是偽造的,遠程互聯網服務器會回復並發送數據給受害者。這有兩個影響:1. 攻擊的實際來源被隱藏,很難追蹤; 2. 如果使用了許多互聯網服務器,攻擊可能包括來自世界各地的大量數據包。
但反射攻擊真正強大的地方在於流量還會被放大(amplified): 來自攻擊者的一個小小的偽造數據包會引起服務器(或多個服務器)的大量回復。在這種情況下,攻擊者可以使用一個偽造的源IP地址發送一個小數據包(偽造的IP地址就是受害者的IP地址),並讓服務器(或多個服務器)向受害者發送大量回復。放大攻擊(amplification attacks)會導致攻擊者將來自少量機器的少量帶寬轉化為來自互聯網中的大量流量負載全部流向受害者。
在過去,出現過一種使用SNMP協議進行放大的攻擊:它的倍數竟然是650x。幸運的是,Internet上很少有開放的SNMP服務器,而且SNMP通常需要身份驗證(盡管許多不太安全)。這使得SNMP攻擊相對少見。
DNS放大攻擊(Domain Name System Amplification Attack)
曾經最流行的放大攻擊協議是DNS放大攻擊: 一個查找域名IP地址的小DNS查詢將導致一個大的應答。DNS查詢通常通過UDP協議發送。UDP是一種“發即忘”協議,這意味着不需要通過握手來驗證數據包IP地址的真實性。這意味着,攻擊者可以偽造UDP數據包的報頭,以表明它來自您想要攻擊的特定IP,並將這個偽造的數據包發送到一個開放的DNS解析器。DNS解析器將回復一個對偽造IP地址的響應,並回答所問的任何問題(發送一系列大數據包)。
一個好的放大攻擊載體有兩個標准:
1)查詢可以設置一個欺騙源地址(例如,通過不需要握手的ICMP或UDP協議);
2)對查詢的響應明顯大於查詢本身。
DNS是滿足這些條件的核心、無處不在的互聯網平台,因此已成為放大攻擊的最大來源。產生根本原因是,許多運行DNS解析器的網絡運營商將DNS解析器打開,並願意響應任何查詢他們的IP地址。最近發生的情況是,一些不同的僵屍網絡似乎列舉了互聯網的IP空間,以發現開放的解析器。一旦發現,它們可以用來發動重大的DNS放大攻擊。
解決方案
- 如果運行遞歸DNS解析器,最佳實踐是確保它只響應來自授權客戶端的查詢。換句話說,如果你正在為你的公司運行一個遞歸DNS服務器,並且你的公司的IP空間是5.5.5.0/24(即5.5.5.0 - 5.5.5.255),那么它應該只響應來自這個范圍的查詢。如果一個查詢從9.9.9.9到達,那么它不應該響應。
- 禁用DNS服務遞歸。
- 假設我們知道我們沒有從我們的網絡發送任何DNS查詢。因此,我們可以安全地過濾來自DNS解析器的響應:在我們的路由器上丟棄來自開放解析器的響應
NTP放大攻擊(Network Time Protocol Amplification Attacks)
NTP是網絡時間協議,連接到互聯網的機器使用它來精確地設置時鍾。它還被廣泛應用於互聯網上的台式機、服務器甚至手機,以保持它們的時鍾同步。
不幸的是,簡單的基於udp的NTP協議很容易受到放大攻擊,因為它會回復一個帶有欺騙源IP地址的數據包,而且至少有一個內置命令會對一個簡短的請求發送一個長回復。這使得它成為DDoS工具的理想選擇。NTP包含一個名為monlist的命令,可以發送給NTP服務器進行監視。它返回與NTP服務器交互過的最多600台機器的地址。這個響應比發送的請求要大得多,這使它成為放大攻擊的理想選擇。
NTP放大攻擊從允許源IP地址欺騙的網絡上的攻擊者控制的服務器開始。攻擊者通過生成大量的UDP報文來欺騙源IP地址,使其看起來像是來自目標地址。這些UDP報文被發送到支持monlist命令的網絡時間協議(NTP)服務器(端口123)。
monlist命令似乎沒有什么實際用途---它返回最后訪問NTP服務器的600個IP地址的列表,課件它能造成特別大的傷害。如果NTP服務器的列表已完全填充,則對MONLIST請求的響應將比請求大206倍。在攻擊中,由於源IP地址被欺騙,且UDP協議不需要握手,所以放大的響應被發送到目標。一個1Gbps連接的攻擊者理論上可以產生200Gbps以上的DDoS流量。
解決方案
- 可以通過訪問open NTP項目(http://openntpproject.org/)來檢查網絡上是否有開放的NTP服務器支持MONLIST命令運行。
- NTP和其他基於udp的放大攻擊都依賴於源IP地址欺騙。如果攻擊者不能欺騙源IP地址,那么他們只能自己攻擊DDoS。如果您正在運行一個網絡,那么您應該確保遵循BCP38,並防止帶有欺騙源地址的數據包離開您的網絡。你可以使用麻省理工學院的Spoofer項目(http://spoofer.cmand.org/summary.php)的工具來測試你的網絡當前是否遵循BCP38。
后話
At CloudFlare one of our goals is to make DDoS something you only read about in the history books. We're proud of how our network held up under such a massive attack and are working with our peers and partners to ensure that the Internet overall can stand up to the threats it faces.
在CloudFlare,我們的目標之一就是讓DDoS成為你只能在歷史書中讀到的東西。我們為我們的網絡在如此大規模的攻擊下保持穩定感到自豪,並正在與我們的同行和合作伙伴合作,以確保互聯網總體上能夠抵抗它所面臨的威脅。