Tutorial

#Hackให้เด็กมันดู : ARP Poisoning

By Arnon Puitrakul - 25 มิถุนายน 2021

#Hackให้เด็กมันดู : ARP Poisoning

วันนี้ขอเปิด Series ใหม่กับเว็บของเราเลยละกัน หลาย ๆ ครั้งเวลาเราบอกว่า เราเรียนคอมพิวเตอร์มา ร้อยละ 90++ มักจะเริ่มมีการตอบสนองกลับมาว่า แฮคเฟสพี่ คนนั้นคนนี้ได้มั้ย คือฮัลโหลล จะบ้าเหรอ แต่เอาหล่ะ ไหน ๆ ก็ไหน ๆ แล้ว วันนี้เรามาเปิด Series เพื่อให้ความรู้ในเรื่องของการโจมตีง่าย ๆ ให้เข้าใจกัน เพื่อเป็นการเปิดตอนแรก เราขอเปิดด้วยการ Sniffing ข้อมูลโดยใช้ ARP Poisoning กัน

ปล. Series นี้เขียนขึ้นเพื่อการศึกษาเท่านั้น ถ้าจะทำโปรดทำในที่ปิด และควบคุมได้ อย่าเอาไปทำในที่สาธารณะเด็ดขาด !!! เตือนแล้วนะ !!!!

เราส่งข้อมูลกันอย่างไรใน Network

ก่อนที่เราจะไปทำความเข้าใจในเรื่องของ ARP Poisioning เรามาทำความเข้าใจถึงวิธีการส่งข้อมูลในระบบ Network กันก่อน

Sending Data via Hub

เวลาเราสื่อสารกันในระบบ Network เราจะต้องใช้อุปกรณ์ตัวนึง ถ้าเป็นสมัยก่อน เราน่าจะใช้ Hub ซึ่งเวลาเราใช้งาน เราก็จะเชื่อมต่ออุปกรณ์ของเราเข้าหามัน และ Hub นี่แหละจะเป็นเหมือนตัวกลางในการส่งผ่านข้อมูลเข้าหากัน เช่น เราต้องการส่งข้อมูลจาก A ไป B

Sending Data via Switch

สิ่งที่ Hub จะทำคือ รับข้อมูลจาก A และทำการแปะป้ายบอกไว้ว่า นี่คือของ B นะ อย่าเ_อก และทำการ Boardcast ออกไปให้อุปกรณ์ที่เหลือ เมื่ออุปกรณ์เหล่านี้ได้ข้อมูลมา ถ้าเป็นคนดีย์ มันก็จะอ่านป้ายก่อนว่า มันเป็นของเรารึเปล่านะ ? ถ้าไม่ เราก็ทิ้งไป แค่นั้น อ่านถึงตรงนี้เราเอ๊ะ อะไรรึเปล่าครับ

Sending Data via Hub

ใช่แล้ว ถ้าเราต้องการที่จะดักข้อมูล เราไม่ต้องทำอะไรเลย เราแค่ดักข้อมูลที่วิ่งเข้าเครื่องเรา และ Filter ด้วยป้ายที่ Hub ทำมาก็ได้หมดแล้ว ได้ทั้ง Network เลยใช่ม่ะ ดังนั้น การใช้ Hub เลยเป็นเรื่องที่ไม่ปลอดภัยเท่าไหร่

ทำให้อุปกรณ์อย่าง Switch ถูกผลิตขึ้นมาเพื่อแก้ปัญหานี้ โดยสิ่งที่ Switch ทำคือ แทนที่มันจะส่งข้อมูลที่แปะป้ายไปให้ทุกคนในวง มันก็เลือกที่จะส่งให้คน ๆ นั้น ๆ เลย ทำให้เราแก้ปัญหาเรื่องความปลอดภัยนี้ได้แน่นอน และยังไม่ทำให้การจราจรใน Network หนาแน่นกว่าที่ควรจะเป็นอีกด้วยละ แล้วมันก็เป็นฝันร้ายของนัก Sniff ข้อมูลเลย เป็นเศร้า

แต่เอ๊ะะะ กันมั้ยว่า แล้ว Hub หรือ Router เขารู้ได้ไงว่า อุปกรณ์ A และ อุปกรณ์ B คือใคร ทำยังไงดีละ ถ้าเราคิดเร็ว ๆ เราอาจจะให้ Router มันให้ตัวเลขสักชุดมั้ยบอกว่า นี่คือใครกันนะ อ่านถึงตรงนี้อาจจะนึงถึง IP Address กันแน่ ๆ

