Clear
Lead Graphic Papers

DDoS: DNS Amplification Attack

ผู้เขียน: ธงชัย ศิลปวรางกูร
วันที่เผยแพร่: 6 เมษายน 2556
ปรับปรุงล่าสุด: 17 เมษายน 2556

Share on Facebook Share on Twitter Share on Google+

ตั้งแต่ช่วงกลางเดือนมีนาคม 2556 ที่ผ่านมา มีการรายงานข่าวใหญ่เกี่ยวกับระบบของหน่วยงาน Spamhaus Project ซึ่งเป็นหน่วยงานไม่แสวงหากำไร ที่มีภารกิจหลักในการจัดการปัญหาข้อมูลไม่พึงประสงค์บนอินเทอร์เน็ต โดยที่ระบบของ Spamhaus นั้นถูกโจมตีในรูปแบบ Distributed Denial-of-Service (DDoS) เป็นระยะ ๆ ส่งผลให้เว็บไซต์ spamhaus.org และบริการอีเมลของ Spamhaus ไม่สามารถใช้งานได้ชั่วขณะ จนถึงปัจจุบันยังไม่มีกลุ่มบุคคลใดออกมาประกาศว่าเป็นผู้อยู่เบื้องหลังการโจมตีในครั้งนี้ แต่มีการสันนิษฐานว่าเหตุการณ์ดังกล่าวอาจมีจุดเริ่มต้นมาจากเหตุขัดแย้งระหว่าง Spamhaus และ Cyberbunker ซึ่งเป็นผู้ให้บริการ Hosting ในประเทศเนเธอร์แลนด์ เมื่อ Spamhaus ทำการบล็อก IP address ของเซิร์ฟเวอร์ที่อยู่ภายใต้การดูแลของ Cyberbunker เนื่องจากสงสัยว่าเซิร์ฟเวอร์เหล่านั้นเป็นฐานในการส่งสแปม ทำให้เกิดการตอบโต้การกระทำดังกล่าว [1]

เบื้องหลังของการโจมตี

สิ่งที่น่าสนใจเกี่ยวกับเหตุการณ์นี้ นอกจากจะเป็นหนึ่งในการโจมตีประเภท DDoS ที่รุนแรงที่สุดเท่าที่มีการค้นพบมาแล้ว ประเด็นเกี่ยวกับเทคนิคที่ใช้ในการโจมตีก็เป็นอีกสิ่งหนึ่งที่ควรนำมาเป็นกรณีศึกษา โดยพบว่าผู้ที่ทำการโจมตีในครั้งนี้ ใช้เทคนิคที่เรียกว่า DNS amplification attack (มีอีกชื่อหนึ่งว่า DNS reflection attack) ดังรูปที่ 1 ซึ่งเป็นวิธีการส่ง DNS request ไปยัง DNS resolver ที่ต่าง ๆ โดยปลอมแปลง IP address ต้นทางในแพ็คเก็ตเป็น IP address ของระบบเป้าหมาย ทำให้ DNS response ที่ตอบกลับมาจาก DNS resolver นั้น ถูกส่งไปยังระบบเป้าหมายแทนที่จะเป็นผู้โจมตี ยิ่งมีการส่ง DNS request ในทำนองนี้เป็นจำนวนมากเท่าใด ก็จะมี DNS response ตอบกลับไปยังระบบเป้าหมายมากยิ่งขึ้น จนกระทั่งถึงจุดหนึ่งที่ทำให้ Network bandwidth ของระบบเป้าหมายมีไม่เพียงพอต่อปริมาณข้อมูลจำนวนมากที่ได้รับ ส่งผลให้ระบบเป้าหมายไม่สามารถให้บริการกับผู้ใช้รายอื่น ๆ ได้

Pp2013te002-1.jpg
รูปที่ 1 รูปแบบโดยทั่วไปของการโจมตีด้วยเทคนิค DNS amplification attack

