利用 NTP DDoS 攻擊(attack) 的新聞整理、偵測 - 2014

NTP (Network Time Protocol) 是網路校時的服務, 可以將系統時間同步, 避免誤差值, 執行時會使用 UDP Port 123. (The Network Time Protocol, or NTP, syncs time between machines on the network, and runs over port 123 UDP)

近日 NTP 被拿來亂 DDoS 的新聞搞的很大, 但是不少人只看新聞標題就造成誤會, 以為 NTP Server 有問題會被攻擊, 所以來做點小整理.

利用 NTP DDoS 攻擊(attack) 的新聞整理、偵測

先看看下述兩篇新聞摘要, 再來做整理分析:

下述摘錄自此篇: 歐洲遭遇史上最大DDoS攻擊,尖峰攻擊流量達400Gbps - iThome

  • 去年遭受阻斷式服務攻擊的Spamhaus也是CloudFlare的客戶,當時攻擊的尖峰流量為300Gbps,差點癱瘓歐洲網路。這次攻擊流量約400Gbps以上,且影響最大的地區在歐洲。不過媒體引用一家法國代管業者表示,攻擊峰值為350Gbps。
  • CloudFlare執行長Matthew Prince本周一在Twitter上指出,他們正遭受NTP(Network Time Protocol)類型的阻斷式服務攻擊,規模大過於Spamhaus。
  • NTP類型的阻斷式服務攻擊技術與DNS類型的攻擊相仿,都是一種只要以簡單的小小要求就能造成系統龐大回應的UDP(User Datagram Protocol)類型協定。只是前者所利用的是網路時間協定。駭客以偽造的IP位址並透過受害者的電腦傳送封包到網路上具即時回覆功能的伺服器上,由於IP位址是假的,造成伺服器持續不斷傳送資料予受害者。這會產生兩種效果,一是很難追蹤實際的攻擊來源,二是當利用很多網路伺服器時,受害者可能會被來自全球伺服器的資料量淹沒,更嚴重的是,駭客即使只傳送小的假冒封包,也能引發伺服器的大量回應。
  • 美國電腦緊急應變小組(US-CERT)今年也曾警告,特定UDP類型的協議已成為潛在的攻擊媒介。UDP為一非連線式服務,傳訊的主機間不必建立工作階段,也不需保證或是認可傳輸,亦不會針對資料進行排序,它傳輸快速,可支援點對點及單點對多點的通訊,包括DNS、NTP或BitTorrent都屬於UDP。
  • US-CERT指出,若駭客將許多UDP封包的位址都設為同一個,那麼當網路上的伺服器在回應這些封包時,就會形成反射性的阻斷式服務攻擊(Reflected Denial of Service Attack)傳統的DoS攻擊是駭客直接將大量封包傳給受害者,現在則是藉由小封包就能創造數百倍的頻寬攻擊流量,因而亦被稱為放大攻擊(Amplification Attack)

下述摘錄自此篇: 美國安局警告:透過定時伺服器 NTP 的新 DDoS 駭客攻擊手法

  • 今年初曾經爆發一起針對遊戲伺服器的大規模攻擊事件,包括 EA Origin、《英雄聯盟》、Valve 的《Dota 2》甚至是 Battle.Net 等遊戲服務都因為遭到攻擊而無法運作。
  • 此大規模攻擊事件的起源之一,就是來自於一個專以實況遊戲著名的玩家「Phantomlord」(台灣暱稱為鬼王),在 Twitch 實況平台展示玩遊戲的時候,被一個稱為 DERP 的駭客集團盯上,當鬼王在進行《英雄聯盟》的時候,駭客就將該遊戲的伺服器擊垮,讓他沒辦法順利進行遊戲,當鬼王準備換到《Dota 2》進行遊戲時,DERP 再度用 DDoS 攻擊該遊戲伺服器打垮。
  • 到底這個 DDoS 攻擊手法有何不同?
    • 這次的 DDoS 事件卻完全不同,駭客已經不再利用殭屍網路等方式進行攻擊,而是利用偽裝欺瞞(spoofing)的方式,讓全世界的校時伺服器(Network Time Protocol Server,簡稱 NTP)同時對伺服器傳輸大量資料,讓伺服器收到大量非自行發出的校時需求封包而掛點。
    • 全世界有許多 NTP 服務存在,而相較於其他的安全措施,許多伺服器容易在這個方面掉以輕心,而駭客就是利用此點,偽裝需求封包傳給這些伺服器,讓他們傳輸大量不必要的校時需求封包,而伺服器就會因為承載不住如此大量的封包而當機。
    1. 據科技新報採訪資安專家陳昱崇 Zero Chen 表示:「如果各企業有使用校時伺服器的需要,建議可以建構中控校時伺服器,僅透過中控伺服器對外進行校時並且做好相關存取限制,僅允許連結至設定的目標伺服器並不提供給外部進行校時,內部待校時之伺服器一律設定連至中控伺服器進行校時,且做好相同之存取限制。
    2. 「如此將可減少成為Reflection DDoS幫兇之風險,但若是自身遭受這類型的攻擊,倘若企業所具備之網路流量及設備無法承受,只有通知ISP及TWCERT等單位協助處理,畢竟真要防禦DDoS攻擊只有透過國內外各ISP協防才是最有效的防治方式。」