Sending Data via Switch

ใช่แล้ว เวลาเราเชื่อมต่ออุปกรณ์เข้าสู่ระบบ Network ตัว Router มันจะจ่าย IP Address ให้กับอุปกรณ์ (สำหรับอุปกรณ์ที่เปิดการใช้งาน DHCP) หรือ มีการกำหนด IP Address เอง ทำให้ Switch ที่ส่งข้อมูลต่อรู้ละว่า มันจะต้องส่งไป IP Address ไหน อารมณ์เหมือนกับ เราเดินไปบอกว่า โอเค แกชื่อ A นะ แกชื่อ B นะ โดยที่ไม่ถามสักคำว่า จริง ๆ แล้ว A เป็นใคร B เป็นใคร

แล้วถ้าอยู่ ๆ เราทำแบบนั้นเลย มันก็น่าจะเกิดแน่ ๆ ถ้าเกิดว่าอุปกรณ์ A มันออกจาก Network ไป มันก็จะมีชื่อ A ว่างอยู่ และ มีคนเข้ามาใหม่ เออ ชื่อ A ว่าง งั้น แกชื่อ A ไปละกันนะ ปัญหามันเริ่มเกิดแล้วใช่มั้ยฮ่ะ เมื่อเรากลับมาย้อนดูสรุปแล้ว ชื่อ A นี่ผ่านมากี่มือแล้วเนี่ย ยุ่งเลยนะ เพราะการเปลี่ยนได้เนี่ยแหละ ทำให้เราเรียก IP Address ว่า Logical Address หรือเราชอบเรียกว่า Address ทิพย์

Sending Data via Switch

ในเมื่อปัญหานี้มันเกิดขึ้น ทำให้เราต้องมาแก้ปัญหาละ เพราะเอาจริง ๆ  Switch ไม่สามารถเข้าใจได้ว่า IP Address นี้เป็นใครซะทีเดียว มันต้องใช้ Layer ที่ล่างกว่านั้นในการส่งข้อมูลหากัน MAC Address เลยเกิดขึ้น

MAC Address (Media Access Control Address) เป็นชุดตัวเลขที่ฝังมากับ Network Interface Card (NIC) มาเลย โดยที่จะมีตั้งแต่อุปกรณ์ที่เชื่อมต่อผ่านสายอย่าง Ethernet, WiFi และ Bluetooth และอื่น ๆ อีกมากมาย ทำให้ตอนนี้เรามีตัวเลขทั้งหมด 2 ชุดด้วยกัน คือ IP Address และ MAC Address ถามว่า แล้วเราจะ Map 2 ค่านี้เข้าด้วยกันอย่างไรดีละ ตรงนี้แหละ ARP จะเข้ามาช่วย

Address Resolution Protocol (ARP)

Address Resolution Protocol (ARP) คือวิธีการที่ใช้ค้นหา MAC Address จาก IP Address ถ้าเอาง่าย ๆ เลยคือแค่นี้เลย แต่วันนี้เราจะมาเล่นกับ ARP เรามาลองดูในลึกขึ้นถึงการทำงานของมันกันดีกว่า

Address Resolution Protocol (ARP) - Request

เราขอเริ่มจาก Alice ต้องการที่จะส่งข้อมูลถึง Bob ซึ่ง Alice รู้ IP Address ของ Bob อยู่แล้ว แต่ไม่รู้ว่า MAC Address คืออะไร สิ่งที่ Alice จะทำก็คือการขอ MAC Address ของ Bob มานั่นเอง โดยการส่งข้อมูลออกไปเป็น Packet นึงที่มี IP และ MAC Address ต้นทางเป็น Alice, IP ปลายทางเป็น IP ของ Bob แต่ MAC Address เป็น ff:ff:ff:ff:ff:ff ซึ่ง Packet นี้ก็จะถูก Boardcast ไปใน Network หรือก็คือ ส่งให้กับทุกคน

Address Resolution Protocol (ARP) - Reply

