0166 | DNS Resolver ของทรูถูกวางยา

ความจริงเคยเกิดเหตุการณ์อย่างนี้หลายครั้งแล้ว แต่เหมือนว่าไม่มีการปรับปรุงระบบอะไรที่สามารถป้องกันปัญหานี้ได้เลย

วันที่ 5 กันยายนที่ผ่านมา มีรายงานจากผู้ใช้อินเทอร์เน็ตทรูจำนวนมาก ว่าเข้าเว็บไซต์ปกติอยู่ดีๆ ถูกเด้งไปเว็บไซต์ “parking.ps”

ซึ่งส่วนตัวก็เจอบ้างเหมือนกัน อ่านเว็บโน่นนี่นั่นอยู่ดีๆ เด้งไปเว็บนี้หน้าตาเฉย พยายาม view source เว็บที่ดูแล้วก็ไม่มีอะไรผิดปกติ จนปะเข้ากับความเห็นนี้ใน pantip ครับ

ก็เลยนึกขึ้นได้ว่าก่อนหน้านี้ก็เคยมีเหตุการณ์ประมาณนี้บ้างแล้วเหมือนกันคือ (ถ้าจำไม่ผิด) google.co.th โดน poison ไปเว็บโฆษณาอะไรซักอย่าง ที่มีปัญหาเฉพาะคนที่ใช้ DNS resolver ของทรู…

การโจมตีรูปแบบนี้เรียกว่า DNS Cache Poisoning ครับ หลักการคือการอาศัยช่องโหว่ของการทำงานของระบบ DNS ปกติ ที่จะมี DNS resolver เป็นคนที่ “ช่วย” client ในการหาว่า domain ที่ client ต้องการทราบข้อมูล IP (หรือ dns record อื่นๆ) ซึ่งมีขั้นตอนการทำงานประมาณนี้ (ตัวอย่างนะครับ)

  • client ถาม resolver ว่า xxx.com มี IP อะไร
  • resolver ตรวจสอบใน cache ว่ามีข้อมูลอยู่แล้วรึเปล่า ถ้ามีก็ตอบไปเลย
  • ถ้าไม่มี resolver ก็จะไล่ถามมาตั้งแต่ root server (ด้วย root hint record ภายใน resolver เอง) > gtld server (ที่ได้รับจาก root server) > auth server ของโดเมน

ไล่เป็น Hierachy ได้ประมาณนี้

ซึ่งการทำงานนี้ เมื่อ resolver ได้ผลลัพท์จาก authoritive server (สีฟ้าๆ) มาแล้ว มันก็จะ cache ผลลัพท์นั้นๆ ไว้ที่ตัวเองจนกว่าจะหมดอายุตามที่ auth server ตอบมา เพื่อความเร็วในการตอบ client ครั้งต่อๆ ไปจะได้ไม่ต้องไปถามซ้ำ

ด้วยการที่ DNS ทำงานบน protocol UDP ทำให้เราสามารถปลอมแปลง packet ได้ง่าย ผู้ไม่ประสงค์ดีก็จะสามารถส่งข้อมูลปลอมๆ ตอบไปหา resolver แทนได้ถ้าสามารถคาดเดาข้อมูลการ request DNS ของ resolver ได้ (ซึ่งไม่ยากเลย…) และเมื่อปลอมได้แล้ว resolver ก็จะเก็บข้อมูลปลอมๆ นั้นไว้กับตัวเอง จนกว่าจะหมดอายุที่ระบุไว้ตามข้อมูลปลอมๆ นั้น

พอ client ได้ ip ผิด มันก็เลยติดต่อไปหา server ผิดตัว ทำให้ได้รับข้อมูลผิดกลับไป เป็นเหตุให้เกิดเหตุการณ์ประมาณนี้ขึ้นมานั่นเองครับ

วิธีป้องกัน… จริงๆ มันมีมาตรฐาน DNSSEC ที่ช่วยป้องกันการปลอมแปลงข้อมูลพวกนี้อยู่น่ะนะครับ แต่… แทบจะไม่ค่อยมีใครใช้กันซักเท่าไหร่ เพราะตั้งค่ายาก+ซับซ้อนพอควร
บวกกับจริงๆ แล้ว resolver ที่ใช้ software ใหม่ๆ จะมีระบบป้องกัน DNS poisoning ด้วยหลายๆ เทคนิคประกอบกันทำให้การโจมตีแบบนี้ยากขึ้นมาก (แต่ก็ยังเป็นไปได้) ล่ะนะ

ปล. เขียนตอนง่วงๆ อาจอ่านไม่รู้เรื่องนะครับ (ฮา)

Tags: ,

0165 | นั่งรถไฟฟ้าสุดสายด้วยเงิน 15 บาท

ก่อนอื่นลืมๆ entry ที่แล้วไปก่อน 555+ เจอของน่าสนใจมากกว่ามาอันนึงครับ

“วิธีขึ้นรถไฟฟ้าสุดสาย ด้วยเงิน 15 บาท”

ทริคนี้เป็นเรื่องช่องโหว่ของระบบนิดหน่อยครับ คือเนื่องจากการคำนวณค่าเดินทางเนี่ย จะคำนวณจากระยะจากสถานีที่เข้า ถึงสถานีที่ออก ก็เลยสามารถทำแบบนี้ได้ครับ

  1. ซื้อตั๋วเที่ยวเดียว ราคาถูกที่สุด (15-16 บาท)
  2. ขึ้นสถานีที่ 1 ลงสถานีที่ 2 (ที่ติดกัน)
  3. ขอแลกตั๋วเที่ยวเดียว กับตั๋วเที่ยวเดียวของใครก็ได้ ถามเค้าด้วยว่าเค้านั่งมาจากสถานีไหน ยิ่งไกลยิ่งดี (ย้ำ เฉพาะตั๋วเที่ยวเดียวนะครับ ตั๋ววัน ตั๋วเดือน ตั๋วเติมเงินไม่ได้นะ)
  4. คนที่ได้ตั๋วไปก็ออกจากสถานีได้ตามปกติ … เพราะระบบมองว่าบัตรนั้นนั่งมา 1 สถานี
  5. เราก็เอาตั๋วเค้าไปขึ้นต่อ ออกสถานีที่ไม่เกินจำนวนเงินของตั๋วใบนั้นที่เค้าซื้อ

มี comment บอกว่า ถ้าขึ้นจากหมอชิต ลงสะพานควาย แลกกับคนที่ขึ้นมาจากสยามก็ไปได้เกือบทุกสถานีแล้ว…

ถ้าไม่รีบ ขำๆ หน้าตาดูเป็นมิตร และอัธยาศัยดี อยากใช้วิธีนี้ก็ตามสบายละกันครับ…
แต่อย่าให้ยามจับได้นะ …