Clear
Lead Graphic Papers

NTP Reflection DDoS attack

ผู้เขียน: พรพรหม ประภากิตติกุล
วันที่เผยแพร่: 31 มีนาคม 2557
ปรับปรุงล่าสุด: 31 มีนาคม 2557

Share on Facebook Share on Twitter Share on Google+

หลายคนคงคุ้นหูกับศัพท์คำว่า NTP หรือที่ย่อมาจากคำว่า Network Time Protocol เป็นโพรโทคอลสำหรับการเทียบเวลามาตรฐานและตั้งค่าเวลาบนเครื่องคอมพิวเตอร์นั้นๆผ่านระบบเครือข่าย ส่วนใหญ่ถูกนำมาใช้ในองค์กรเพื่อช่วยทำให้เวลาในเครื่องคอมพิวเตอร์หรือเครื่องแม่ข่ายนั้นมีค่าตรงกัน โดยรูปแบบการทำงานนั้นแบ่งเป็น 2 ส่วนหลักๆคืออุปกรณ์ที่ให้บริการเทียบเวลา (NTP Server) กับเครื่องคอมพิวเตอร์หรืออุปกรณ์ที่ต้องการเทียบเวลา (NTP Client)  โดยโพรโทคอล NTP นั้นเชื่อมต่อผ่านทางระบบเครือข่ายด้วยโพรโทคอล UDP ผ่านพอร์ต 123 (โพรโทคอล UDP มีความรวดเร็วในการรับส่งข้อมูลแต่ก็มีข้อเสียตรงที่โพรโทคอล UDP ไม่มีการตรวจสอบความถูกต้องของข้อมูลที่รับส่งกันอยู่เหมือน TCP)

NTP เป็นโพรโทคอลที่ได้รับความนิยมมาช้านานตั้งแต่ปี 2528 มีการพัฒนาโดยทีม NTP Project (R&D) [1] สำหรับซอฟต์แวร์ที่ทำงานเป็น NTP Server บนระบบปฏิบัติการ Unix ปัจจุบันได้พัฒนาออกมาถึงเวอร์ชั่น 4.2.6 และกำลังอยู่ในระหว่างการทดสอบสำหรับเวอร์ชั่น 4.2.7 (ในระบบปฏิบัติการอื่นๆเช่น วินโดวส์ ก็มีผู้พัฒนานำซอร์สโค้ดที่อยู่บนเว็บ NTP ไปพัฒนาต่อยอดสำหรับใช้งานเป็น NTP Server บนวินโดวส์ด้วย) รวมถึงในปัจจุบันยังมีอีกหลายบริษัทที่พัฒนาอุปกรณ์ประเภท NTP appliance มาจำหน่วย ซึ่งอุปกรณ์ดังกล่าวสามารถรับสัญญาณจากดาวเทียม GPS ได้โดยตรงส่งผลให้ทำงานในลักษณะที่มีความเที่ยงตรงสูงมาก โดยลักษณะการให้บริการเทียบเวลาของโพรโทคอล NTP แบ่งออกเป็นลำดับชั้น (Clock Strata) และมีการใช้ชื่อเรียกในแต่ละลำดับว่า Stratum เช่น Stratum 0 เป็นต้น ลำดับชั้นที่ยอมรับว่ายังมีความเที่ยงตรงที่สุด คือ Stratum 0-4 หากลำดับชั้นสูงกว่านี้ถือว่าไม่ได้รับการยอมรับตามมาตรฐานที่กำหนดขึ้นมาจากหน่วยงาน ANSI (American National Standards Institute)


รูปที่ 1 แสดงแผนผังรูปภาพการเชื่อมต่อของโพรโทคอล NTP

จากรูปที่ 1 พบว่ามีการแบ่งระดับชั้นของ Stratum ออกเป็นหลายส่วน โดยสามารถอธิบายความแตกต่างของแต่ละ Stratum ดังนี้