ทุกคนในระบบ Network ก็จะได้รับ ARP Request นี้ทุกคน มันก็จะเข้าไปอ่านละว่า เขาเรียกชั้นรึเปล่านะ ถ้าใช่ มันก็จะสร้าง ARP Response กลับไปซึ่งประกอบด้วย Source IP และ MAC เป็นของ Bob ส่วน Destination IP และ MAC ก็จะเป็นของ Alice เพื่อให้ Switch ส่งต่อให้ Alice นั่นเอง

ARP Table

แต่ถ้าเราต้องมานั่งขอแบบนี้กันทุกครั้ง มันก็น่าปวดหัว และใช้เวลาน่าดู ทำให้มันต้องมีการ Cache ไว้ เพื่อให้คราวหน้า เราอยากได้อีก เราก็แค่มาดูที่ตาราง ถ้ามีเราก็เอาเลย ถ้าไม่มี เราก็ขอใหม่ เราเรียกตารางนี้ว่า ARP Table แล้วถามว่า Table นี้มันจะเก็บไว้นานแค่ไหน คำตอบก็คือ จนกว่าเราจะปิดการทำงานของ NIC ตัวนั้น ๆ นั่นเอง

ARP Poisoning หรือ ARP Spoofing

ARP Poisoning or ARP Spoofing
จากรูป เราจะเห็นว่า Alice ส่ง Request ไปเป็นปกติ (1) แทนที่ Bob จะตอบ (2) มีมือที่สามมาตอบก่อนนั่นคือ Linus (3) ทำให้ Alice คิดว่า Linus คือ Bob นั่นเอง

ถ้าอ่านเรื่องของ ARP แล้วลองคิดก่อนว่าถ้าเราอยากจะโจมตี เราสามารถทำยังไงได้บ้าง ลองคิดก่อน โอเคเฉลย ง่ายมาก ๆ ในเมื่อตอนที่ Alice ต้องการรู้ MAC ของ Bob มันจะ Broadcast ARP Request ออกไปในทั้ง Network เราก็ชิงตอบก่อนดิ นี่นะชั้นคือ Bob แหละแค่นั้นเลย หลักการของ ARP Poisoning

ดังนั้น เวลา Alice จะส่งอะไรหา Bob มันก็จะกลายเป็นว่า ข้อมูลก็จะวิ่งไปที่ Linus แทน ซึ่ง การนำไปใช้ได้มีหลายอย่างเช่น การตัดการสื่อสาร สิ่งที่เราต้องทำก็คือ ส่ง ARP Response ให้กับเครื่องเป้าหมายเป็น MAC Address ของ Gateway ทำให้เมื่อ อุปกรณ์นั้น ๆ จะส่งข้อมูลออกไป มันจะไปเจอกับ Gateway ทิพย์ ทำให้ Packet ก็จะโดน Drop หายไป ทำให้เครื่องนั้น ๆ ก็จะเชื่อมต่อ Internet ไม่ได้นั่นเอง ตัวอย่างโปรแกรมแบบ Lagacy เลยก็คือ NetCut

Man-in-the-middle attack (MITM)

นอกจากนั้น เรายังสามารถทำตัวเป็นคนกลางได้อีก ก็คือ บอก Alice ว่าเราคือ Bob และบอก Bob ว่าเราคือ Alice ดังนั้น เวลา Alice จะส่งข้อมูลหา Bob และขากลับ มันก็จะผ่าน Linus ก่อน เหมือนกับเราเป็นคนกลาง เราเรียกการโจมตีแบบนี้ว่า Man-in-the-Middle Attack นั่นเอง ทำให้เราจับการคุยกันของ Alice และ Bob ได้หมดเลย

หรืออีกอย่างที่เราสามารถทำได้เมื่อเราทำ ARP Poisioning คือการทำ Session Hijacking หรือก็คือ การที่เราขโมย Session เมื่อเหยื่อของเราเข้าเว็บต่าง ๆ อาจจะ Login อะไรพวกนั้น เราก็สามารถที่จะดักพวก C0okie หรือ Session ID ของเหยื่อมาได้ เราก็แค่เอา ข้อมูลตรงนี้แหละ มาหลอกระบบปลายทางว่า เออ เราเป็นคน ๆ นี้จริง ๆ นะ ไม่ได้โม้ ๆๆๆ แต่ ๆๆๆๆๆ เอาจริง ๆ การทำด้วยวิธีนี้ในปัจจุบันค่อนข้างยากมากแล้ว เพราะเว็บสมัยใหม่หลาย ๆ เว็บ ก็ปรับมาใช้ HTTPS กันหมดแล้ว ซึ่งมันมีการเข้ารหัสระหว่างเว็บ และ เครื่องที่เข้าแล้ว ทำให้เมื่อเรา Sniff หรือ ดัก ข้อมูลออกมา เราก็จะเจอกับข้อมูลที่เราอ่านไม่ได้เลยนั่นเอง (ซึ่งมันก็จะมีวิธีจัดการอยู่ ไว้โอกาสหน้าละกัน เดี๋ยวยาว)