สาเหตุสำคัญที่ทำให้การโจมตีด้วยเทคนิคนี้มีประสิทธิภาพคือ ขนาดของ Response ที่มักใหญ่กว่า Request มาก โดย Request ที่ส่งไปยัง DNS resolver นั้น ถึงแม้ว่าจะมีขนาดข้อมูลโดยทั่วไปที่เล็กมากเพียงไม่กี่สิบไบต์ แต่ Response ที่ตอบกลับมาอาจมีขนาดใหญ่กว่า Request ที่ส่งไปถึงหลายสิบเท่าได้ ดังนั้นผู้โจมตีจึงไม่จำเป็นต้องมี Botnet [2] ขนาดใหญ่ไว้ในครอบครองเพื่อใช้สั่งการโจมตีระบบเป้าหมายพร้อม ๆ กัน ก็สามารถทำให้การโจมตีนั้นมีความรุนแรงอย่างมากได้ อย่างไรก็ตาม ต้นตอของปัญหาที่แท้จริงที่เอื้ออำนวยให้ผู้ไม่หวังดีสามารถใช้เทคนิคการโจมตีแบบ DNS amplification attack ได้ผลเป็นอย่างดีจนเป็นที่นิยมในปัจจุบันนั้นคือ Open DNS resolver ซึ่งหมายถึงเซิร์ฟเวอร์หรืออุปกรณ์เครือข่ายใด ๆ ก็ตามที่เปิดให้บริการ DNS และมีการตั้งค่าอย่างไม่เหมาะสม โดยอนุญาตให้ผู้บุคคลทั่วไปสามารถใช้บริการได้ แทนที่จะจำกัดการใช้งานให้เฉพาะกับผู้ที่ได้รับอนุญาต ผู้ไม่หวังดีจึงสามารถค้นหา Open DNS resolver ที่มีอยู่ทั่วไปในอินเทอร์เน็ต และใช้ประโยชน์จากมันในการโจมตีระบบอื่น ๆ ด้วยเทคนิคดังกล่าวได้อย่างง่ายดาย

Pp2013te002-2.jpg
รูปที่ 2 จำนวน IP address ที่ไม่ซ้ำของ Open DNS resolver ที่ไทยเซิร์ตได้รับรายงานในแต่ละเดือน ระหว่างเดือน ก.ย. 2555 ถึงเดือน มี.ค. 2556

จากข้อมูลที่ไทยเซิร์ตได้รับรายงานจากหน่วยงานต่างประเทศตั้งแต่เดือนกันยายน 2555 จนถึงเดือนมีนาคม 2556 พบว่ามีจำนวน IP address ของ Open DNS resolver ที่อยู่ในประเทศไทยเฉลี่ยประมาณวันละ 1,000 หมายเลข และมีจำนวน IP address ที่ไม่ซ้ำรวมกันสูงถึงหลักหมื่นต่อเดือนดังรูปที่ 2 ส่วนรายงานผลการสำรวจของเว็บไซต์ dns.measurement-factory.com เมื่อวันที่ 16 เมษายน 2556 [3] พบว่า จำนวน Open DNS resolver ที่อยู่ภายใต้การดูแลของหน่วยงานในประเทศไทยมีจำนวน 947 หมายเลขจาก 59 หน่วยงานซึ่งประกอบไปด้วยผู้ให้บริการอินเทอร์เน็ต หน่วยงานภาครัฐและเอกชน และสถาบันการศึกษา ในขณะที่ CloudFlare ผู้ที่ให้บริการ Content Delivery Network (CDN) กับ Spamhaus ได้ตรวจสอบการโจมตีที่เกิดขึ้นกับ Spamhaus และพบว่า Open DNS resolver ในประเทศไทยที่ถูกใช้เป็นฐานในการโจมตีระบบของ Spamhaus มีจำนวนทั้งสิ้นถึง 898 หมายเลข [4] ทำให้สามารถสันนิษฐานในเบื้องต้นได้ว่า Open DNS resolver ส่วนใหญ่ในประเทศไทยนั้นถูกผู้ไม่หวังดีนำไปใช้เป็นเครื่องมือในการโจมตีผู้อื่นแล้ว ดังนั้นปัญหาที่เกิดจากการตั้งค่าบริการ DNS ที่ไม่เหมาะสมนั้น ถือเป็นเรื่องสำคัญที่ควรดำเนินการแก้ไขอย่างเร่งด่วน

