Clear
Lead Graphic Papers

Man-in-the-Middle 102 - Part 2 : DNS Spoof

ผู้เขียน: เสฏฐวุฒิ แสนนาม
วันที่เผยแพร่: 31 ส.ค. 2555
ปรับปรุงล่าสุด: 31 ส.ค. 2555

Share on Facebook Share on Twitter Share on Google+

จากที่ผู้เขียนได้นำเสนอถึงวิธีการโจมตีแบบ Man-in-the-Middle และได้อธิบายการโจมตีด้วยวิธี ARP Spoof ไปแล้วในบทความก่อนหน้า จะสังเกตได้ว่า การโจมตีโดยวิธี Man-in-the-Middle นั้น เป็นการใช้ช่องโหว่ของการตรวจสอบข้อมูลที่รับส่ง ซึ่งทำให้ผู้ไม่หวังดีสามารถแทรกตัวเข้ามาเพื่อดักรับหรือปลอมแปลงข้อมูลที่อยู่ระหว่างการสื่อสารได้ ในบทความ Man-in-the-Middle 102 ตอนที่ 2 นี้จะกล่าวถึงการโจมตีด้วยวิธี DNS Spoof หรือการปลอมแปลง DNS

DNS คืออะไร

เครื่องคอมพิวเตอร์ในระบบอินเทอร์เน็ต จะติดต่อสื่อสารกันผ่านทาง IP Address เช่น 122.248.233.179 เป็นต้น ซึ่งหาก IP Address ดังกล่าวนี้เป็นของเครื่องเซิร์ฟเวอร์ที่ให้บริการเว็บไซต์ ผู้ใช้ก็สามารถพิมพ์ IP Address นี้ลงในช่อง Address Bar ของเบราว์เซอร์เพื่อเข้าถึงเว็บไซต์นี้ได้ แต่อย่างไรก็ตาม การใช้ IP Address ในการเข้าถึงเว็บไซต์นั้นจำยากและไม่สะดวกในการใช้งาน จึงมีการคิดค้นสิ่งที่เรียกว่า Domain Name ขึ้นมา ซึ่งเป็นการใช้ชื่อที่เป็นตัวอักษรที่มีความหมายในการเรียกแทน IP Address เช่น www.thaicert.or.th สามารถใช้เรียกแทน IP Address 122.248.233.179 ได้ เป็นต้น การทำงานของระบบดังกล่าวนี้เปรียบได้กับการจดบันทึกรายชื่อผู้ติดต่อลงในสมุดโทรศัพท์ ซึ่งเป็นการแทนที่หมายเลขโทรศัพท์ด้วยชื่อของผู้ติดต่อที่จำง่ายกว่า โพรโทคอลที่ใช้ในการสืบค้น Domain Name เพื่อหา IP Address ที่สัมพันธ์กับ Domain Name นั้น เรียกว่า Domain Name System (DNS) [1]

การทำงานของ DNS

เพื่อให้เข้าใจหลักการทำงานของ DNS ง่ายขึ้น จะขออธิบายลำดับการทำงานของเครื่องคอมพิวเตอร์เมื่อผู้ใช้ต้องการเข้าใช้งานเว็บไซต์ไทยเซิร์ต โดยเมื่อผู้ใช้พิมพ์ www.thaicert.or.th ที่ช่อง Address Bar ของเบราว์เซอร์ จะมีการทำงานดังนี้

1. ค้นหาข้อมูลจากไฟล์ hosts
ไฟล์ hosts เป็นไฟล์ที่ใช้สำหรับกำหนดค่า IP Address และ Domain Name โดยปกติแล้วระบบปฏิบัติการต่างๆ จะเก็บไฟล์ hosts ไว้ที่ตำแหน่งดังนี้

  • Windows อยู่ที่ Windows\System32\drivers\etc\hosts
  • Mac OS X อยู่ที่ /private/etc/hosts
  • Linux อยู่ที่ /etc/hosts
ไฟล์ hosts เป็นไฟล์ข้อความธรรมดา สามารถใช้โปรแกรม Text Editor เปิดขึ้นมาเพื่อดูหรือแก้ไขได้ ดังรูปที่ 1 อย่างไรก็ตาม การแก้ไขไฟล์ดังกล่าวนี้สามารถทำได้เฉพาะผู้ที่มีสิทธิของผู้ดูแลระบบ เท่านั้น หากเครื่องคอมพิวเตอร์ไม่พบข้อมูลของ www.thaicert.or.th ในไฟล์ hosts ก็จะไปค้นข้อมูลจาก DNS Table

Pp2012te0012-1.jpg
รูปที่ 1 ตัวอย่างข้อมูลในไฟล์ hosts ในระบบปฏิบัติการ Windows 7