Stratum 0 คืออุปกรณ์เทียบเวลาที่ใช้สัญญาณนาฬิกาเป็นตัวอ้างอิง เช่น  GPS เป็นต้น
Stratum 1 คืออุปกรณ์เทียบเวลาที่เชื่อมต่อกับ NTP Server ที่ทำงานใน Stratum 0 มีค่าความคลาดเคลื่อนไม่เกิน 1 มิลลิวินาที
Stratum 2 คืออุปกรณ์เทียบเวลาที่เชื่อมต่อกับ NTP Server ที่ทำงานใน Stratum 1 มีค่าความคลาดเคลื่อนประมาณ 10-100 มิลลิวินาที
Stratum 3 คืออุปกรณ์เทียบเวลาที่เชื่อมต่อกับ NTP Server ที่ทำงานใน Stratum 2
Stratum 4 คืออุปกรณ์เทียบเวลาที่เชื่อมต่อกับ NTP Server ที่ทำงานใน Stratum 3

ในประเทศไทยเอง พบว่ามีผู้ให้บริการเทียบเวลาในระดับ Stratum 1 อยู่หลายหน่วยงานเช่น สถาบันมาตรวิทยาแห่งชาติ และ กรมอุทกศาสตร์กองทัพเรือ เป็นต้น

ลักษณะการใช้งาน NTP แบ่งเป็น 2 ลักษณะใหญ่ๆดังนี้

1. ใช้เพื่อเทียบเวลา

รูปแบบนี้มักเกิดขึ้นกับผู้ใช้งานหรือผู้ดูแลระบบทั่วไปที่ไม่ต้องการความเข้าใจที่มากนักเกี่ยวกับ NTP Server ว่ามีรายละเอียดการทำงานอย่างไร รู้เพียงแค่วิธีการตั้งค่าเทียบเวลาของอุปกรณ์คอมพิวเตอร์ที่ใช้งานอยู่กับ NTP Server หรือเรียกอีกอย่างว่ารู้วิธีการใช้งาน NTP Client กับรู้รายการ NTP Server ที่ต้องการใช้งานเทียบเวลา ซึ่งโดยปกติข้อมูลรายการ NTP Server เป็นข้อมูลที่สามารถค้นหาผ่านระบบ Search engine ได้ไม่ยาก ในประเทศไทยมี NTP Server ที่มีความน่าเชื่อถือในระดับ Stratum 1 หลายหน่วยงานเช่น สำนักมาตรวิทยาแห่งชาติ (NTP Server ชื่อ time1.nimt.or.th) โดยเมื่อรู้ข้อมูลครบทั้ง 2 ส่วนแล้วก็สามารถเทียบและตั้งค่าเวลาในเครื่องคอมพิวเตอร์หรือเครื่องเซิร์ฟเวอร์ที่ใช้งานได้ทันที ตัวอย่าง NTP Client ที่เห็นได้ชัดเช่น Windows Time Server ซึ่งเป็นโมดูลมาตรฐานที่ถูกติดตั้งมาตั้งแต่ Windows 2000 และ Windows XP  สามารถดูตัวอย่างได้จากรูปที่ 2


รูปที่ 2 แสดงตัวอย่างการตั้งค่า NTP Client บนระบบปฏิบัติการ Windows 7

2. ใช้เพื่อเทียบเวลาและเผยแพร่การเทียบเวลา