การตรวจสอบหา Open DNS resolver

วิธีการตรวจสอบเบื้องต้นว่ามีอุปกรณ์ในเครือข่ายของตนที่เป็น Open DNS resolver หรือไม่ สามารถตรวจสอบได้จากหลากหลายเว็บไซต์ดังนี้

1. ตรวจสอบจากเว็บไซต์ openresolverproject.org [5]

สามารถตรวจสอบได้โดยการระบุ IP subnet ที่ต้องการตรวจสอบในหน้าเว็บหลัก หากมี IP address ใดที่ถูกพิจารณาว่าเป็นหมายเลขของอุปกรณ์ที่มีลักษณะเป็น Open DNS resolver หมายเลขดังกล่าวก็จะปรากฏอยู่ในตารางผลลัพธ์ดังรูปที่ 3

Pp2013te002-3.jpg
รูปที่ 3 ผลลัพธ์ที่ได้จากการค้นหา Open DNS resolver จาก IP subnet ที่ระบุ

2. ตรวจสอบจากเว็บไซต์ dns.measurement-factory.com [6][7]

เว็บไซต์ dns.measurement-factory.com นอกจากจะมีรายงานผลการสำรวจของ Open DNS resolver แล้ว ยังเปิดบริการให้กับบุคคลทั่วไปสามารถตรวจสอบหา Open DNS resolver ได้อีกหลายช่องทาง โดยช่องทางแรกของเว็บไซต์นี้เป็นการตรวจสอบหาว่า IP address ใดบ้างที่ถูกพิจารณาว่าเป็น Open DNS resolver [6] เริ่มจากการระบุ IP address หรือ IP subnet ที่ต้องการตรวจสอบ จากนั้นเว็บไซต์จะขึ้นรายการอีเมลที่ต้องการรับผลการตรวจสอบ ซึ่งอีเมลเหล่านี้จะได้มาจากข้อมูลที่ระบุไว้ใน Whois record ของ IP address หรือ IP subnet ที่ทำการตรวจสอบ เมื่อเลือกอีเมลที่ต้องการแล้วจะพบกับหน้าต่างยืนยันการส่งผลการตรวจสอบ ดังรูปที่ 4

Pp2013te002-4.jpg
รูปที่ 4 หน้าต่างยืนยันการส่งผลการตรวจสอบไปยังอีเมลที่เลือกไว้

อีกช่องทางหนึ่งของเว็บไซต์ dns.measurement-factory.com เป็นการตรวจสอบหา Open DNS resolver จากรายการของ IP address [7] โดยหลังจากที่ระบุรายการของ IP address ที่ต้องการตรวจสอบแล้ว จะได้ผลลัพธ์แสดงทางหน้าเว็บไซต์ หากผลลัพธ์ในคอลัมน์ Status เป็น open แสดงว่าเครื่องที่มี IP address ดังกล่าวเข้าข่ายที่จะเป็น Open DNS resolver ดังรูปที่ 5

Pp2013te002-5.jpg
รูปที่ 5 หน้าต่างแสดงผลลัพธ์ของการตรวจสอบบนเว็บไซต์

3. ตรวจสอบจากเว็บไซต์ dnsinspect.com [8]

เป็นเว็บไซต์หนึ่งที่ใช้สำหรับตรวจสอบการทำงานของ DNS server อย่างละเอียด โดยเมื่อระบุโดเมนเนมผ่านทางหน้าเว็บหลักแล้ว เว็บไซต์ดังกล่าวจะประมวลผลและจัดทำรายงานแสดงผลการตรวจสอบในแต่ละส่วน ซึ่งรวมถึงส่วนที่ตรวจสอบว่า DNS server อนุญาตให้ทำการ Query แบบ Recursive ได้หรือไม่ดังรูปที่ 6

Pp2013te002-6.jpg
รูปที่ 6 ส่วนหนึ่งของรายงานผลการตรวจสอบที่ได้จากเว็บไซต์ dnsinspect.com

