Friday, August 14, 2009

ArpON: ARP Poisoning Protection

ที่มา: http://debianclub.org/node/492

ฝันร้ายของ admin ในระบบเครือข่าย อย่างหนึ่งที่เจอกันบ่อย ๆ คือ ARP poisoning หรือที่คนทั่วไปรู้จักกันในชื่อ NetCut ซึ่งปัญหานี้ เป็นช่องโหว่ของระบบเครือข่าย ซึ่งรู้โดยทั่วกันว่า หาทางแก้ได้แบบเด็ดขาดลำบากมาก เนื่องจากทางแก้ที่สมบูรณ์นั้น ต้องได้รับความร่วมมือจากผู้ใช้ด้วย

ARP poisoning หรือ ARP spoofing คือวิธีการโจมตีลักษณะหนึ่งในระบบเครือข่ายแบบ ethernet ไม่ว่าจะเป็นแบบ มีสายหรือไร้สาย โดยอาศัยช่องโหว่ของ ARP (Address Resolution Protocol) ซึ่งมีระบบความปลอดภัยต่ำมาก เนื่องจาก ARP เป็นโพรโทคอลที่คุยกัน และให้ความเชื่อถือข้อมูลที่ถูกส่งออกมาโดยไม่มีเงื่อนไขในการตรวจสอบที่มา และความน่าเชื่อถือของข้อมูลใด ๆ ทั้งสิ้น ซึ่งช่องโหว่นี้ เป็นที่มาของการปลอมข้อมูล (spoofing) เพื่อหลอกให้ชาวบ้านหลงเชื่อตามที่โกหก

ในการโจมตี เป้าหมายหลัก ๆ ที่พบบ่อย มีอยู่ 2 สาเหตุ คือ

  1. การทำ Man-In-The-Middle (MITM) คือ การที่ผู้ก่อการร้าย หลอกให้ชาวบ้านหลงเชื่อว่า ตัวเองนั้น เป็นเครื่องเกตเวย์ของเครือข่าย เพื่อให้ส่งข้อมูลต่าง ๆ มาที่เครื่องของผู้ก่อการร้าย และหลังจากนั้น ผู้ก่อการร้ายจะส่งข้อมูลต่อไปยังเกตเวย์ที่แท้จริงต่อไป ในกรณีนี้ ผู้ใช้จะยังใช้งานได้เหมือนไม่มีอะไรเกิดขึ้น ยกเว้นว่า ผู้ใช้อยู่ในระบบที่มีการตรวจสอบที่มา IP + MAC address ซึ่งกรณีนี้ ระบบอาจจะตรวจพบว่า ผู้ใช้มีการส่งข้อมูลมาจากแหล่งที่ไม่ได้รับอนุญาต แต่หากว่า เครื่องที่ผู้ก่อการร้ายใช้นั้น ได้รับอนุญาตเช่นกัน ก็จะไม่เห็นความผิดปกติใด ๆ เกิดขึ้น
  2. การทำ Denial-of-Service (DoS) หรือบางครั้งเรียกการทำ blackhole คือ การที่ผู้ก่อการร้าย หลอกให้ชาวบ้านหลงเชื่อว่า เครื่อง เกตเวย์อยู่ในที่ที่ไม่มีตัวตนจริงในระบบ หรือพูดง่าย ๆ คือ ส่ง MAC address ที่ไม่มีเครื่องใดเลยในระบบใช้อยู่ ผลที่ตามมาคือ ผู้ใช้ที่โดนหลอกด้วยการทำ blackhole จะไม่สามารถเชื่อมต่อกับเกตเวย์ของระบบได้ ทำให้ใช้งานเครือข่ายอินเทอร์เน็ตไม่ได้ หรือที่รู้จักกันในนาม NetCut

โปรแกรมสำหรับทำ ARP spoofing หาได้โดยทั่วไปในอินเทอร์เน็ต และถูกใช้โดยผู้ที่รู้เท่าไม่ถึงการณ์ (และผู้ที่รู้เท่า และถึงการณ์) อย่างแพร่หลาย จึงมีความพยายามที่จะป้องกันการโจมตีในลักษณะดังกล่าวในหลาย ๆ รูปแบบ ทั้งทางฮาร์ดแวร์และซอฟต์แวร์ ซึ่งรู้โดยทั่วกันว่า ฮาร์ดแวร์ที่มีความสามารถในการจัดการเรื่องนี้ มีราคาที่ค่อนข้างสูง ถึงสูงมาก สำหรับระบบเครือข่ายที่มีทุนทรัพย์จำกัด (ทั่วไปในประเทศไทย) นั้น ทางออกที่น่าสนใจ คงตกอยู่ที่ซอฟต์แวร์

ArpON "Arp handler inspectiON" - http://arpon.sourceforge.net เป็นซอฟต์แวร์ที่ถูกพัฒนาขึ้น เพื่อคอยตรวจสอบ และจัดการ ARP cache เพื่อให้เครื่องที่ใช้งาน ArpON ปลอดภัยขึ้นอีกระดับหนึ่ง ซึ่งเป็นการดี ที่จะติดตั้ง ArpON ไว้ที่เครื่องเกตเวย์ เพื่อที่จะป้องกันการถูกหลอกจากผู้ก่อการร้าย ซึ่งวิธีการติดตั้งเป็นดังนี้

สำหรับ Lenny (ArpON เป็นแพกเกจใหม่ ซึ่งเข้ามาใน repository หลังจากที่ Lenny release ออกไปแล้ว)