ทำให้โดยสรุปจุดประสงค์ของการทำ ARP Poisoning มักมีอยู่ 3 เรื่องด้วยกันคือ Denial of Service หรือการทำให้ Service บางอย่างใช้ไม่ได้ ตัวอย่างก็คือ Netcut ที่ทำให้เครื่องนึงออก Internet ไม่ได้ อย่างที่ 2 คือ Man-in-the-Middle Attack (MITM) ที่มาจ๊ะเอ๊ ตัวเองงง แอบดู และสุดท้ายคือ Sessoin Hijacking

มาลองทำ ARP Poisoning กัน

ถ้าเข้าใจหลักการแล้ว เรามาลองทำจริงกันดีกว่า ต้องย้ำก่อนว่า อย่าไปทำซี๊ซัวนะในที่สาธารณะนะ ควรจะทำในระบบ Network ปิด ที่เราดูแลเอง อาจจะสร้างมันขึ้นมาเองนะ โดยที่ใน Lab นี้ เรา Setup ว่า เราต้องการที่จะ Sniff ข้อมูลจาก iPhone เครื่องนึง เราอยากรู้ว่าเจ้า iPhone เครื่องนี้รับส่งข้อมูลอะไรบ้างกัน

โปรแกรมที่เราจะต้องใช้ อย่างแรกคือ Ettercap เป็นเครื่องมือสำหรับการทำ Man-in-the-middle Attack แบบครอบจักรวาลเลย, nmap เป็นเครื่องมือสำหรับการทำ Network Discovery เพื่อหาเหยื่อ และอีกตัวก็คือ Wireshark สำหรับการ Sniff ข้อมูลที่เข้ามาใน NIC ของเรา

> brew install ettercap wireshark nmap

สำหรับ macOS และ Linux สามารถติดตั้ง Ettercap และ Wireshark ผ่าน Homebrew หรือ LinuxBrew ได้เลยผ่านคำสั่งด้านบน

Wireshark

ถ้าเราลองเข้าไปใน Wireshark เราจะเห็นว่า มันมี List ของ Network Interface ที่เรามี ตัวอย่างเช่น อันแรกใน List ของเราจะเป็น Ethernet : en0 หรือก็คือการเชื่อมผ่าน Ethernet นั่นเอง หรือถ้าเครื่องใครเชื่อมต่อ WiFi อยู่ก็เลือก WiFi ไป หรือ ถ้าไม่แน่ใจ เลือกอันที่มีกราฟวิ่ง ๆ ฮ่า ๆ

Wireshark

เมื่อเรา Double Click เข้ามาแล้ว โปรแกรมมันจะเริ่มทำการ Capture Packet ที่วิ่งผ่าน Interface ที่เราเลือกไว้ เราจะเห็นได้ว่า มันมีข้อมูลวิ่ง ๆ เข้ามาตลอด อย่าปล่อยทิ้งไว้เด้อออ ไม่งั้นคือไฟล์ที่เซฟมันจะยิ่งใหญ่เข้าไปอีก ตอนนี้เราอาจจะกดปุ่ม Stop สีแดงที่อยู่ด้านบน เพื่อหยุดการ Capture โดยเมื่อเราดูเข้าไปในตารางที่มัน Capture มาได้ เราจะเห็นได้ว่า มันมีทั้ง Source, Destination และพวกข้อมูลต่าง ๆ อยู่

โดยที่ข้อมูลที่มันดึงมาได้ก็ไม่ใช่ของใครแต่เป็นข้อมูลที่วิ่งผ่าน Ethernet Inferface ของเรา มันก็คือข้อมูลที่วิ่งเข้าเครื่องเรา ของเรานั่นเอง ไม่ใช่ของใครอย่างใด เอาหล่ะ เมื่อเข้าใจพื้นฐานของ Wireshark แล้ว เราลองมาทำ เริ่มการโจมตีกัน

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