รูปแบบนี้เกิดขึ้นมักเกิดขึ้นในระดับหน่วยงานที่ต้องการมี NTP Server เป็นของตัวเอง ซึ่งผู้เกี่ยวข้องโดยตรงมักเป็นผู้ดูแลระบบของหน่วยงาน นั่นเท่ากับว่าผู้ดูแลระบบนอกจากจะรู้วิธีการใช้งาน NTP Client แล้ว ยังจำเป็นต้องมีความรู้ความเข้าใจถึงการทำงานของ NTP Server และรูปแบบการเทียบเวลามาตรฐานกับ NTP Server ในระดับ Stratum ต่างๆ เพื่อนำมาสู่กระบวนการตัดสินใจในการทำ NTP Server ที่เป็นของหน่วยงานเอง ซึ่งหากหน่วยงานมีความต้องการความถูกต้องของเวลาที่อยู่ในระดับสูงมาก อาจจำเป็นต้องมีการซื้ออุปกรณ์สำหรับเทียบเวลาผ่านระบบ GPS แต่นั่นเท่ากับต้องลงทุนเงินอีกจำนวนหนึ่ง โดยในหลายหน่วยงานหันมาใช้การเทียบเวลามาจาก NTP Server อื่นๆ ซึ่งเป็นวิธีการที่ง่ายที่สุดสำหรับการทำ NTP Server ไว้ใช้เองภายในหน่วยงาน แต่นั่นเท่ากับ Stratum ก็จะมีการเปลี่ยนแปลงไปอีกขั้นหนึ่งด้วย เช่น การ Sync ข้อมูลกับ NTP Server ที่อยู่ใน Stratum 1 จะทำให้ NTP Server ที่ตั้งขึ้นมี Stratum 2 เป็นต้น โดยในรูปแบบนี้จะมีความเกี่ยวข้องกับเทคนิคการโจมตีซึ่งจะอธิบายในลำดับต่อๆไป

รูปแบบการโจมตี

ถึงแม้โพรโทคอล NTP จะถูกคิดค้นและใช้งานมานาน และถูกนำมาใช้งานอย่างแพร่หลาย แต่เมื่อปลายเดือนธันวาคม 2556 ที่ผ่านมานี้ บริษัท Symantec ได้พบข้อมูลที่น่าสนใจเกี่ยวกับปริมาณการรับส่งข้อมูลที่เพิ่มมากผิดขึ้นจนปกติของการใช้งานโพรโทคอล NTP ซึ่งพบปริมาณการรับส่งข้อมูลด้วยโพรโทคอลนี้มีปริมาณเพิ่มสูงขึ้นอย่างผิดปกติ โดยคาดการณ์ว่าการพบข้อมูลดังกล่าวน่าจะเกิดจากการกระทำการบางอย่างที่ผิดปกติหรืออาจหมายถึงการโจมตีรูปแบบใหม่ก็เป็นได้ โดยจากรูปที่ 2 Symantec ได้เปิดเผยสถิติที่บ่งชี้ว่าช่วงกลางเดือนธันวาคม 2556 มีการใช้ NTP Server ประมาณ 15,000 เครื่อง ซึ่งพบว่ามีความพยายามส่งข้อมูลมหาศาลไปยังระบบต่างๆ และเมื่อทำการวิเคราะห์ลงในเชิงลึกแล้ว ก็ยืนยันได้ว่าเป็นลักษณะของการโจมตีจริง โดยรูปแบบเทคนิคการโจมตีดังกล่าวอาศัยประโยชน์จาก NTP Server ที่ตั้งค่าไม่เหมาะสมหรือต่อไปจะเรียกว่า NTP Server ที่มีช่องโหว่ ซึ่งถูกนำมาใช้เป็นส่วนหนึ่งของการโจมตีในลักษณะ DDoS หรือ Distribute Denial Of Service โดยมีจุดประสงค์ของการโจมตีเพื่อที่ต้องการหยุดยั้งการให้บริการของเครื่องที่ถูกโจมตี ทำให้ไม่สามารถให้บริการหรือทำงานต่อได้ โดยสามารถอธิบายตามตัวอย่างดังรูปที่ 4


รูปที่ 3 บริษัท Symantec ได้เปิดเผยสถิติที่บ่งชี้ว่าช่วงกลางเดือนธันวาคม 2556 มีการใช้ NTP Server ประมาณ 15,000 โจมตีในการโจมตีระบบต่างๆ


รูปที่ 4 แสดงรูปแบบการโจมตีระบบ โดยเทคนิค Reflection DDoS Attack