NTP DDoS 攻擊自問自答

以下幾個問題自問自答, 不過有部分是自我理解, 有錯還請大家糾正:

  • NTP Server 有問題, 所以架設 NTP Server 會被攻擊?
    • 不會, 不是 NTP Server 被攻擊, 而是 NTP Server 被利用拿來攻擊別人.
  • 攻擊方式是怎麼做的呢? 什麼是 放大攻擊 (Amplification Attack)?
    • 偽裝要攻擊的 假IP, 將此 假IP 填入 UDP 的 Source IP 欄位, 然後送給 NTP Server, 於是 NTP Server 就會將時間的資料送到那個 假IP, 當這個量很大時, 那個 假IP 就會被打爆 (頻寬吃滿).
    • 因為傳 UDP 一點封包過去, UDP 就會回傳很多資料到指定的 假IP 去, ex: 訊號送一個過去, 卻回來十個訊號, 於是就稱為 放大攻擊 (Amplification Attack).
  • UDP 除了 NTP 外, DNS 也是走 UDP, 也會被用來攻擊別人嗎?
  • TCP 也可以偽裝 IP, 那 TCP 也會被拿來做 放大攻擊 嗎?
    • TCP 也可以拿來做類似攻擊, 但是應該不會被放大, 因為三項握手協議沒有機會完成, 回傳的只是確認封包, 而不會是大量的資料封包.
  • 要如何檢查自己的 NTP 會不會被當做 NTP 放大攻擊的工具?
    • 此專案 - OpenNTPProject.org - NTP Scanning Project - 有說明如何檢查, 也可以於線上直接將 IP 輸入, 會將此網段有問題的 NTP Server 列出.
    • 下述兩個指令, 輸入進 Server 後, 有任何回應(response), 那你的 Server 就有可能被攻擊者拿來使用.
      • ntpdc -n -c monlist 192.0.2.1
      • ntpq -c rv 192.0.2.1
      • 安全回傳的範例 ex:

        $ ntpdc -n -c monlist 192.0.2.1
        192.0.2.1: timed out, nothing received
        ***Request timed out

        $ ntpq -c rv 192.0.2.1
        192.0.2.1: timed out, nothing received
        ***Request timed out

CloudFlare 對此次攻擊的數字化分析報告

CloudFlare 對此次 NTP DDoS 攻擊的數字化分析、預防方式等等新聞、投影片介紹:

DNS、NTP 放大攻擊 Sample、Detect

下述取自此篇: 2014-02-20 聚會手記 - Hacking Thursday - yan

// DNS reflection attack sample
$ dig @DNS_SERVER QUERY_HOST ANY +stats +dnssec

// NTP monlist reflection attack detect
$ cd /usr/share/nmap/scripts
# wget http://nmap.org/svn/scripts/ntp-info.nse
# wget http://nmap.org/svn/scripts/ntp-monlist.nse
# nmap --script-updatedb
# nmap -sU -pU:123 -Pn -n --script=ntp-info time.stdtime.gov.tw
# nmap -sU -pU:123 -Pn -n --script=ntp-monlist time.stdtime.gov.tw

ntp 4.2.7 已移除 monlist
# python
from scapy.all import *
hexdump(NTP(version=2, mode=7, stratum=0, poll=3, precision=42))

NTP 設定檔 (/etc/ntp.conf)

  • NTP 設定 不讓其它台可以來查詢, 可以參考下述設定:

    restrict default ignore
    restrict 0.pool.ntp.org nomodify nopeer noquery notrap
    restrict 1.pool.ntp.org nomodify nopeer noquery notrap
    restrict 2.pool.ntp.org nomodify nopeer noquery notrap
    restrict 127.0.0.1

  • Debian / Ubuntu Linux 的 ntp.conf 建議加上下述:

    restrict default ignore
    restrict 127.0.0.1
    restrict ::1

  • 註: 加上 restrict default ignore

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料