0175 | โจมตี transparent proxy ด้วย dns cache poisoning

อันนี้เขียนลง blognone ครับ ก๊อปกลับมาลง blog ตัวเองอีกที

ระบบอินเทอร์เน็ตมีพื้นฐานอยู่บนบริการหลายๆ อย่างทำงานร่วมกัน ในเงื่อนไขหลักที่ถือว่า “ข้อมูลที่อีกฝ่ายตอบมาเป็นความจริง” เป็นหลัก โดยบริการที่สำคัญมาก (และเป็นช่องโหว่ในการโจมตีมากเป็นอันดับต้นๆ) ในอินเทอร์เน็ตมีอยู่สองอย่างเท่านั้นครับ คือ routing และ DNS คือถ้าสามารถโจมตีสองอย่างในขนาดใหญ่มากๆ ได้ ก็อาจทำให้อินเทอร์เน็ตทั้งโลก หรือส่วนหนึ่งส่วนใดมีปัญหาได้เลยครับ

Routing นั้นเป็นส่วนของการแลกเปลี่ยนข้อมูลเส้นทาง และใช้หาเส้นทางในการรับ-ส่งข้อมูลกันระหว่างคู่ของหมายเลข IP (ต้นทาง – ปลายทาง) และ DNS เป็นส่วนที่ทำให้หมายเลข IP มี “ชื่อ” ที่สามารถออกเสียง และพูดถึงได้โดยง่าย รวมถึงหน้าที่ในการระบุบริการของโดเมนอย่างอื่นอีก ซึ่งจะขอไม่พูดถึงเพื่อลดความซับซ้อน โดยการใช้งานหลัก (ที่เป็น traffic ส่วนใหญ่ของการใช้งาน DNS) คือการทำหน้าที่แปลงว่า “ชื่อ” ใดๆ มีหมายเลข IP ที่เป็นที่อยู่จริงๆ ที่ไหน

ในส่วนของ DNS ก็ยังมีการแยกชนิดออกไปอีกเป็น 3 ส่วนคือ Root/TLD server, authoritive server และ resolver โดยการทำงานคร่าวๆ คือ เครื่องผู้ใช้งานจะถาม resolver ว่า “ชื่อโดเมน” นี้มีหมายเลข IP ใด จากนั้น resolver จะไปหาจากข้อมูลที่เคยถูกถามแล้วตัวเองจำไว้ (cache) ถ้าไม่เจอก็จะถามไปยัง Root/TLD Server เพื่อหา authoritive server ต่อไปเรื่อยๆ

upic.me

เมื่อ client ได้รับหมายเลข IP จาก resolver แล้ว client ก็จะดำเนินการเชื่อมต่อไปยังเครื่องที่หมายเลข IP ดังกล่าวอีกครั้ง เพื่อที่จะติดต่อรับส่งข้อมูลใดๆ กัน แต่หากการเชื่อมต่อใดๆ ถูกดักไว้ด้วย transparent proxy ตัว client จะมองว่า transparent proxy คือ server ตัวหนึ่ง และในขณะเดียวกัน ตัว transparent proxy นี้ก็จะกลายเป็น client ที่ทำหน้าที่เชื่อมต่อกับ server ตัวจริงอีกครั้งด้วย

upic.me

นั่นหมายความว่า ในกรณีดังกล่าว transparent proxy จะต้องทำการ “ถาม” resolver เพื่อหาว่าชื่อโดเมนปลายทางที่ต้องการเชื่อมต่อนั้นคือหมายเลข IP อะไรอีกครั้ง

ในระบบของ DNS เนื่องจากตัวมันเองทำงานด้วยโปรโตคอล UDP ซึ่งไม่มีการยืนยันตัวตน และมีการปลอมแปลงข้อมูลต้นทางได้ง่าย ทำให้มีช่องโหว่หนึ่งชื่อ DNS Cache Poisoning คือการปลอมข้อมูลที่ resolver ได้รับจาก authoritive server เพื่อให้ข้อมูลหลังจากนั้นเป็นหมายเลข IP ที่ไม่ถูกต้อง ทำให้เมื่อมี transparent proxy เข้ามาในระบบจึงเกิดเป็นช่องโหว่ที่รุนแรงกว่ากันมาก เมื่อเทียบกับการที่ client ยังสามารถเปลี่ยน resolver ไปใช้ของบริการภายนอกที่น่าเชื่อถือ (เช่น Google DNS หรือ OpenDNS)

upic.me