2. ค้นหาข้อมูลจาก DNS Table
DNS Table หรือ DNS Cache ใช้ในการเก็บข้อมูล Domain Name และ IP Address ที่เคยค้นหามาแล้ว เพื่อที่จะได้ไม่ต้องสอบถามกับ DNS Server เมื่อต้องการเรียกใช้งาน Domain Name นี้อีกในครั้งถัดไป การตรวจสอบข้อมูลใน DNS Table สามารถทำได้ดังนี้

  • Windows ใช้คำสั่ง ipconfig /displaydns
  • Mac OS X ใช้คำสั่ง dscacheutil -cachedump -entries
  • Linux โดยปกติแล้วจะไม่มีการทำ DNS Table แต่ในบาง Distro อาจมีการติดตั้งโปรแกรมเพิ่มเติมเพื่อมาจัดการในส่วนนี้ เช่น โปรแกรม nscd (Name Service Cache Daemon)

Pp2012te0012-2.jpg
รูปที่ 2 ตัวอย่างข้อมูล DNS Table ในระบบปฏิบัติการ Windows 7

หากเปิดเครื่องขึ้นมาใหม่ ระบบจะยังไม่มีข้อมูลใน DNS Table เครื่องคอมพิวเตอร์จะต้องสอบถามกับ DNS Server เพื่อขอทราบ IP Address ของ Domain Name นั้น

3. ค้นหาข้อมูลจาก DNS Server
DNS Server เป็นเครื่องเซิร์ฟเวอร์ที่มีฐานข้อมูลของ Domain Name และ IP Address โดยปกติแล้วการตั้งค่า DNS Server จะถูกกำหนดมาให้จาก ISP หรือ Router ในตอนที่ผู้ใช้เชื่อมต่อเข้ากับระบบเครือข่าย ตัวอย่างการตั้งค่า DNS Server เป็นดังรูปที่ 3 อย่างไรก็ตาม ผู้ใช้สามารถกำหนดการตั้งค่า DNS Server เองได้

Pp2012te0012-3.jpg
รูปที่ 3 ตัวอย่างการตั้งค่า DNS Server ในระบบปฏิบัติการ Windows 7

ในการทำงาน เมื่อเครื่องของผู้ใช้ส่ง DNS Query ไปหา DNS Server ผ่าน UDP Port 53 โดยระบุ Domain Name ที่ต้องการหาข้อมูล เครื่องเซิร์ฟเวอร์จะค้นหา Domain Name นั้นในฐานข้อมูล หากพบก็จะส่ง DNS Response ตอบ IP Address กลับไปให้ [2] ตัวอย่าง DNS Query และ DNS Response เป็นดังรูปที่ 4

Pp2012te0012-4.jpg
รูปที่ 4 ตัวอย่าง DNS Query และ DNS Response (ที่มา WindowsSecurity.com)

อย่างไรก็ตาม ขั้นตอนการทำงานของ DNS นั้นไม่มีการตรวจสอบความถูกต้องของข้อมูลที่รับส่ง จึงเป็นช่องโหว่ให้ผู้ไม่หวังดีโจมตีผ่านจุดนี้ได้โดยการทำ DNS Spoof

DNS Spoof

การทำ DNS Spoofing หรือ DNS Cache Poisoning คือการเปลี่ยนข้อมูลของ DNS ให้วิ่งไปที่ IP Address ปลายทางที่อื่นที่ไม่ใช่ของจริง ซึ่งวิธีการโจมตีแบบนี้จะสังเกตเห็นความผิดปกติได้ยาก เนื่องจากใน Address Bar ของเบราว์เซอร์จะแสดง URL ที่ถูกต้อง แต่เว็บไซต์ปลายทางนั้นไม่ใช่เว็บไซต์ที่แท้จริง จุดประสงค์หลักๆ ของการโจมตีด้วยวิธีนี้อาจจะเป็นการขโมยข้อมูลหรือเพื่อเผยแพร่มัลแวร์ [3] ตัวอย่างการโจมตีด้วยวิธี ARP Spoof เช่น

แก้ไขไฟล์ hosts
เนื่องจากไฟล์ hosts เป็นไฟล์ข้อความธรรมดา จึงสามารถใช้โปรแกรม Text Editor เปิดขึ้นมาแก้ไขได้ ดังนั้นหากมีการแก้ไขไฟล์ดังกล่าวโดยใส่ Domain Name และ IP Address ที่ไม่มีอยู่จริงลงไป ก็จะไม่สามารถเข้าใช้งานเว็บไซต์ที่มี Domain Name ดังกล่าวได้ หรือหากมีผู้ไม่หวังดีแก้ไขไฟล์ hosts โดยให้ Domain Name ของเว็บไซต์ใดๆ ชี้ไปที่ IP ของเว็บไซต์อื่นก็สามารถทำได้เช่นกัน ซึ่งการแก้ไขข้อมูลในไฟล์ hosts เพื่อให้ชี้ไปที่เว็บไซต์อื่น อาจเกิดจากการกระทำของผู้ไม่หวังดีหรืออาจเกิดจากมัลแวร์ก็ได้

