NTP Reply Flood Attack (NTP反射型DDos攻擊)

簡介

NTP Reply Flood Attack NTP射型Ddos攻擊)如下簡稱NTP_Flood是一種利用網絡中NTP服務器的脆弱性(無認證,不等價數據交換,UDP協議),來進行DDos行爲的攻擊,本文將就此種攻擊的產生緣由,利用方法等進行闡述,並使用編程語言(PythonC++)對此攻擊進行實現。html

感謝NSFOCUS的大牛同事們(SCZ,周大同窗,SAI,冰雪風谷)在平常學習工做中的支持。ios

 

NTP服務器

NTP <wbr>Reply <wbr>Flood <wbr>Attack <wbr>(NTP反射型DDos攻擊)原載黑防2011-06

NTP服務器【Network Time ProtocolNTP)】是用來使計算機時間同步化的一種協議,它可使計算機對其服務器或時鐘源(如石英鐘,GPS等等)作同步化,它能夠提供高精準度的時間校訂(LAN上與標準間差小於1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議攻擊。算法

NTP協議

NTPNetwork Time Protocol

網絡時間協議(NTP)是一種經過因特網服務於計算機時鐘的同步時間協議。它提供了一種同步時間機制,能在龐大而複雜多樣因特網中用光速調整時間分配。它使用的是可返回時間設計方案,其特色是:時間服務器是一種分佈式子網,能自我組織操做、分層管理配置,通過有線或無線方式同步邏輯時鐘達到國家標準時間。此外,經過本地路由選擇運算法則及時間後臺程序,服務器能夠從新分配標準時間。編程

NTP 的設計帶來了三種產品 — 時鐘偏移、時間延遲及差量,全部這三種與指定參考時鐘都是相關聯的。時鐘偏移表示調整本地時鐘與參考時鐘相一致而產生的誤差數;時間延遲表示在指定時間內發送消息與參考時鐘間的延時時間;差量表示了相對於參考時鐘本地時鐘的最大誤差錯誤。由於大多數主機時間服務器經過其它對等時間服務器達到同步,因此這三種產品中的每一種都有兩個組成部分:其一是由對等決定的部分,這部分是相對於原始標準時間的參考來源而言;其二是由主機衡量的部分,這部分是相對於對等而言。每一部分在協議中都是獨立維持的,從而可使錯誤控制和子網自己的管理操做變得容易。它們不只提供了偏移和延遲的精密測量,並且提供了明確的最大錯誤範圍,這樣用戶接口不但能夠決定時間,並且能夠決定時間的準確度。服務器

NTP 源於時間協議和 ICMP 時間標誌消息,但其設計更強調精確度和充足性兩個方面,即便是用於網絡路徑上包括多路網關、延遲差量及不可靠網絡。當前使用的最新版是 NTPv3,它與之前的版本兼容。網絡

NTP <wbr>Reply <wbr>Flood <wbr>Attack <wbr>(NTP反射型DDos攻擊)原載黑防2011-06

 

l  LI:跳躍指示器,警告在當月最後一天的最終時刻插入的迫近閨秒(閨秒)。編程語言

l  VN:版本號。分佈式

l  Mode:模式。該字段包括如下值:0-預留;1-對稱行爲;3-客戶機;4-服務器;5-廣播;6NTP 控制信息oop

l  Stratum:對本地時鐘級別的總體識別。學習

l  Poll:有符號整數表示連續信息間的最大間隔。

l  Precision:有符號整數表示本地時鐘精確度。

l  Root Delay:有符號固定點序號表示主要參考源的總延遲,很短期內的位1516間的分段點。

l  Root Dispersion:無符號固定點序號表示相對於主要參考源的正常差錯,很短期內的位1516間的分段點。

l  Reference Identifier:識別特殊參考源。

l  Originate Timestamp:這是向服務器請求分離客戶機的時間,採用64位時標(Timestamp)格式。

l  Receive Timestamp:這是向服務器請求到達客戶機的時間,採用64位時標(Timestamp)格式。

l  Transmit Timestamp:這是向客戶機答覆分離服務器的時間,採用64位時標(Timestamp)格式。

l  AuthenticatorOptional):當實現了 NTP 認證模式,主要標識符和信息數字域就包括已定義的信息認證代碼(MAC)信息。

NTP協議指令集

Linux上咱們可使用ntpdc來進行NTP的操做,ntpdc支持不少命令:

 # ntpdc -n -i time.org.za

ntpdc> ?

ntpdc commands:

addpeer      controlkey   fudge        keytype      quit         timeout

addrefclock  ctlstats     help         listpeers    readkeys     timerstats

addserver    debug        host         loopinfo     requestkey   traps

addtrap      delay        hostnames    memstats     reset        trustedkey

authinfo     delrestrict  ifreload     monlist      reslist      unconfig

broadcast    disable      ifstats      passwd       restrict     unrestrict

clkbug       dmpeers      iostats      peers        showpeer     untrustedkey 

 


不等價交換的DDos利用

Listpeers指令與monlist指令

 

Listpeers指令,列出目標NTP服務器的peersNTP Servers

NTP <wbr>Reply <wbr>Flood <wbr>Attack <wbr>(NTP反射型DDos攻擊)原載黑防2011-06

Monlist指令,能夠獲取與目標NTP Server進行過同步的最後600個客戶機IP。這意味着,一個很小的請求包,就能獲取到大量的活動IP地址組成的連續UDPwireshark抓包以下圖:

NTP <wbr>Reply <wbr>Flood <wbr>Attack <wbr>(NTP反射型DDos攻擊)原載黑防2011-06

NTP <wbr>Reply <wbr>Flood <wbr>Attack <wbr>(NTP反射型DDos攻擊)原載黑防2011-06
 
   

值得注意的是,截圖顯示的,仍然只是NTP服務器回包中很小的一部分,這次通訊實際的回包比爲173,而數據量大小比爲234 bytes73×482 bytes,約等於1562,計算可獲得,10M的通訊流量能夠獲得5620M的攻擊流量,也就是5G

正是因爲此指令的不等價交換(1562的報酬),UDP協議的通訊模糊性(無三次握手驗證),以及NTP服務器的無認證機制,使得反射型DDos攻擊成爲可能。


 

DDos攻擊程序編寫

來自國外Blogmonlist測試例子:
NTP <wbr>Reply <wbr>Flood <wbr>Attack <wbr>(NTP反射型DDos攻擊)原載黑防2011-06

這個Python腳本的做用是,從指定的服務器使用monlist指令返回的IP地址列表,因爲Linuxntpdc指令超時時間很短,所以不容易返回完整的列表。

使用Python進行攻擊程序的開發

Python 的攻擊代碼由SAI編寫,截圖以下:
NTP <wbr>Reply <wbr>Flood <wbr>Attack <wbr>(NTP反射型DDos攻擊)原載黑防2011-06

使用Winpcap進行攻擊程序的開發

相關文章
相關標籤/搜索