Man-in-the-Middle 102 – Part 1 : ARP Spoof

Man-in-the-Middle 102 – Part 1 : ARP Spoof

ในบทความ Man-in-the-Middle 101 ผู้เขียนได้กล่าวถึงการโจมตีด้วยวิธี Man-in-the-Middle ซึ่งเป็นวิธีการโจมตีที่มีผู้ไม่หวังดีเข้ามาแทรกตรงกลางระหว่างคู่สนทนา ทำให้สามารถรับรู้ข้อมูลที่คู่สนทนากำลังคุยกันอยู่ได้ นอกจากนั้นยังได้กล่าวถึงเทคนิคการโจมตีในรูปแบบต่างๆ ที่นำหลักการ Man-in-the-Middle มาประยุกต์ใช้ เช่น Man-in-the-Browser หรือ Man-in-the-Mailbox เป็นต้น

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

Internet Protocol

การติดต่อสื่อสารในระบบเครือข่ายอินเทอร์เน็ต จะทำผ่าน Internet Protocol (IP) ซึ่งจะใช้ IP Address ในการอ้างถึงอุปกรณ์ที่เชื่อมต่ออยู่ โดยแต่ละอุปกรณ์จะมี IP Address ไม่ซ้ำกัน IP Address ที่ใช้งานอยู่ในปัจจุบันคือเวอร์ชั่น 4 (IPv4) โดยจะประกอบด้วยตัวเลข 4 ชุด แบ่งตามเครื่องหมาย . เช่น 192.168.0.1 แต่เนื่องจากปัญหาของ IPv4 ที่จำนวน IP Address ที่รองรับได้ไม่เพียงพอกับความต้องการใช้งานที่มีเพิ่มมากขึ้นเรื่อยๆ จึงได้มีการพัฒนา IP เวอร์ชั่น 6 (IPv6) ขึ้นมาเพื่อใช้งานแทน โดยประกอบด้วยตัวเลขและตัวอักษร 6 ชุด แบ่งตามเครื่องหมาย : เช่น 2ac1:db8:0:5678:0:123:4:1 [1] เนื่องจาก IP Address เป็นค่าที่ผู้ให้บริการแจกจ่ายให้กับผู้ใช้บริการเมื่อเชื่อมต่อเข้ากับระบบเครือข่าย ดังนั้นค่า IP Address ของแต่ละเครื่องจึงอาจไม่คงที่ เพราะสามารถถูกเปลี่ยนแปลงได้เมื่อมีการเชื่อมต่อใหม่

อุปกรณ์ที่สามารถเชื่อมต่อกับระบบเครือข่ายได้ จะถูกกำหนดค่า MAC (Media Access Control) มาตั้งแต่โรงงานที่ผลิต ซึ่งเป็นค่าประจำตัวที่ใช้ในการอ้างอิงถึงอุปกรณ์นั้นๆ ในทางทฤษฎีแล้ว แต่ละอุปกรณ์จะต้องมีค่า MAC ไม่ซ้ำกัน โดยค่า MAC Address จะประกอบด้วยตัวเลขหรือตัวอักษร 6 ชุด แบ่งตามเครื่องหมาย – หรือ : เช่น 01-23-45-67-89-ab หรือ 01:23:45:67:89:ab [2]

ความสัมพันธ์ระหว่าง IP Address และ MAC Address

เนื่องจาก MAC Address เป็นค่าประจำตัวของอุปกรณ์นั้นๆ และยังสามารถใช้ระบุตัวอุปกรณ์โดยตรงได้ จึงเรียกได้อีกอย่างว่าเป็น Physical Address ในขณะที่ IP Address เป็นค่าที่กำหนดขึ้นมาเพื่อใช้อ้างอิงถึงอุปกรณ์นั้นๆ ในขณะที่เชื่อมต่ออุปกรณ์เข้ากับระบบเครือข่าย จึงเรียกได้อีกอย่างว่าเป็น Logical Address

การส่งข้อมูลใน OSI Layer 2 จะอ้างอิงถึงอุปกรณ์ที่เชื่อมต่ออยู่โดยใช้ MAC Address แต่การส่งข้อมูลใน OSI Layer 3 จะอ้างอิงถึง IP Address ดังนั้นเมื่อเครื่องที่อยู่ในระบบเครือข่าย ต้องการติดต่อกับเครื่องอื่นๆ ที่อยู่ในเครือข่ายเดียวกัน จึงจำเป็นต้องทราบข้อมูล IP Address และ MAC Address ของเครื่องที่จะติดต่อด้วย เพื่อให้สามารถสื่อสารกันได้