จากรูปที่ 4 แสดงให้เห็นว่าผู้ไม่ประสงค์ดีสามารถโจมตีเครื่องให้บริการเว็บไซต์แห่งหนึ่งหรือเรียกว่าเครื่องเป้าหมายในลักษณะ DDoS และเป็นที่น่าสังเกตมากคือเทคนิคดังกล่าวสร้างความเสียหายแก่เป้าหมายอย่างรุนแรง โดยสามารถทำสิ่งที่เรียกว่าการขยายปริมาณข้อมูลที่โจมตี (Amplification Attack) โดยการส่ง Packet เล็กๆ (ปริมาณ Packet ละ 8 Bytes) ต่อจำนวนหนึ่งไปยังเครื่อง NTP Server ต่างๆที่มีช่องโหว่ จากนั้นเครื่อง NTP Server เหล่านั้นจะส่งข้อมูลกลับไปยังเครื่องเป้าหมายในปริมาณมหาศาล ส่งผลให้เครื่องเป้าหมายที่ถูกโจมตีต้องรับภาระในการประมวลผลข้อมูลมหาศาล จนสุดท้ายไม่สามารถให้บริการต่อไปได้ โดยในรายละเอียดของการโจมตีเชิงลึกจะกล่าวถึงในรายละเอียดต่อๆไป

รวมถึงเมื่อวันที่ 13 มกราคม 2557 ได้มีการเผยแพร่ข้อมูลการโจมตีระบบของเกมส์ออนไลน์ชื่อดังหลายแห่ง เช่น  Battle.net, EA.com ถูกโจมตีด้วยเทคนิค Reflection DDoS Attack เป็นผลให้ระบบต่างๆต้องหยุดให้บริการในทันที [2] ข้อมูลเพิ่มเติมแจ้งว่าผู้โจมตีใช้ประโยชน์จากเครื่อง NTP ที่มีช่องโหว่ประมาณ 100 เครื่องเพื่อโจมตีระบบของเกมส์ออนไลน์ต่างๆ และพบว่าปริมาณ Bandwidth สูงสุดที่โจมตีในครั้งนี้สูงถึง 100 Gbps ส่วน Bandwidth การโจมตีเฉลี่ยอยู่ที่ 7.3 Gbps และล่าสุดที่พบเกี่ยวกับรูปแบบการโจมตีที่เผยแพร่โดยบริษัท Cloudfare (บริษัทที่ดูแลเครือข่ายใหญ่ที่สุดแห่งหนึ่งของโลก) เกี่ยวกับการโจมตีเครือข่ายในยุโรปที่มีปริมาณการโจมตีสูงสุดถึง 400 Gbps ซึ่งนับว่าเป็นการโจมตีที่สูงที่สุดครั้งหนึ่งของโลก มากกว่าครั้งที่มีการใช้เทคนิค DNS Amplification Attack [3]

ผลกระทบ

เครื่อง NTP Server ที่เปิดให้มีการเรียกใช้งานฟังก์ชั่น “monlist” สามารถถูกใช้เป็นส่วนหนึ่งของการกระทำความผิดในการโจมตีเครื่องให้บริการอื่นๆในลักษณะ Amplification Attack ทันที

วิเคราะห์ NTP Server กับโหมดการทำงานอันตราย

NTP มีโหมดการทำงานที่พัฒนามาสำหรับผู้ดูแลระบบในการตรวจสอบการเข้าใช้งาน NTP Server  ชื่อโมดูลว่า Monitor โดยมีวัตถุประสงค์เพื่อแสดงข้อมูลรายการ NTP Client ที่เชื่อมต่อเข้ามาล่าสุด โดยโมดูลดังกล่าวสามารถแสดงรายการ NTP Client ที่เชื่อมต่อได้สูงสุดถึง 600 รายการไอพีแอดเดรส และตั้งแต่ NTP เวอร์ชั่น 4.2.6 ลงมา มีการตั้งค่าให้โมดูลดังกล่าวทำงานตั้งแต่ต้นได้อยู่แล้ว

การใช้งานโมดูล Monitor ของ NTP Server นั้นสามารถทำได้หลายรูปแบบ ปัจจุบันมีโปรแกรมที่มีโมดูลตรวจสอบข้อมูลในส่วนนี้หลายโปรแกรม เช่น ntpdc, nmap หรือ metasploit เป็นต้น โดยในเอกสารฉบับนี้จะใช้โปรแกรม ntpdc รวมถึง Script ที่พัฒนาขึ้นสำหรับทดสอบ เพื่อให้เห็นรูปแบบการทำงานของการโจมตี