นอกจากการตรวจสอบด้วยตนเองจากเว็บไซต์ต่าง ๆ แล้ว Team Cymru ซึ่งเป็นหน่วยงานวิจัยทางด้าน Information security ยังเปิดบริการให้กับผู้ดูแลระบบสามารถขอรับรายงานประจำวันของ Open DNS resolver ที่อยู่ภายในเครือข่ายของตนได้อีกด้วย [9]

การแก้ไขการตั้งค่าของ DNS server

สำหรับวิธีแก้ไขการตั้งค่า DNS server เพื่อป้องกันไม่ให้ถูกนำไปใช้ในทางที่ไม่ดี และบรรเทาความเสียหายที่เกิดจากการโจมตีในเบื้องต้นนั้น มีอยู่ด้วยกันหลายแนวทางดังที่จะกล่าวต่อไปนี้

BIND เวอร์ชัน 9 ขึ้นไป

ในกรณีของ DNS server ที่ตั้งอยู่ในระบบขององค์กรที่ทำหน้าที่เป็น Caching name server ให้จำกัดการอนุญาตการทำ Recursion เฉพาะ Request ที่ส่งมาจากกลุ่มผู้ใช้ในระบบเครือข่ายเดียวกัน โดยมีตัวอย่างการตั้งค่าดังรูปที่ 7

Pp2013te002-7.jpg
รูปที่ 7 ตัวอย่างการตั้งค่าเพื่อจำกัดการอนุญาตการทำ Recursion ในโปรแกรม BIND

จากรูปที่ 7 ในส่วนของ acl จะมีการสร้างรายการที่ชื่อว่า trustednet ซึ่งประกอบไปด้วย IP subnet ของเครือข่ายภายใน (ในที่นี้คือ 10.10.1.0/24 และ 10.10.2.0/24) และในของ view เป็นการเพิ่มเงื่อนไขให้ IP subnet ในรายการดังกล่าวสามารถทำ Recursion ได้ ส่วน IP address หรือ IP subnet อื่น ๆ นอกเหนือจากที่ระบุไว้จะไม่สามารถทำการ Query ใด ๆ ได้ดังที่ระบุในส่วนของ options สำหรับการตั้งค่าจริงนั้น ผู้ดูแลระบบสามารถเพิ่มการตั้งค่าลงในไฟล์ named.conf โดยใช้ตัวอย่างจากรูปที่ 7 ได้เลย เพียงแค่เปลี่ยนค่าในส่วนของ acl ให้เป็น IP address, IP subnet หรือชื่อของ acl รายการอื่นที่เป็นของระบบเครือข่ายภายในเท่านั้น

สำหรับกรณีที่ DNS server ทำหน้าที่เป็น Authoritative name server ให้เพิ่มการตั้งค่าในไฟล์ named.conf เพื่อปิดการทำงาน Recursion ดังรูปที่ 8

Pp2013te002-8.jpg
รูปที่ 8 ตัวอย่างการตั้งค่าเพื่อปิดการทำงาน Recursion ในโปรแกรม BIND

ทั้งนี้ผู้อ่านสามารถศึกษารายละเอียดเพิ่มเติมเกี่ยวกับแนวทางการตั้งค่าในโปรแกรม BIND ให้มีความมั่นคงปลอดภัยได้จากเอกสารของ Team Cymru [10]

Windows Server 2003 ขึ้นไป

ในการตั้งค่าเพื่อปิดการทำงาน Recursion ผ่านทาง GUI นั้น มีขั้นตอนดังต่อไปนี้

  1. เปิดโปรแกรม DNS Manager โดยไปที่ Start > All Programs > Administrative Tools > DNS
  2. คลิกขวาบนเซิร์ฟเวอร์ที่ต้องการแล้วเลือก Properties
  3. ในหน้าต่างใหม่ เลือกแท็บ Advanced แล้วติ๊กเครื่องหมายถูกที่รายการ Disable recursion (also disables forwarders) แล้วคลิก Apply ดังรูปที่ 9

Pp2013te002-9.jpg
รูปที่ 9 ตัวอย่างการตั้งค่าเพื่อปิดการทำงาน Recursion บน Windows Server