ARP คืออะไร

ARP ย่อมาจาก Address Resolution Protocol เป็นโพรโทคอลที่ใช้ในการค้นหา MAC Address ของอุปกรณ์จาก IP Address การทำงานของ ARP หากมีเครื่องในเครือข่ายต้องการติดต่อกับเครื่องอื่น โดยทราบแค่ IP Address แต่ไม่ทราบ MAC Address ของเครื่องปลายทาง เครื่องที่ต้องการติดต่อก็จะส่ง ARP Request แบบ Broadcast ออกไปในเครือข่าย เพื่อสอบถามว่าเครื่องที่มี IP ดังกล่าวมี MAC Address เป็นอะไร พอเครื่องที่มี IP ตรงกับที่ระบุได้รับ ARP Request ก็จะส่ง ARP Reply (หรือ ARP Response) ตอบ MAC Address ของตัวเองกลับไป [3]

สมมุติว่าระบบเครือข่ายมีการเชื่อมต่อดังรูปที่ 1

Pp2012no0012-1.jpg
รูปที่ 1 อุปกรณ์ในระบบเครือข่าย

เมื่อเครื่องคอมพิวเตอร์ A ที่มี IP 192.168.0.2 ต้องการติดต่อกับเครื่องคอมพิวเตอร์ที่มี IP 192.168.0.3 แต่ยังไม่ทราบ MAC Address ของเครื่องปลายทาง จึงส่ง Packet ออกไปในระบบเครือข่ายแบบ Broadcast (Destination MAC เป็น ff:ff:ff:ff:ff:ff) โดยภายใน Packet จะมี ARP Request ที่ระบุ Destination MAC เป็น 00:00:00:00:00:00 ดังรูปที่ 2

Pp2012no0012-2.jpg
รูปที่ 2 เครื่องคอมพิวเตอร์ A ส่ง ARP Request

เมื่อเครื่องคอมพิวเตอร์ B ได้รับ ARP Request และพบว่ามีการระบุ Destination IP เป็น IP Address ของตัวเอง จึงส่ง ARP Reply เพื่อบอก MAC Address ของตัวเองกลับไป ดังรูปที่ 3

Pp2012no0012-3.jpg
รูปที่ 3 เครื่องคอมพิวเตอร์ B ส่ง ARP Reply

เมื่อเครื่องคอมพิวเตอร์ A ได้รับ ARP Reply ก็จะทราบได้ว่าเครื่องคอมพิวเตอร์ที่มี IP 192.168.0.3 มี MAC Address เป็น 00:03:04:cc:dd:ee และจะเก็บข้อมูลที่หาได้ไว้ใน ARP Table หากต้องการติดต่อกับเครื่องที่มี IP 192.168.0.3 อีกในครั้งถัดไป ก็สามารถระบุข้อมูลในช่อง Destination MAC เป็น 00:03:04:cc:dd:ee ได้ทันที

ARP Table หรือ ARP Cache เป็นตารางที่ใช้บันทึกข้อมูลของเครื่องที่เคยติดต่อแล้ว ข้อมูลหลักๆ ที่จัดเก็บคือ IP Address และ MAC Address [4] ตัวอย่าง ARP Table เป็นดังรูปที่ 4 อย่างไรก็ตาม ข้อมูลใน ARP Table จะถูกลบทิ้งเมื่อปิดเครื่องหรือปิดการทำงานของ Interface Card

Pp2012no0012-4.png
รูปที่ 4 ตัวอย่าง ARP Table

หากเป็นการค้นหา IP Address จาก MAC Address จะทำโดยใช้โพรโทคอล RARP (Reverse ARP) ซึ่งมีการทำงานเหมือน ARP แต่ทำตรงข้ามกัน โดยจะระบุ Destination IP เป็น 0.0.0.0 และฝั่งรับก็จะส่ง RARP Reply ตอบ IP Address ของตัวเองกลับมา [5]

ARP Spoof

เนื่องจากการทำงานของ ARP จะมีการส่ง ARP Request ออกไป แล้วรอให้มี ARP Reply ตอบกลับมา ถ้าหากว่าระหว่างที่กำลังรอคำตอบอยู่นั้นมีผู้ไม่หวังดีตอบ ARP Reply ปลอมๆ ส่งไปให้ ผู้ที่ได้รับก็จะไม่สามารถทราบได้ว่า ARP Reply นั้นไม่ได้มาจากตัวจริง และจะบันทึกข้อมูล MAC Address ที่ไม่ถูกต้องนั้นไว้ใน ARP Table การส่ง ARP Reply ปลอมออกไปนั้นเรียกว่า ARP Spoof หรือ ARP Cache Poison [6] [7]