จากกระบวนการนี้ ขั้นตอนส่วนที่มีปัญหาคือการที่ resolver ที่ transparent proxy เรียกใช้งานถูกปลอมแปลงข้อมูลได้ และไปรับข้อมูลจากเครื่องเซิร์ฟเวอร์ปลอม (spoof source) แทนที่ authoritive sever ของโดเมนดังกล่าว ขั้นตอนที่ 9 ที่เป็นสีแดงที่ควรจะเป็นจึงถูก resolver มองข้ามไป แล้วนำข้อมูลปลอมตอบกลับให้แก่ transparent proxy ในการนี้ผู้ไม่ประสงค์ดีจำเป็นต้องทราบว่า resolver ตัวดังกล่าวคือหมายเลข IP อะไรเพื่อที่จะโจมตีให้ได้

จากนั้นเมื่อ transparent proxy ทำการดึงข้อมูลจาก server ปลอมดังกล่าวแล้ว ตัว transparent proxy ก็จะทำการ cache ข้อมูลดังกล่าวไว้ด้วย เพื่อที่จะส่งให้แก่ผู้ใช้คนอื่นๆ ที่มีการร้องขอข้อมูลไฟล์เดียวกัน ทำให้ผู้ใช้หลายๆ รายได้รับข้อมูลปลอมไปพร้อมๆ กันโดยไม่เกี่ยวกับการตั้งค่า resolver ที่ client ใดๆ ทั้งสิ้นครับ

ในการนี้ ผู้ไม่ประสงค์ดีสามารถโจมตี resolver ในระยะเวลาสั้นมากๆ เพื่อไม่ให้เป็นที่ผิดสังเกตจนสามารถตามหาเครื่องที่เก็บ malware เจอได้ แล้วให้ transparent proxy ผู้ถูกหลอกนี้เป็นผู้ปล่อย malware แทน ทำให้ตรวจสอบได้ยากขึ้นอีกมากครับ

Tags: , ,

0174 | AIS mPay Rabbit

ลองของใหม่ครับ (อันที่จริงเค้าเทสกันมาพักนึงและ เพิ่งเปิดให้คนทั่วไปใช้ได้ไม่กี่วันนี้เอง) หาเรื่องใช้ nfc บนมือถือให้เกิดประโยชน์ซะหน่อย มีไว้แทบไม่เคยได้ใช้…

  • ค่า(เปลี่ยน)ซิม 400 บาท สมัครครั้งแรกได้ mCASH 100 บาทไว้เติมเข้าบัตร rabbit ได้ ควรมี mPAY account อยู่แล้ว
  • มีโปรมือถือให้สมัคร แต่ใช้โปรเดิมก็ได้ http://www.ais.co.th/mpay/aismpayrabbit/privilege01.html
  • พนักงานที่เปลี่ยนให้ควรจะบอกว่าตำแหน่ง nfc ของมือถือที่ใช้อยู่ตรงไหน (ที่ไปทำมาเค้าบอก) และควรจะสาธิตวิธีใช้ฝั่ง mPAY ให้คร่าวๆ — บังเอิญหยิบมากดๆ เองได้หมด
  • แยกกระเป๋าเงินของบัตร rabbit ออกจาก mCASH และของซิม ไม่เกี่ยวกัน เวลาเติมเงิน ต้องเติมเข้า mcash ก่อนแล้วค่อยเติมใส่ rabbit อีกที
  • ช่วงนี้ mPAY มีโปร เติมเงินเข้า mCASH ผ่านการตัดบัญชีธนาคารที่ผูกไว้ ไม่เสียค่าธรรมเนียม ฟรีเดือนละ 5 ครั้งถึงสิ้นปี (ปกติเสีย 5 บาทต่อครั้ง) #aismpayrabbit
  • ข้อดีของ #aismpayrabbit ข้อใหญ่มากคือ จิ้มเติมเงินเข้า rabbit ผ่าน mPAY ได้เลย ไม่ต้องไปต่อคิวเติมเงินที่สถานี BTS ที่บางสถานีก็คิวยาวบรรลัย
  • ยังไม่ได้ลองใช้กับ BTS แต่ลองไปแตะๆ มากับตู้ carrot rewards แล้วโอเคดี แต่อย่าลืมเปิด NFC นะ (หน้าแตกมาแล้วว่าทำไม scan ไม่ติด)
  • สาเหตุที่ต้องเปลี่ยนซิม คือข้างในซิมจะฝังข้อมูล rabbit number มาเพิ่ม อย่าลืมเอาไปลงทะเบียน carrot rewards กันนะครับ

Tags: , , ,