# cd /var/cache/apt/archives
# wget ftp://ftp.debianclub.org/debian/pool/main/a/arpon/arpon_1.90-1_[amd64|i386].deb

ติดตั้ง dependency libs

# apt-get install libdumbnet1 libnet1

ติดตั้ง ArpON

# dpkg -i arpon_1.90-1_[amd64|i386].deb

สำหรับ Squeeze และ Sid

# apt-get install arpon

หลังจากติดตั้งเสร็จ จะต้องมีการตั้งค่า ที่ /etc/default/arpon ซึ่งในแฟ้มดังกล่าวจะมีตัวอย่างการตั้งค่าไว้ทั้งแบบ SARPI (Static ARP Inspection) และ DARPI (Dynamic ARP Inspection) ซึ่ง SARPI จะใช้กับระบบมีการ fix ค่า IP ส่วน DARPI จะใช้กับระบบที่ใช้ DHCP ซึ่งรายละเอียดสามารถอ่านเพิ่มเติมได้ที่เว็บไซต์ของ ArpON

การกำหนดค่าใน /etc/default/arpon

SARPI

DAEMON_OPTS="-d -f /var/log/arpon/arpon.log -g -i eth0 -s"

DARPI

DAEMON_OPTS="-d -f /var/log/arpon/arpon.log -g -i eth0 -y"

กำหนดค่าให้ ArpON ทำงาน

RUN="yes"

สั่งให้ ArpON ทำงาน

# /etc/init.d/arpon start
ArpON "Arp handler inspection" version 1.90 (http://arpon.sourceforge.net)

[07/13/2009 - 01:35:22 ICT] Task is forking to background, using /var/run/arpon.pid pid file...

.

ซึ่งค่าตั้งที่กำหนดไว้ข้างบน เป็นการกำหนดว่า ให้ ArpON ตรวจสอบ ARP สำหรับอินเทอร์เฟซ eth0 หากต้องการตรวจสอบมากกว่า 1 อินเทอร์เฟซ สามารถกำหนดเพิ่มเติมได้ดังนี้

DAEMON_OPTS="-d -f /var/log/arpon/eth0.log -g -i eth0 -s -f /var/log/arpon/eth1.log -g -i eth1 -y"

ซึ่งจะกำหนดให้

  • (-i) eth0 : (-s) SARPI ทำการ log ไปที่แฟ้ม (-f) /var/log/arpon/eth0.log
  • (-i) eth1 : (-y) DARPI ทำการ log ไปที่แฟ้ม (-f) /var/log/arpon/eth1.log

หลังจากที่ ArpON ทำงาน ก็จะตรวจสอบ ARP request/reply ให้ และคอยตรวจสอบความถูกต้องให้อยู่เสมอ ทำให้เครื่องที่เป็นเกตเวย์ปลอดภัยจาก ARP poisoning ในระดับหนึ่ง อย่างน้อยก็ป้องกันได้ "ครึ่งทาง"

ตรวจ ARP cache table จะพบ

# arp -n
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:22:57:62:xx:xx CM eth0

Flags: CM แสดงให้เห็นว่า ArpON ทำการเพิ่ม 192.168.1.1:00:22:57:62:xx:xx เข้าไปใน ARP cache table แบบ manual ซึ่งหมายความว่า ระบบจะไม่เปลี่ยนแปลงค่านี้เองไม่ว่าจะมีการส่งค่าใด ๆ มาหลอกก็ตาม

แต่ทว่า การป้องกันเพียงข้างเดียว (ที่เกตเวย์) ไม่เพียงพอสำหรับการแก้ปัญหา ARP poisoning ต้องมีการแก้ที่ผู้ใช้ด้วย ซึ่งหากฝั่งผู้ใช้เป็น Linux, FreeBSD, NetBSD, OpenBSD and Mac OS X สามารถใช้ ArpON เพื่อป้องกันในลักษณะเดียวกับตัวอย่างนี้ได้ แต่หากผู้ใช้เป็น MS Windows แล้ว ต้องหาซอฟต์แวร์ที่ทำงานบน Windows เพื่อมาช่วยจัดการในลักษณะเดียวกัน ซึ่งโดยประสบการณ์ของผู้เขียน ยังให้ข้อสรุปไม่ได้ว่าซอฟต์แวร์ชุดไหนที่ทำงานบน Windows ได้ดี เนื่องจากไม่ค่อยได้ใช้ Windows ถ้า ArpON มีการพอร์ตให้ใช้กับ Windows ได้ก็คงจะดี :P

ข้อแนะนำเพิ่มเติมสำหรับ admin ที่ดูแลระบบภายในโรงเรียน หรือสถานที่ ที่เครื่องคอมพิวเตอร์ไม่ได้มีการเคลื่อนย้าย สามารถทำ Static ARP ได้เองโดยอาจจะเขียน batch file ให้ระบบทำการเพิ่ม static ARP เข้าไปในระหว่างที่เครื่องเริ่มเปิดใช้งาน หรือใช้โปรแกรมชื่อ ARPFreeze (http://www.irongeek.com/i.php?page=security/arpfreeze-static-arp-poisoni...) ซึ่งช่วยอำนวยความสะดวกในการตั้งค่าเหล่านี้ให้เรา ก็จะช่วยปิดทางการทำ ARP poisoning ได้อย่างสมบูรณ์

No comments:

Post a Comment

Popular Posts