> sudo nmap -sn 192.168.88.0/24

เราสามารถเรียกให้ Nmap มาค้นหาอุปกรณ์ของเราได้ผ่านคำสั่ง nmap ตามด้วยเลข Subnet ของเรา ส่วนการหาเลขพวกนี้ลองไปอ่านเรื่องของ IP Address เอาได้นะว่ามันมาจากไหนกัน เราขอไม่พูดถึงละกัน ยาวววว

nmap

เมื่อเรารัน nmap ออกมา เราจะเห็นเลยว่า ณ ตอนนี้ใน Network ของเรามี IP Address อะไรบ้าง ซึ่งเรารู้ละว่า เหยื่อของเราคืออยู่ที่ IP Address 192,168.88.100 เรามาเริ่มการโจมตีกันดีกว่า

> sudo ettercap -T -S -i en0 -M arp:remote /192.168.88.1// /192.168.88.100//

Command นี้จะเป็นการเรียก Ettercap ขึ้นมา โดยที่เราบอกว่า ให้แสดงเป็นรูปแบบของ Text ส่วน -S คือ การบอกว่า เราจะไม่ปลอม SSL Certificate แล้วบอกว่า เราจะออกผ่าน NIC ตัวไหน ในที่นี้ เราบอกว่าให้มันออกผ่าน Interface en0 หรือก็คือช่อง Ethernet ของเรานั่นเอง สำหรับใครที่ใช้ Interface ไหน ก็แก้เป็นของเราไป จากนั้น -M ก็คือ Method หรือวิธีการซึ่งในที่นี้เราจะทำ ARP Poisoning ก็คือเป็น arp:remote และสุดท้าย ระบุ Address ของ Router ซึ่งอันนี้เราต้องไปเช็คกับ Router ของเรา พร้อมกับป้อน IP Address ของเหยื่อ เรา ก็เป็นอันเรียบร้อย

Ettercap MITM Attack

หลังจากนั้น ettercap ก็จะเริ่มโจมตี โดยการทำตัวเป็นตัวกลางอย่างที่เราคุยกัน ซึ่งสิ่งที่ขึ้นมาในหน้าจอ Command Line ของเรา จะเป็น Packet ที่ถูกส่งผ่านเครื่องของเราไป

Wireshark is capturing packet from Ettercap

หลังจากนั้น เราก็จะมาทำการ Sniffing Packet จากโทรศัพท์ที่เป็นของเหยื่อเรากันผ่าน Wireshark ให้เราเข้าไป เมื่อเราเข้ามา Capture Packet เราจะเห็นว่า Packet มันวิ่งเต็มไปหมด อย่างที่บอก Wireshark มันจะ Capture Packet ทุกอย่างที่ไหลเข้าเครื่องเรา ซึ่งเมื่อเราทำ ARP Poisoning แล้ว เราหลอกแล้วว่า เราคือ โทรศัพท์ ดังนั้น Packet ที่มาจากโทรศัพท์ ก็จะมาเข้าเครื่องเราด้วย ทำให้ Wireshark Capture ได้นั่นเอง

เราจะเห็นว่า มันมี Packet เยอะมาก ๆ อย่างที่บอกคือ Packet ที่เราได้มา มันผสมกันหมด ระหว่างของเราเอง และ เหยื่อของเราด้วย ดังนั้น เราจะต้องทำการ Filter ผลออกมา เพื่อให้เห็นแค่เหยื่อของเรา จะได้ทำการวิเคราะห์ได้ง่ายขึ้น โดยการใส่ Filter ip.addr == 192.168.88.100 (เปลี่ยนตาม IP Address ของเหยื่อเรานะ)

ip.addr == 192.168.88.100 && dns

แต่มันก็ยังยากอยู่ดี เราลองมาดูอะไรที่เจาะจงกันหน่อยละกัน เช่น เราอาจจะอยากรู้ว่า โทรศัพท์เครื่องนี้ มีการเข้าเว็บอะไรบ้างดีกว่า เบื้องต้นง่าย ๆ เราอาจจะดูจาก DNS ก็ได้ว่ามันมีการเรียก DNS อะไรบ้าง โดยการใส่ Filter เป็นแบบด้านบนนี้เลย ก็คือ เรา Filter บอกว่า เราขออะไรก็ได้ที่มี IP ของเหยื่อ และ Protocol เป็น DNS

