◆劉旭東
基于NTP的DDoS攻擊方法與防御研究
◆劉旭東
(國際關(guān)系學(xué)院信息科技學(xué)院 北京 100091)
分布式拒絕服務(wù)攻擊(Distributed Denial of Service attack,DDoS)是一種原理簡單,攻擊方法多樣,攻擊效果顯著的計(jì)算機(jī)網(wǎng)絡(luò)攻擊方法。由于其攻擊機(jī)制一直針對最主流的網(wǎng)絡(luò)協(xié)議所設(shè)計(jì),故DDoS攻擊在計(jì)算機(jī)網(wǎng)絡(luò)攻擊手段的發(fā)展中一直保留了下來,是長期以來威脅主機(jī)正常通信的一種攻擊手段之一。本文將重點(diǎn)探究當(dāng)前分布式拒絕式服務(wù)攻擊的最新研究方法,就目前利用NTP反射攻擊最為突出,結(jié)合wireshark抓包獲取相關(guān)的流量信息,分析相關(guān)的特征,提取關(guān)鍵的NTP協(xié)議中的monlist請求、響應(yīng)數(shù)據(jù)包信息,探究發(fā)起隱秘性高、流量巨大的放大型(亦稱放射性)的DDoS攻擊,并對防御測試提出代碼上的監(jiān)測研究方案。
分布式拒絕服務(wù)攻擊(DDoS);網(wǎng)絡(luò)時間協(xié)議(NTP);協(xié)議分析;網(wǎng)絡(luò)攻防
近年來,安全新聞的頭條被一起DDoS事件所占據(jù),其中最醒目的莫過于高達(dá)400Gbps的瞬時流量,稱安全服務(wù)提供商CloudFlare遭到了該數(shù)量級流浪的NTP 反射攻擊,據(jù)CloudFlare的首席執(zhí)行官報(bào)道,基于NTP反射的DDoS成為最大的攻擊來源,正在迅速取代DNS反射攻擊。有分析稱這起攻擊事件中利用了網(wǎng)絡(luò)時間協(xié)議(Network Time Protocol,以下簡稱NTP)服務(wù)器monlist指令的特性,發(fā)送大量精心編寫的請求(request)數(shù)據(jù)包,使得被攻擊的主機(jī)接受到更多倍數(shù)的數(shù)據(jù)包,導(dǎo)致主機(jī)端口入口流量爆發(fā),阻塞出口流量,最終達(dá)到拒絕服務(wù)的效果。
安全服務(wù)提供商、美國跨國公司CloudFlare透漏,該公司的客戶服務(wù)器遭受到了流量400Gbps的NTP反射攻擊,在整個DDoS的攻擊歷史上達(dá)到了一個流量峰值。分析NTP反射攻擊的過程得知,NTP工作于應(yīng)用層,其承載協(xié)議為UDP,具有無連接性,不同于TCP/IP協(xié)議,不需要對通信進(jìn)行驗(yàn)證,即可強(qiáng)行施加流量負(fù)載。但這不是最關(guān)鍵的,巧妙之處在于,黑客利用NTP的monlist這一不安全的檢查機(jī)制,尋找攻擊資源,包括攻擊對象以及存在問題的舊版本NTP服務(wù)器,或者自行搭建,然后通過使用原始套接字編程發(fā)送偽造的數(shù)據(jù)請求包。
網(wǎng)絡(luò)時間協(xié)議(NTP)是一種通過因特網(wǎng)服務(wù)于計(jì)算機(jī)時鐘的同步時間協(xié)議。它提供了一種同步時間機(jī)制,能在龐大而復(fù)雜多樣因特網(wǎng)中用光速調(diào)整時間分配。NTP 包含如下三種特征,具體如圖1所示,這三種特征與指定參考時鐘都是相關(guān)聯(lián)的。
圖1 NTP協(xié)議三種特征
對于大多數(shù)主機(jī)時間服務(wù)器而言,都是通過其他對等時間以達(dá)到服務(wù)器同步,所以這三種每一種特征都由兩部分組成:其一是對等決定的部分,這部分是相對于原始標(biāo)準(zhǔn)時間的參考來源而言;其二是由主機(jī)衡量的部分,這部分主要是相對于對等而言。NTP 源于時間協(xié)議和 ICMP 時間標(biāo)志消息,但其設(shè)計(jì)更強(qiáng)調(diào)精確度和充足性兩個方面,即使是用于網(wǎng)絡(luò)路徑上包括多路網(wǎng)關(guān)、延遲差量及不可靠網(wǎng)絡(luò)。
圖2 NTP協(xié)議結(jié)構(gòu)
對大量文獻(xiàn)和文檔研究,為了便于研討NTP的特性,將NTP的工作主要分為兩個階段,第一階段是獲取時間,第二階段是同步時間。其中,含有反射作用的monlist請求指令是在時間同步階段中發(fā)生的,所以如果是對服務(wù)器發(fā)起一次獲取時間的請求,抓取到的數(shù)據(jù)包長度通常為90(如圖2),獲得的數(shù)據(jù)包也可能是對等的,并沒有發(fā)生失衡的現(xiàn)象。
第二階段需要使用NTP包含的monlist指令,NTP服務(wù)器在接收到monlist請求后,其服務(wù)器會響應(yīng)并返回與其進(jìn)行過時間同步的最近600個請求端的IP地址,同時按照每6個IP進(jìn)行分割,從理論上分析,查看這種惡意導(dǎo)向的攻擊流量可以擴(kuò)大到偽造查詢流量的100倍,其放大效果十分顯著。如圖3,使用以下命令進(jìn)行monlist查詢:
ntpdc -n -c monlist
圖3 響應(yīng)monlist查詢信息
通過協(xié)議分析即可獲得其數(shù)據(jù)長度為234字節(jié),如圖4所示,由于反射服務(wù)器可能已經(jīng)修復(fù)該monlist的漏洞,因此獲得的返回?cái)?shù)據(jù)一一對應(yīng),從攻擊者的角度來說,這是需要去避免的。具體分析該請求數(shù)據(jù)包的數(shù)據(jù)內(nèi)容。
可以看出NTP服務(wù)器由于是偏向網(wǎng)絡(luò)基礎(chǔ)設(shè)施建設(shè)的一個服務(wù)器類型(統(tǒng)一時間的作用),故它的端口也是固定的123端口,這使得在NTP的服務(wù)器池(server pool)可以輕松地在本時區(qū)的服務(wù)器列表內(nèi)找到可以同步的穩(wěn)定服務(wù)器,這里的同步可以比較簡單地認(rèn)為是進(jìn)行monlist請求,這種負(fù)載對于NTP服務(wù)器來說是可以的接受的,因?yàn)閙onlist的請求頻率比較低,也不需要大量的monlist的請求。
下面是一次成功更新了時間所返回的數(shù)據(jù)包,如圖5所示,其數(shù)據(jù)長度僅為90字節(jié)。其協(xié)議報(bào)文很顯然與發(fā)出monlist請求的字段(field)不相同,起更重要的是請求時間的主機(jī)得到了某一特定時區(qū)下的時間,同步完成了。
圖4 數(shù)據(jù)信息內(nèi)容
圖5 更新時間返回?cái)?shù)據(jù)包
網(wǎng)絡(luò)編程庫中有大量可以使用原始套接字的庫,這次攻擊測試以Python語言和Scapy庫作為主要的工具,因?yàn)楹唵吻乙子诶斫猓a清晰以至于可以重點(diǎn)關(guān)注于攻擊的本身形態(tài)。以下為實(shí)驗(yàn)環(huán)境的一些軟件參數(shù)指標(biāo):
OS:GNU/Linux Debian 8
開發(fā)工具:Python 2.7.6 Scapy 2.3.1
Scapy庫中內(nèi)置了NTP的基本格式,由NTP協(xié)議分析可得,發(fā)出請求的代碼為MON_GETLIST_1(42),經(jīng)查詢該請求發(fā)出前模式為7模式,即mode=7。根據(jù)Scapy的文檔可以將我們需要構(gòu)造的NTP請求數(shù)據(jù)包定義如下:
NTP(version=3, mode=7, stratum=0, poll=3, precision=42)
根據(jù)NTP函數(shù)的構(gòu)造釋義、結(jié)合數(shù)據(jù)包、軟件信息,定義了version、stratum、poll參數(shù)。一般地,在適應(yīng)本機(jī)的程序上來說是基本不會改變的,實(shí)際的攻擊中首先通過協(xié)議分析確定新的參數(shù),比如在之前測試中分析到的數(shù)據(jù)包中有version=3和4的數(shù)據(jù)包,這時就要注意更改其版本,否則有可能無法響應(yīng)請求。Scapy中的發(fā)包函數(shù)是send函數(shù),用于向網(wǎng)絡(luò)上發(fā)送一個數(shù)據(jù)包,除此之外,還需定義NTP協(xié)議承載協(xié)議,即UDP的端口信息。
send(
IP(dst = ntp_serv, src = ddos_targ)
/(UDP(sport = 52828)
/NTP(version = 3, mode = 7, stratum = 0, poll = 3, precision = 42)
))
由于Scapy較好的封裝性,相對較為容易寫出攻擊關(guān)鍵函數(shù),剩下的只需定義保留的兩個變量即可開始一次測試,這里稱為測試是因?yàn)橐淮魏瘮?shù)調(diào)用只發(fā)送一個monlist查詢請求,而不是洪泛(flood)地發(fā)送請求。ntp_serv為我們找到的有反射特性的NTP服務(wù)器,ddos_targ是計(jì)劃攻擊的IP地址。
運(yùn)行后,可以得到如上分析的數(shù)據(jù)包。但是要實(shí)現(xiàn)真正意義上的攻擊,已有的測試工作還不夠,從時間上說,需要一個循環(huán)的發(fā)送過程,其次為了提高發(fā)送性能,還需要引入多線程的技術(shù),在Python下設(shè)計(jì)多線程的程序也不是難事,攻擊核心已經(jīng)封裝成定義的模塊,只需要引入時間和線程模塊,就可以把線程調(diào)度起來,達(dá)到高性能發(fā)包的目的,此時就真真正正地有了一定的攻擊能力。
(1)方法一:丟棄相關(guān)端口數(shù)據(jù)包或關(guān)閉監(jiān)聽端口
防御的目的旨在解決遭遇的NTP反射攻擊,通過協(xié)議分析得知,如果在上述監(jiān)測端口處檢測到大量數(shù)據(jù)流量時,可以確定正在遭受NTP反射攻擊。當(dāng)攻擊發(fā)生的時候,只要報(bào)警及時,就可以采取措施對數(shù)據(jù)包進(jìn)行過濾。一個簡單的方法是在攻擊進(jìn)行時,通過網(wǎng)絡(luò)設(shè)備(路由器)的ACL丟棄123端口的數(shù)據(jù)包,或者將NTP服務(wù)器監(jiān)聽端口暫時關(guān)閉。
由于monlist查詢請求是NTP設(shè)計(jì)時的一個缺陷,不易更改,所以只能從訪問的配置出發(fā)去解決這個問題,鑒于NTP的反射效果,官方已經(jīng)做出了提示,并用更改ntp.conf文件的方式完成了更新。將系統(tǒng)中的NTP服務(wù)升級,服務(wù)默認(rèn)是關(guān)閉monlist查詢功能的,防止服務(wù)器被利用。
(2)方法二:關(guān)閉相關(guān)查詢指令功能
另外一種防御方法,通過手動關(guān)閉monlist查詢服務(wù)功能,以防止黑客的惡意利用,首先檢查主機(jī)的REQ_MON_GETLIST和REQ_MON_GETLIST_1的狀態(tài),并檢查請求是否可用,可以通過相關(guān)的NTP命令監(jiān)測到主機(jī)的狀態(tài):
ntpq -c rv
ntpdc -c sysinfo
ntpdc -n -c monlist
通過閱讀NTP的官方文檔,研究得到有用的權(quán)限設(shè)置,均在ntp.conf下修改。
restrict default kod nomodify notrap nopeer noquery
其作用是“允許普通的請求者進(jìn)行時間同步,但是不允許查詢NTP服務(wù)信息”、“允許發(fā)起時間同步的IP,與本服務(wù)器進(jìn)行時間同步,但是不允許修改NTP服務(wù)信息,也不允許查詢monlist在內(nèi)的服務(wù)器的狀態(tài)信息”。在實(shí)踐中,配置限制訪問命令也是可以防止被惡意嗅探和利用的方法之一。
restrict default noquery
由上述的測試程序不難發(fā)現(xiàn),最不可確定的參數(shù)就是ntp_serv。從表1的數(shù)據(jù)可以得到,公用的按洲際劃分的NTP服務(wù)器數(shù)量稀少,而且其服務(wù)器工作時間受到時差的影響,因此獲得一臺低版本存在monlist漏洞的NTP服務(wù)器非常困難。
一方面從進(jìn)攻方的來說,想要長期地維護(hù)一份可以利用的NTP服務(wù)器并非易事,在分析使用上述的命令查找服務(wù)器時,基本都返回了Timeout信息,表示不可用或者是服務(wù)器做了保護(hù),說明公用的NTP服務(wù)器越來越安全。所以想要利用這樣的服務(wù)器還是手工搭建的比較理想。
表1 全球NTP活躍服務(wù)器數(shù)量
作為一個防守方,如果NTP服務(wù)器變得安全了,那么這類反射攻擊會逐步消失,這對與一些大型的黑客組織來說只能回歸到原始的僵尸網(wǎng)絡(luò)的DDoS模式中去,這將消耗更多的資源和財(cái)力,防御的強(qiáng)度和難度都有所下降。
盡可能通過NTP的服務(wù)器池管理模式去尋找一臺新的漏網(wǎng)之魚,但在研究過程中的帶有漏洞的服務(wù)器全部被合理修復(fù)。如圖6所示,在測試中給出我們嗅探這類服務(wù)器的代碼和范例。
圖6 嗅探NTP服務(wù)器
本文所研究的基于NTP反射的DDoS的攻擊方法,破壞力強(qiáng),危害性大,從其流量規(guī)模上來說,可以將其定性為網(wǎng)絡(luò)戰(zhàn)爭的武器。以自動化較高的NTP反射攻擊武器為研究重點(diǎn),旨為更好掌握攻擊的來龍去脈,讓研究攻擊的思維模式逐漸地固定下來。堅(jiān)定地防御、封堵,而非主動攻擊一些非法的數(shù)據(jù)傳輸信道,堅(jiān)信合理地使用網(wǎng)絡(luò)防御技術(shù)可以有力回?fù)舴欠ǖ木W(wǎng)絡(luò)攻擊行為,比如組織交換恐怖襲擊的數(shù)據(jù),控制犯罪分子的網(wǎng)絡(luò)信道等等。隨著我國網(wǎng)絡(luò)用戶日益龐大,使得樹立網(wǎng)絡(luò)主權(quán)的觀念是必要的,因此,只有使得互聯(lián)網(wǎng)攻技術(shù)得到健康發(fā)展,才能讓世界網(wǎng)絡(luò)更加安全。
[1]張錦輝,張文秀.網(wǎng)絡(luò)設(shè)備參與的DDoS防御系統(tǒng)的構(gòu)建與仿真[J].信息技術(shù)與網(wǎng)絡(luò)安全,2019,38(01):1-6.
[2]Radware.DDoS防護(hù)措施是確保應(yīng)用、站點(diǎn)及數(shù)據(jù)可用性的基礎(chǔ)[J].網(wǎng)絡(luò)安全和信息化,2019(03):26-27.
[3]金大剛.智能自動化DDoS防御[J].網(wǎng)絡(luò)安全和信息化,2018(12):20-21.
[4]張宇.應(yīng)用層DDoS攻擊檢測研究[D].南京郵電大學(xué),2018.
[5]劉東.基于改進(jìn)的Adaboost算法在應(yīng)用層DDoS攻擊檢測中的應(yīng)用[A].中國計(jì)算機(jī)用戶協(xié)會網(wǎng)絡(luò)應(yīng)用分會.中國計(jì)算機(jī)用戶協(xié)會網(wǎng)絡(luò)應(yīng)用分會2018年第二十二屆網(wǎng)絡(luò)新技術(shù)與應(yīng)用年會論文集[C].中國計(jì)算機(jī)用戶協(xié)會網(wǎng)絡(luò)應(yīng)用分會:北京聯(lián)合大學(xué)北京市信息服務(wù)工程重點(diǎn)實(shí)驗(yàn)室,2018:4.
[6]金磊.基于大數(shù)據(jù)分析的DDOS檢測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].自動化與儀器儀表,2018(11):121-124.
[7]Hafiz Husnain Raza Sherazi,Razi Iqbal,F(xiàn)arooq Ahmad,Zuhaib Ashfaq Khan,Muhammad Hasanain Chaudary. DDoS attack detection: A key enabler for sustainable communication in internet of vehicles[J]. Sustainable Computing: Informatics and Systems,2019,23.
[8]Rojalina Priyadarshini,Rabindra Kumar Barik. A deep learning based intelligent framework to mitigate DDoS attack in fog environment[J]. Journal of King Saud University - Computer and Information Sciences,2019.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2019年10期