จากช่องโหว่ดังกล่าวนี้ ทาง Microsoft จึงได้เพิ่มระบบป้องกันการแก้ไขไฟล์ hosts ใน Windows 8 โดยจะมีโปรแกรม Windows Defender คอยตรวจสอบว่ามีการแก้ไขค่า DNS ของเว็บไซต์สำคัญๆ เช่น Facebook.com ในไฟล์ hosts หรือไม่ หากพบก็จะลบข้อมูลนั้นออกเพื่อให้ป้องกันไม่ให้ผู้ใช้ถูกหลอกลวงจากเว็บไซต์ปลอม อย่างไรก็ตาม ผู้ใช้ยังสามารถปิดการทำงานของระบบดังกล่าวนี้ได้ [4] การปลอมแปลง DNS ด้วยการแก้ไขไฟล์ hosts เรียกว่า Local DNS Spoofing

กำหนดค่าให้ติดต่อไปยัง DNS Server ปลอม
เนื่องจากการทำงานของ DNS ต้องมีการติดต่อไปยัง DNS Server เพื่อขอข้อมูล IP Address ของเว็บไซต์ที่ต้องการเข้าชม ดังนั้นจึงมีผู้ไม่หวังดีพัฒนามัลแวร์ขึ้นมาเพื่อเปลี่ยนแปลงการตั้งค่า DNS Server ในเครื่องของผู้ใช้ให้วิ่งมาที่เครื่อง DNS Server ของผู้สร้างมัลแวร์ ตัวอย่างมัลแวร์ที่โจมตีด้วยวิธีการนี้ เช่น DNS Changer [5]

ส่ง DNS Response ปลอม
เนื่องจากการติดต่อขอข้อมูล IP Address จากเครื่อง DNS Server จำเป็นต้องมีการส่ง DNS Request ออกไปแล้วรอให้เซิร์ฟเวอร์ตอบ DNS Response กลับมา ในระหว่างที่กำลังรอคำตอบจากเครื่อง DNS Server อยู่นั้น หากมีผู้ไม่หวังดีส่ง DNS Response ตอบ IP Address ที่ไม่ถูกต้องกลับมาให้ เครื่องคอมพิวเตอร์ก็จะเข้าใจว่าคำตอบนั้นเป็น IP Address จริงของ Domain Name ที่ต้องการติดต่อด้วย ตัวอย่างโปรแกรมที่ใช้ในการโจมตีด้วยวิธีนี้ เช่น dsniff หรือ ettercap ดังรูปที่ 5 การโจมตีด้วยวิธีการส่ง DNS Response ปลอม เรียกว่า Remote DNS Spoofing

Pp2012te0012-5.png
รูปที่ 5 ตัวอย่างโปรแกรม ettercap

การตรวจสอบและป้องกัน

การตรวจสอบว่าถูกโจมตีด้วยวิธี DNS Spoof หรือไม่นั้นอาจทำได้ยาก เนื่องจากเป็นวิธีการโจมตีที่แนบเนียนและแทบจะไม่เห็นความผิดปกติ อย่างไรก็ตาม ผู้ใช้อาจตรวจสอบข้อมูลจากไฟล์ hosts ของเครื่องว่ามีการตั้งค่า Domain Name ที่มีลักษณะผิดปกติบ้างหรือไม่ รวมทั้งอาจตรวจสอบจากการตั้งค่า DNS Server ในเครื่องด้วย

นอกจากนี้ ผู้ใช้สามารถกำหนดการตั้งค่า DNS Server ให้ใช้ข้อมูลจาก Public DNS Server ที่เชื่อถือได้ เช่น OpenDNS หรือ Google Public DNS เป็นต้น ตัวอย่างการตั้งค่าการเชื่อมต่อให้ใช้ Google Public DNS Server เป็นดังรูปที่ 6

Pp2012te0012-6.png
รูปที่ 6 การกำหนดค่าให้ใช้ DNS Server ของ Google

อ้างอิง

  1. http://www.howtogeek.com/122845/htg-explains-what-is-dns/
  2. http://www.windowsecurity.com/articles/understanding-man-in-the-middle-attacks-arp-part2.html
  3. http://resources.infosecinstitute.com/dns-hacking/
  4. http://www.howtogeek.com/122404/how-to-block-websites-in-windows-8s-hosts-file/
  5. http://www.thaicert.or.th/alerts/corporate/2012/al2012co0006.html

Clear