0139 | DDoS : DNS Amplification Attack

บทความนี้เป็นส่วนหนึ่งของเนื้อหาเกี่ยวกับ DDoS (Distributed Denial of Service) หรือการพยายามโจมตีเพื่อให้เครื่องแม่ข่ายล่มครับ
ซึ่งจะทยอยเขียนตามอารมณ์และโอกาส และถ้าโดนยิงบ่อยๆ ก็จะเขียนบ่อยขึ้น (เอ๊ะยังไง?)

สำหรับ DNS Amplification Attack (หรืออาจเรียกว่า DNS Reflection Attack) นี้เป็นวิธีการโจมตีแบบใช้ตัวตายตัวแทนครับ
จริงๆ แล้วเรื่องนี้ค่อนข้างเก่าพอสมควร เพราะเป็นวิธีการโจมตีเครือข่ายที่ทำง่าย และป้องกันได้ยากมากวิธีนึงครับ โดยมีแผนผังการโจมตีดังนี้


(ภาพประกอบจาก CloudFlare blog)

สาเหตุที่เรียกว่า DNS Amplification หรือ DNS Reflection Attack นั้นก็มาจากลักษณะของการโจมตีครับ ด้วยตัวพื้นฐานของระบบ DNS นั้นจะใช้ protocol UDP ซึ่งเป็นการรับส่งข้อมูลแบบ stateless คือสามารถส่งข้อมูลออกไปได้ตั้งแต่ packet แรกที่ส่ง ดังนั้นจึงเกิดการปลอมแปลงได้ง่ายมากครับ โดยผู้โจมตีจะทำการปลอมแปลงเป็น IP ของเหยื่อ แล้วระดมส่งคำร้องขอทำการ resolve DNS ไปยัง DNS Server ที่ต่างๆ

และเมื่อ DNS Server ได้รับคำร้องแล้ว ก็จะตอบกลับไปหา IP ของเหยื่อ (ตามที่ผู้โจมตีปลอมมา) ทำให้เหยื่อได้รับ packet DNS ปริมาณมหาศาลตามลักษณะของรูปด้านบนครับ และที่บอกว่าเป็น Amplification Attack เพราะรูปแบบของคำร้อง DNS เหล่านี้ส่วนมากจะเป็น packet สั้นๆ แต่ขนาดของ packet ที่ DNS server จะต้องตอบกลับไปมีขนาดใหญ่มาก ทำให้ bandwidth ของเครื่องที่ถูกโจมตีเต็มได้ครับ

สำหรับวิธีป้องกันอาจแบ่งออกเป็นสองส่วนคือ ส่วนของ bandwidth และส่วนของการทำ stateful inspection ครับ คือหาเครื่อง firewall หรือ server ที่รองรับ bandwidth ปริมาณมากกว่าการโจมตีให้ได้ก่อน แล้วจึงทำการ drop ข้อมูลการถาม DNS แบบ stateful ครับ โดยตั้งให้ว่าถ้า firewall ไม่เจอคำร้องสำหรับ DNS request นั้น ให้ทำการ drop reply ที่ได้รับนั้นทิ้งไปประมาณนี้ครับ

iptables -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP

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

Tags: ,