Wireshark filtering package by DNS

เบื้องต้น เราจะเห็นว่า เครื่องนี้มีการเข้าเว็บ Datacamp.com แน่ ๆ เพราะเราเห็นเลยว่า มันมีการ Request ขอ IP ของ datacamp.com เราลองดูกันว่ามันจะตอบอะไรกลับมาดีกว่า คลิกขวา เลือก Follow > UDP Stream

Wireshark DNS Packet Tracing

มันจะเข้าไปหา Packet ในการเชื่อมต่อครั้งนี้ เราลองเลือก Packet ที่ส่งถึง IP Address ของเหยื่อของเราเมื่อเราคลิกเข้าไป เราจะได้รายละเอียดของ Packet นั้น ๆ ซึ่งในที่นี้มันคือ DNS Response สิ่งที่เราควรจะเห็นคือ คำตอบจาก DNS Server นั่นก็คือ IP Address ของ Datacamp.com นั่นเอง

อีกข้อมูลนึงที่เราเห็นได้ก็คือ DNS Server ที่เหยื่อของเราเลือกจะเป็น Router ตรง ๆ เลย ไม่ได้เป็น Public DNS อะไรเลย แน่นอนว่า ทำให้ถ้าเราต้องการอะไรที่พีคกว่านี้อีก เราสามารถทำ DNS Spoofing กับ Phishing Site เพื่อหลอกยังได้เลย อันนี้ไว้มาเล่าในโอกาสต่อไปละกัน

หรือจริง ๆ แล้ว ในการดักพวก ข้อมูลส่วนตัวต่าง ๆ จริง ๆ ด้วยวิธีนี้ เราก็สามารถทำได้เช่นกัน โดยเฉพาะ พวกเว็บ หรือ Service ที่ไม่ได้มีการเข้ารหัสไว้ พวก HTTP นี่แหละตัวดีเลย ถ้าเราส่งอะไรผ่าน Form มันจะโดนดักผ่านเรื่องแบบนี้แหละ เปิดมาคือ เห็นโชว์หราอยู่ในหน้าต่างนี้เลยแหละ ถ้าเจอคือโคตรพีคเลยละ (เคยเจอมาเหมือนกัน แบบว่า ลืมเปลี่ยนจาก Development Server ที่เป็น HTTP ธรรมดา ไปเป็น Production Server ที่เป็น HTTPS ตอนทำ Penetration Test เลยแตก เพราะเรื่องง่าย ๆ เลย) อันนี้เราขอไม่ทำให้ดูละกันนะ

เราจะป้องกันได้ยังไง

การป้องกัน การโจมตีพวกนี้ เอาจริง ๆ คือ เราไม่สามารถป้องกันมันได้เลย เพราะต้องยอมรับว่า ARP ไม่ได้ออกแบบมาโดยคิดเรื่องพวกนี้ไว้เลย แต่แน่นอนว่า ในฐานะของ Network Admin เราสามารถป้องกันปัญหานี้ได้ด้วยหลาย ๆ วิธีด้วยกัน

วิธีแรก ดูสิ้นคิดหน่อยนะ แต่ชัวร์ คือการทำ Static ARP Table แทนที่เราจะ Boardcast ออกไปถามว่าใครคือใคร เราก็บอกเครื่องไปเลยว่า โอเค IP Address นี้คือ MAC Address อะไร อันนี้ตัดการโดนทำ ARP Posioning ไปได้เลย แต่มันก็มายากที่แต่ละเครื่องละต้องไปไล่เซ็ต Static ARP Table เอา

วิธีต่อไปคือ การทำ Network Isolation หรือการแยก Network ออกจากกัน เพื่อลดความเสียหายที่เกิดขึ้น เพราะยังไง ๆ ซะ ARP Packet ทั้งหลาย มันยังอยู่ใน Subnet เดียวกันแน่ ๆ ถ้าเราต้องการที่จะลดความเสี่ยง เราก็อาจจะแยก Subnet ออกเป็นวง ๆ ไป ตั้งแต่ตอนทำ Network Design ไปเลย ส่วนไหนที่ต้องการความปลอดภัยมาก ๆ ก็แยกออกไป เรื่องพวกนี้ไปหาอ่านได้ในพวกการ Design ระบบ Network ได้