ตัวอย่างการทำ ARP Spoof เครื่องคอมพิวเตอร์ A ส่ง ARP Request ออกไปถามว่าเครื่องที่มี IP Address 192.168.0.1 มี MAC Address เป็นเท่าไหร่ แต่ถูกเครื่องคอมพิวเตอร์ C แย่งส่ง ARP Reply ตอบ MAC Address ของตัวเองมาให้ก่อนที่เครื่องตัวจริงจะตอบ ARP Reply กลับมาได้ทัน ดังนั้นเมื่อเครื่องคอมพิวเตอร์ A ได้รับ ARP Reply ดังกล่าวก็จะเข้าใจว่าเครื่องคอมพิวเตอร์ C เป็นเครื่องที่ต้องการติดต่อด้วยจริง ดังรูปที่ 5

Pp2012no0012-5.jpg
รูปที่ 5 การทำ ARP Spoof

ตัวอย่างโปรแกรมที่สามารถทำ APR Spoof ได้ เช่น ARPspoof, Cain & Abel, Ettercap, Dsniff เป็นต้น จุดประสงค์ของการทำ ARP Spoof มีได้หลากหลาย เช่น อาจจะทำ Man-in-the-Middle เพื่อดักรับข้อมูล หรือบล็อกไม่ให้เครื่องคอมพิวเตอร์ในระบบเครือข่ายเชื่อมต่อกับอินเทอร์เน็ตได้ โดยการส่ง ARP Reply บอก Gateway ปลอมออกไป เป็นต้น ซึ่งวิธีการดังกล่าวนี้ถูกใช้ในโปรแกรมชื่อ NetCut [8]

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

การทำ ARP Spoof จะทำได้ก็ต่อเมื่อเครื่องของผู้โจมตีและเครื่องของเหยื่ออยู่ในเครือข่ายเดียวกัน แต่การตรวจสอบ ARP Spoof ในระบบเครือข่ายนั้นทำได้ยาก เนื่องจากโพรโทคอล ARP ไม่ได้ถูกออกแบบมาเพื่อให้ตรวจสอบความถูกต้องของผู้รับและผู้ส่งตั้งแต่แรก อย่างไรก็ตาม ได้มีผู้พัฒนาเครื่องมือเพื่อช่วยวิเคราะห์ความผิดปกติในระบบเครือข่ายซึ่งอาจเกิดจาก ARP Spoof ได้ เช่น โปรแกรม arpwatch หรือ ArpON เป็นต้น ซึ่งทั้ง 2 โปรแกรมนี้เป็นซอฟต์แวร์ Open Source

การป้องกันตัวเบื้องต้นจาก ARP Spoof สามารถทำได้โดยการทำ Static ARP ซึ่งเป็นการระบุค่า IP Address และ MAC Address ลงไปใน ARP Table ด้วยตนเอง[9] ซึ่งสามารถทำได้โดยใช้คำสั่ง

arp -s <IP ADDRESS> <MAC ADDRESS>

เช่น เครื่องคอมพิวเตอร์ A สามารถเพิ่มเครื่องคอมพิวเตอร์ B ลงใน ARP Table ด้วยการใช้คำสั่งด้านล่าง

arp -s 192.168.0.3 00:03:04:cc:dd:ee

อย่างไรก็ตาม การทำ Static ARP อาจไม่สะดวกในการใช้งานกับระบบเครือข่ายขนาดใหญ่ เพราะหากมีเครื่องคอมพิวเตอร์อยู่ในระบบจำนวนมากก็ต้องเพิ่ม Static ARP ให้กับเครื่องเหล่านั้นในทุกครั้งที่เปิดเครื่อง รวมถึงผู้ที่ใช้งานอินเทอร์เน็ตสาธารณะหรือผู้ที่เชื่อมต่อผ่านบริการอินเทอร์เน็ตของที่พัก (ที่ไม่ใช่ Broadband ส่วนตัว) ก็อาจไม่สามารถทราบข้อมูล IP Address หรือ MAC Address ของเครื่องที่สำคัญในระบบเครือข่าย เช่น Gateway หรือ DNS Server ได้

แหล่งอ้างอิง : http://www.thaicert.or.th/papers/normal/2012/pp2012no0012.html

ใส่ความเห็น