What is the ARP (Address Resolution Protocol)

บทนำ (Overview)

สืบเนื่องจากบทความ “How to sniff the passwords using Cain and Abel” นั้น มีเนื้อหาทางทฤษฎีเกี่ยวข้องกับช่องโหว่ของ “ARP protocol” ซึ่งนำไปสู่การวางยา “ARP poisoning” และโจมตีที่เรียกว่า “man-in-the-middle attacks” เราจึงนำเสนอหลักการของ โปรโตรคอล “ARP” แบบง่าย ๆ ดังต่อไปนี้

ARP (Address Resolution Protocol)

  • ARP เป็นโปรโตคอล (TCP/IP Protocol) ที่ใช้ค้นหาว่าเครื่องที่มี “IP address” เช่น “192.168.0.12” มีหมายเลข “MAC address” คืออะไร เช่น “C4-17-FE-FF-FF-FF” เป็นต้น
  • วิธีการค้นหา “MAC address” โดยใช้ “IP address” แสนธรรมดา ก็แหกปากถาม (ARP request) มันทุกเครื่องที่มีอยู่ในเครือข่ายนั้นแหละ (Broadcast packet)
  • จากนั้นทุกเครื่องก็จะได้ยินข้อความสอบถาม จากเครื่องที่แหกปาก “เฮ๊ย!!! 192.168.0.12 นี้มันใครฟร่ะ”
  • จาก นั้นแต่ละเครื่องจะเปรียบเทียบ “IP address” ของตนเองกับ “Destination: IP address” ถ้ามันตรงกันก็จะตอบกลับไปว่า “ข้อยเองแหละ!!!” (ARP reply)

เฮ๊ยย!! ไอพี 192.168.0.12 นี้มันใครฟร่ะ? (ARP Query and Reply)

arpprotocol
ขั้นตอนการทำงานของ ARP protocol
  • ก่อนจะติดต่อสื่อสารระหว่างเครื่อง A กับ เครื่อง B สมมติว่าเราเป็นเครื่อง A
  • เครื่อง A จะอ่านหาข้อมูล “MAC address” ของ เครื่อง B ที่ “ARP table”
    A  192.168.0.2   C4-17-FE-FF-FF-F5
    C  192.168.0.3   C4-17-FE-FF-FF-F6
    
  • “ARP table” ของเครื่อง A จะอยู่ที่เครื่อง A โดยจะถูกจดจำ เพิ่ม ลบ แก้ไข โดย “Operating System” เช่น “Windows” หรือ “Linux”
  • ถ้าพบจะทำการสื่อสารได้เลย แต่ปัญหาคือถ้าไม่พบจำเป็นต้องถามทุกเครื่องตามที่กล่าวข้างต้น
  • โดยทางเทคนิคข้อความในการแหกปากถามจะประกอบไปด้วย
    • Source: MAC address = ของเราเอง (C4-17-FE-FF-FF-F5)
    • Source: IP address = ของเราเอง (192.168.0.2)
    • Destination: IP address = ของเป้าหมาย (192.168.0.12)
  • ในความเป็นจริงนั้น แต่ละเครื่องจะเชื่อมผ่านอุปกรณ์ ที่เรียกว่า “Switch” หรือ “WiFi router” ที่เราใช้เชื่อมต่อ Internet นั้นแหละ และข้อความแหกปาก (Broadcast packet) จาก “IP address” ต้นทาง ก็จะผ่าน “Switch” แล้วค่อยส่งไป ทุกเครื่องที่อยู่ใต้เครือข่ายเดียวกัน
  • เจาะ ลงไปอีก เมื่อข้อความแหกปาก (Broadcast packet) มาถึง “Switch” ตัว “Switch” จะทำการอ่าน “Source: MAC address” เพื่อเปรียบเทียบตารางในหน่วยความจำของ “Switch” ว่ามีหรือยัง? ถ้าไม่มี จะเพิ่มเข้าไป
  • เพราะฉะนั้นข้อความแหกปาก (Broadcast packet) ก็จะผ่าน “Switch” และตัว “Switch” ก็เป็นคนกระจายข้อความแหกปากเสียเองด้วย
  • เครื่อง B เมื่อทราบว่าเฮ๊ย !! 192.168.0.12 เป็นของเราแล้วก็จะจำ “IP” และ “MAC address” ของ A ใน “ARP table” เช่นกัน
    B  192.168.0.12  C4-17-FE-FF-FF-F7
    A  192.168.0.2   C4-17-FE-FF-FF-F5
    
  • จากนั้นเครื่อง B ก็จะตอบกลับเครื่อง A เพียงเครื่องเดียวว่า ชั้นนี้แหละ 192.168.0.12 มีรัยฟร่ะ???
    • Source: MAC address = ของเราเอง (C4-17-FE-FF-FF-F7)
    • Source: IP address = ของเราเอง (192.168.0.12)
  • ข้อความของ “ARP reply” ก็จะกลับมาที่ “Switch” และ และ “Switch” จะเพิ่มข้อมูลใน “ARP table” เพื่อใช้งานติดต่อสื่อสารต่อไป
  • หลังจากนั้นจึงสามารถติดต่อสื่อสารกันได้

ใส่ความเห็น