และสุดท้าย เราเล่าไปแล้วคือ เราก็ยอมให้มันอ่านได้แหละ แต่มันอ่านมาแล้วก็ทำอะไรไม่ได้ ถ้าเราเข้ารหัสไว้ให้หมดเลยสิ ก็คือ เราติดต่อด้วยวิธีการที่ทำ E2E Encryption ซะก็จบ ทำให้เมื่ออ่านออกมา มันก็จะอ่านเราไม่ได้อยู่ดี อย่างมาก ก็รู้ว่า เราติดต่อกับใครเท่านั้น แต่ไม่รู้ว่าเราคุยอะไรกันนั่นเอง เหมือนที่เราทำให้ดูในวันนี้

สรุป

ARP Spoofing หรือ ARP Poisioning เป็นการโจมตีประเภทหนึ่งที่อาศัยจุดอ่อนของ ARP ที่ไม่ได้ตรวจสอบ ARP Reply ทำให้มีความสามารถในการปลอมแปลงตัวตน ซึ่งนำไปสู่การขโมยข้อมูล หรือ การตัดการเชื่อมต่ออินเตอร์เน็ตของเหยื่อเราได้เลย ซึ่งในปัจจุบัน เรายังไม่มีวิธีที่จะจัดการแบบ 100% แต่เราก็สามารถป้องกันเบื้องต้น และลดความเสียหายได้เช่น การทำ Static ARP Table, การออกแบบระบบ Network อย่างปลอดภัย และ การใช้การเข้ารหัสในการติดต่อสื่อสารกัน จบจ้าาา ถ้าใครอยากให้เราลอง Hack อะไร หรืออยากรู้การโจมตีแบบไหนก็ Comment มาบอกกันได้ จะมาเล่าให้อ่านกัน

Read Next...

จัดการ Docker Container ง่าย ๆ ด้วย Portainer

จัดการ Docker Container ง่าย ๆ ด้วย Portainer

การใช้ Docker CLI ในการจัดการ Container เป็นท่าที่เราใช้งานกันทั่วไป มันมีความยุ่งยาก และผิดพลาดได้ง่ายยังไม่นับว่ามี Instance หลายตัว ทำให้เราต้องค่อย ๆ SSH เข้าไปทำทีละตัว มันจะดีกว่ามั้ย หากเรามี Centralised Container Managment ที่มี Web GUI ให้เราด้วย วันนี้เราจะพาไปทำความรู้จักกับ Portainer กัน...

Host Website จากบ้านด้วย Cloudflare Tunnel ใน 10 นาที

Host Website จากบ้านด้วย Cloudflare Tunnel ใน 10 นาที

ปกติหากเราต้องการจะเปิดเว็บสักเว็บ เราจำเป็นต้องมี Web Server ตั้งอยู่ที่ไหนสักที่หนึ่ง ต้องใช้ค่าใช้จ่าย พร้อมกับต้องจัดการเรื่องความปลอดภัยอีก วันนี้เราจะมาแนะนำวิธีการที่ง่ายแสนง่าย ปลอดภัย และฟรี กับ Cloudflare Tunnel ให้อ่านกัน...

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

เวลาเราทำงานกับข้อมูลอย่าง Pandas DataFrame หนึ่งในงานที่เราเขียนลงไปให้มันทำคือ การ Apply Function เข้าไป ถ้าข้อมูลมีขนาดเล็ก มันไม่มีปัญหาเท่าไหร่ แต่ถ้าข้อมูลของเราใหญ่ มันอีกเรื่องเลย ถ้าเราจะเขียนให้เร็วที่สุด เราจะทำได้โดยวิธีใดบ้าง วันนี้เรามาดูกัน...

ปั่นความเร็ว Python Script เกือบ 700 เท่าด้วย JIT บน Numba

ปั่นความเร็ว Python Script เกือบ 700 เท่าด้วย JIT บน Numba

Python เป็นภาษาที่เราใช้งานกันเยอะมาก ๆ เพราะความยืดหยุ่นของมัน แต่ปัญหาของมันก็เกิดจากข้อดีของมันนี่แหละ ทำให้เมื่อเราต้องการ Performance แต่ถ้าเราจะบอกว่า เราสามารถทำได้ดีทั้งคู่เลยละ จะเป็นยังไง เราขอแนะนำ Numba ที่ใช้งาน JIT บอกเลยว่า เร็วขึ้นแบบ 700 เท่าตอนที่ทดลองกันเลย...