Pages

6/09/2013

อธิบายการทำงานของ Reaver สำหรับ Crack Wifi ที่ใช้ระบบ WPS

วันนี้มีคนถามว่า
"iteasy": ใครลอง reaver wps แล้วมั้ง
"iteasy": สงสัยว่ามัน brute ยังไง
"iteasy": ทำไมเลขไม่เรียงหว่า
"iteasy": 0000001
"iteasy": 0000002
"iteasy": 0000001 0000002 0000003
"iteasy": แบบนี้ไปเรื่อย ๆ
"iteasy": แต่กลับข้าม
"iteasy": 00555678 00565677 00575676
เลยขออ้างอิง บล็อคของ Xelenonz [2.] มาตอบ และ บรรยายเพิ่มเติม ละกัน

โดยในนั้นจะมีคำอธิบายคร่าวๆ ถึงว่า ระบบ WPS (Wi-Fi Protected Setup) คืออะไร, มีช่องโหว่อย่างไร, และวิธีการใช้งานของ Reaver  ซึ่งจะไม่ขอกล่าวซ้ำ ณ ที่นี้

เนื่องจาก ระบบการตรวจสอบรหัสผ่านของ WPS นั้น มีช่องโหว่ในการตรวจสอบรหัสผ่าน (เลข 8 หลัก) ที่ใช้ในการอนุญาตให้เข้าใช้งาน Wi-Fi

โดยช่องโหว่นั้นก็คือ 

แทนที่การตรวจสอบรหัสผ่านจะใช้ตรวจสอบทีเดียวทั้ง 8 หลัก
แต่ระบบ WPS จะทำการแบ่งตัวเลข 8 หลักนั้นเป็น 3 ส่วน คือ PIN1 (4หลักแรก) , PIN2 (3หลักต่อมา) , Checksum (หลักสุดท้าย) และทำการตรวจสอบส่วน PIN1 ก่อน ถ้าถูกแล้วจึงทำการตรวจสอบ PIN2 แต่ถ้าผิดก็จะมีการบอกว่าผิดตั้งแต่การตรวจสอบ PIN1 เลย
นั่นเลยทำให้  จึงทำให้การโยนเลขเข้าไปทดสอบสามารถทำแยกเป็นส่วนๆได้ คือ รันเลข PIN1 ไปจนกว่าจะถูก แล้วจึงค่อยรันเลข PIN2 ก็ได้

ส่วน ค่า Checksum ที่จะต้องเปลี่ยนตามเมื่อมี PIN1 หรือ PIN2 เปลี่ยนไป ดังนั้น จะเปลี่ยนแปลงตลอดอยู่แล้ว และสามารถสร้างขึ้นได้จากการใช้ตัวเลข 7 ตัว (PIN1 และ PIN2) มาสร้าง ดังนั้นจึงไม่มีความจำเป็นที่จะต้องรันเลขหลักนี้

จึงทำให้ในกรณีตัวอย่าง ที่ว่า โปรแกรม Reaver จะทดลองรันค่าที่เอาไปใช้เพื่อในระบบ WPS จะเรียงเลขเป็น

00555678, 00565677, 00575676, ...


จะเห็นว่า ค่า PIN1 (4 ตัวแรก) จะมีการรันเลขเป็น
0055, 0056, 0057, ...

แต่ PIN2 (3 ตัวถัดมา) จะยังคงค่าเดิม เพราะส่วนนี้ยังไม่ได้ถูกใช้งาน ซึ่งจะเห็นว่าเป็น
567, 567, 567, ...

และ Checksum (หลักสุดท้าย) จะมีการเปลี่ยนแปลง เนื่องจากมีการเปลี่ยนตัวเลขใน PIN1 หรือ PIN2 ขึ้น จึงจะเห็นว่า เลข checksum นี้ก็จะเปลี่ยนไปด้วย
8, 7, 6, ...

ผลจากช่องโหว่นี้ก็คือ