สำหรับการตั้งค่าเพื่อปิดการทำงาน Recursion ผ่านทาง Command-line สามารถทำได้ผ่านโปรแกรม Command Prompt โดยใช้คำสั่ง dnscmd ดังรูปแบบต่อไปนี้

dnscmd <ip-address>|<hostname> /Config /NoRecursion {0|1}

โดย Parameter ตัวแรกหลังจากคำสั่ง dnscmd ให้ระบุ IP address หรือ Hostname ของ DNS server ส่วน Parameter ตัวสุดท้ายให้ระบุเป็นเลข 0 หรือ 1 โดยเลข 0 หมายถึงเปิดการทำงาน Recursion ส่วนเลข 1 หมายถึงปิดการทำงาน Recursion เมื่อใช้คำสั่งดังกล่าวจะได้ผลลัพธ์ดังรูปที่ 10

Pp2013te002-10.jpg
รูปที่ 10 ตัวอย่างผลลัพธ์ที่ได้จากการใช้คำสั่ง dnscmd

นอกจากการตั้งค่าเพื่อปิดหรือจำกัดการทำงาน Recursion แล้ว ผู้ดูแลระบบยังสามารถทำการตั้งค่า DNS Response Rate Limiting (RRL) ซึ่งเป็นความสามารถที่อนุญาตให้ผู้ดูแลระบบ สามารถกำหนดจำนวนครั้งที่ DNS server สามารถตอบผลลัพธ์ที่เหมือนกันกลับไปยังผู้ร้องขอรายหนึ่ง ๆ ได้มากที่สุดในแต่ละวินาที ทำให้ช่วยลดปริมาณข้อมูลที่ DNS server ตอบกลับไปยังผู้ร้องขอได้ในระดับหนึ่ง ซึ่งหมายถึงการช่วยลดผลกระทบที่เกิดจากการนำ DNS server ไปใช้ในการโจมตีด้วยเทคนิค DNS amplification attack ดังที่อธิบายไว้ในตอนแรก ทั้งนี้ผู้ที่ต้องการกำหนดค่าดังกล่าวกับ DNS server ที่ตนเองดูแลอยู่นั้น ควรมีความรู้เข้าใจ รวมถึงสามารถตรวจสอบและแก้ไขการทำงานของโปรแกรมที่ทำหน้าที่ให้บริการ DNS ได้เป็นอย่างดี เนื่องจากการใช้ความสามารถนี้ มีความจำเป็นที่จะต้องอัพเกรดเวอร์ชันหรือติดตั้งแพทช์ของโปรแกรม ซึ่งอาจส่งผลกระทบต่อการทำงานของระบบได้ในกรณีที่ติดตั้งไม่ถูกวิธี ปัจจุบันความสามารถดังกล่าวเริ่มมีให้เลือกใช้ในหลายโปรแกรมแล้ว ไม่ว่าจะเป็น BIND, Knot DNS หรือ NSD และกำลังอยู่ในขั้นตอนการพัฒนาเพื่อรองรับโปรแกรมตัวอื่น ๆ เช่นกัน ผู้ที่สนใจสามารถศึกษาวิธีการติดตั้งและตั้งค่า Rate limiting ได้จากเว็บไซต์ Red Barn [11]

อ้างอิง

  1. http://nakedsecurity.sophos.com/2013/03/28/massive-ddos-attack-against-anti-spam-provider-impacts-millions-of-internet-users
  2. https://www.etda.or.th/etda_website/files/1/files/Malware.pdf
  3. http://dns.measurement-factory.com/surveys/openresolvers/ASN-reports/20130416.html
  4. http://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack
  5. http://openresolverproject.org
  6. http://dns.measurement-factory.com/cgi-bin/openresolverquery.pl
  7. http://dns.measurement-factory.com/cgi-bin/openresolvercheck.pl
  8. http://www.dnsinspect.com
  9. http://www.team-cymru.org/Services/Resolvers
  10. http://www.cymru.com/Documents/secure-bind-template.html
  11. http://www.redbarn.org/dns/ratelimits
Clear