ทดสอบการเรียก Query กับ NTP Server

ส่งคำสั่งเรียกใช้งานฟังก์ชั่น monlist ซึ่งเป็นโมดูลสำหรับการมอนิเตอร์รายละเอียดของ NTP Server เกี่ยวกับรายการที่ NTP Server นั้นๆเคยมีการเชื่อมต่อในลักษณะคล้ายเป็น History โดยการส่งคำสั่งตามด้านล่าง จะพบผลลัพธ์ตามรูปที่ 5

#ntpdc -n -c monlist [NTP SERVER IP]


รูปที่ 5 ตัวอย่างการใช้ฟังก์ชัน monlist

จากรูปที่ 5  แสดงให้เห็นว่าการใช้งานฟังก์ชั่น monlist นั้นสามารถนำมาใช้ในการโจมตีในลักษณะ Amplification attack ได้เป็นอย่างดี สังเกตจาก Response ที่ส่งกลับมาเป็นจำนวนมากเมื่อเทียบกับ ปริมาณข้อมูล Request ที่ส่งออกไปเพียงนิดเดียว ซึ่งจากรูปแบบดังกล่าวทำให้ผู้ไม่ประสงค์ดีนำมาใช้เป็นช่องทางการโจมตีโดยการสร้างการเชื่อมต่อลักษณะที่มีการปลอมแปลงแหล่งที่มาหรือที่เรียกกันว่า Spoofing IP เพื่อปลอมเป็นหมายเลขไอพีที่ต้องการโจมตี จากนั้นใช้หมายเลขไอพีดังกล่าวส่งคำร้องไปยังเครือง NTP Server ที่มีช่องโหว่ เพื่อให้ NTP Server ดังกล่าวตอบกลับมาด้วยปริมาณข้อมูลมากเป็นหลายเท่าตัว

ข้อแนะนำ

พบว่าในซอฟต์แวร์ NTP Server เวอร์ชั่น 4.2.7 (ปัจจุบันยังคงเป็นเวอร์ชั่นที่กำลังพัฒนาเปิดให้ดาวโหลดในลักษณะ Beta) ได้มีการถอนฟังก์ชั่นการทำงานของ ‘monlist” เพื่อแก้ไขปัญหาดังกล่าวด้วย แต่อย่างไรก็ตามสำหรับผู้ดูแลระบบที่ไม่สามารถทำการอัพเดทซอฟต์แวร์ในเวอร์ชั่นดังกล่าวได้ แต่ยังสามารถใช้วิธีการตั้งค่าตามรายละเอียดด้านล่างเพื่อลดผลกระทบจากการโจมตีช่องโหว่ดังกล่าว ในไฟล์การตั้งค่าของ NTP Server (ไฟล์ชื่อ ntp.conf) โดยสามารถเลือกทำข้อใดข้อหนึ่งก็ได้ตามข้อมูลดังต่อไปนี้

1. [ตั้งค่าเพื่อปิดการทำงานของฟังก์ชั่น monlist]

#เพิ่ม

disable monitor

2. [ตั้งค่าเพื่อปิดการเรียกใช้งานฟังก์ชั่นการอ่านค่าต่างๆของ NTP Server]

#เพิ่ม

restrict -4 default nomodify nopeer noquery notrap

restrict -6 default nomodify nopeer noquery notrap

จากนั้นให้ทำการ Restart บริการของ NTP Server เพื่อให้ระบบใช้งานการตั้งค่าใหม่ และทดสอบเรียกใช้งานฟังก์ชั่น monlist ดูอีกครั้ง จะพบว่าไม่สามารถเรียกใช้งานได้อีกต่อไป

อ้างอิง

  1. http://www.ntp.org
  2. http://thehackernews.com/2014/01/ddos-attack-NTP-server-reflection-protection.html
  3. http://thehackernews.com/2014/02/NTP-Distributed-Denial-of-Service-DDoS-attack.html
Clear