จากเดิม ถ้าเราไม่รู้หลักการทำงานลึกๆของการยืนยันตัวเองในระบบ WPS , พอเราเห็นเลข 8 หลัก เราก็จะคิดว่าเราจะต้องทดลองแทนค่าตั้งแต่
00000000 ... 99999999 : คิดเป็นจำนวนมากสุด 100,000,000 ครั้ง
แต่พอเรารู้ช่องโหว่นี้ ทำให้เรารู้ว่า
เราต้องทดลองแทนค่าของ PIN1 ก่อน ซึ่งมี 4 หลัก ก็จะทดลองแทนค่า
0000 ... 9999 : คิดเป็นจำนวนมากสุด 10,000 ครั้ง

แล้วเราค่อยทดลองแทนค่า PIN2 ต่อ ซึ่งมีทั้งหมดแค่ 3 หลัก ซึ่งก็จะแทนค่า
000 ... 999 : คิดเป็นจำนวนมากสุด 1,000 ครั้ง

ส่วนเลขหลักสุดท้ายที่เป็น Check-sum นั้น ไม่ต้องนับเพราะมันจะถูกคำนวนจากตัวเลข 7 หลักก่อนหน้าอยู่แล้วได้โดยอัตโนมัติ

ทำให้การใช้งานช่องโหว่นี้ของโปรแกรม Reaver
จะทำให้มีการทดลองแทนค่าเพียง 10000 + 1000 = 11,000 ครั้งเท่านั้น
แทนที่จะเป็น 100,000,000 ครั้ง อย่างวิธีดิบๆอย่างแรก

ผลก็คือ การ bruteforce เพื่อหารหัสของ WPS จะทำได้เร็วขึ้นจากเดิมถึง 909,090 เปอร์เซนต์ !!!


และถ้า การทดลองแทนค่าแต่ละครั้ง ใช้เวลา 3 วินาที (อ้างอิง [2.]) การแทนค่า 11,000 ครั้งจะเสียเวลามากที่สุดอยู่ที่ราวๆ 9 ชม. เท่านั้น! ซึ่งเป็นเวลาที่ไม่ถึงกับรอไม่ได้ และในสถานการณ์จริงอาจจะใช้เวลาน้อยกว่า 9 ชม.มาก (อาจจะอยู่ที่หลักไม่กี่ชม.)

ซึ่งนี่ต่างกับวิธีคิดแบบแทนที่ตรงๆ มาก ซึ่งวิธีนั้นถ้าคำนวนแล้ว อาจจะต้องใช้เวลาถึง 9.5 ปี

หรือต่อให้ถ้าแทนค่าแค่ 7 หลัก แล้วหลักสุดท้ายคำนวนหาค่า checksum แยกเองต่างหาก ยังต้องใช้เวลาเกือบ 1 ปี

ซึ่งถ้าเป็นเช่นนั้น คงไม่มีใครแน่ๆ ที่ยอมเสียเวลากับการพยายามเข้าไปใช้ Wi-Fi Access Point ตัวเดียว ถึงขนาดนั้น .... แต่นี่มันไม่ได้เป็นเช่นนั้น

กลับกัน การเจาะเข้าไปในระบบ WPS ใช้เวลาจริงเพียงไม่กี่ชั่วโมงเท่านั้น !!


ส่วนวิธีการป้องกันนั้น


เนื่องจาก ระบบ WPS นั้นผิดพลาดมาตั้งแต่การออกแบบ จึงไม่สามารถแก้ไขอะไรในกลไกของการตรวจสอบรหัสผ่านได้แล้ว จึงแนะนำให้ปิดการใช้งาน WPS ของ Wi-Fi Access Point ของท่าน และปรับให้ใช้ระบบการลงทะเบียนเข้าใช้งาน ใช้เป็นระบบการเข้ารหัสด้วย WPA2 - AES เพื่อความปลอดภัย ของระบบท่านเอง

อ้างอิง:


  1. Bruteforcing Wifi Protected Setup, by Stefan Viehböck : http://sviehb.files.wordpress.com/2011/12/viehboeck_wps.pdf
  2. Crack Wireless WPA แบบได้ผล 100% , by Xelenonzhttp://blog.ipwned.it/crack-wireless-wpa-แบบได้ผล-100/

No comments:

Post a Comment