ทำไม WPA Personal ไม่ปลอดภัยสำหรับ Wi-Fi ระดับองค์กร

25 มกราคม 2023

พิชญะ โมริโมโต
พิชญะ โมริโมโตหัวหน้าทีมทดสอบเจาะแฮกระบบ (lead penetration tester) ของบริษัท สยามถนัดแฮก, เป็นที่ปรึกษาด้านความปลอดภัยให้หน่วยงานเอกชน, เป็นที่รู้จักกันในฐานะ หนึ่งในแอดมินกลุ่ม 2600 Thailand และเป็นหนึ่งในคนเขียนบทความลงเพจ สอนแฮกเว็บแบบแมว ๆ

ในบทความนี้เราจะมาดู ความเสี่ยงของการใช้ Wi-Fi ด้วยการเข้ารหัสแบบ WPA Personal รวมถึงเปรียบเทียบข้อดี-ข้อเสียของ WPA ในรูปแบบ Personal กับ Enterprise เพื่อวิเคราะห์ว่า ทำไม Wi-Fi ระดับองค์กรไม่ควรใช้ WPA Personal และมาดูว่า WPA3 มีความสามารถด้านความปลอดภัยอะไรใหม่ ๆ มาอุดช่องโหว่ใน WPA2 กันบ้าง

คำเตือน: บทความนี้อธิบายเพื่อประโยชน์ทางด้านการศึกษาและเรียนรู้วิธีการตั้งค่า Wi-Fi ให้ปลอดภัยเท่านั้น ห้ามนำความรู้และวิธีการต่าง ๆ ไปใช้ในทางที่ผิดกฎหมายโดยเด็ดขาด

โดยปกติก่อนที่แฮกเกอร์จะเจาะเข้าไปยังระบบเครือข่ายไร้สายขององค์กรใด ๆ สิ่งที่แฮกเกอร์จะทำก็ อาจจะเริ่มจากไปลอง สำรวจ ณ อาคารสถานที่จริงของเป้าหมายว่ามี Wi-Fi ชื่ออะไรเปิดอยู่บ้าง และตรวจสอบรูปแบบการตั้งค่าความปลอดภัยแบบต่าง ๆ

อาจจะใช้แอป Android ชื่อ WiGLE ก็ได้ โดยการสำรวจแบบนี้จะเรียกว่าการทำ Wardriving https://play.google.com/store/apps/details?id=net.wigle.wigleandroid

แนะนำให้ใช้กับ Android รุ่นต่ำกว่า 9 ถ้าใช้ Android 9 ต้องใช้โปรแกรม adb (ได้จากการติดตั้ง Android SDK จากโปรแกรม Android Studio) เพื่อเข้าไปปิด Wi-Fi Scan Throttling โดยอ้างอิง https://wigle.net/wiwiwa-faq

adb shell settings put global wifi_scan_throttle_enabled 0

ตัวอย่างต่อไปนี้แสดงถึงรายละเอียด Wi-Fi เป้าหมายชื่อ sth-demo จากแอปฯ WiGLE

และสามารถกดเข้าไปดูรายละเอียดของ Wi-Fi ได้ เช่น 

  • ชื่อของ Wi-Fi Hotspot ปกติจะเรียกว่า SSID
  • หมายเลข MAC Address ของ Wi-Fi Hotspot ปกติจะเรียกว่า BSSID
  • คลื่นความถี่ มีให้เลือกคือ 2.4 GHz หรือ 5 GHz
  • รูปแบบการเข้ารหัส WPA2 Personal หรือ WPA2 Enterprise 
  • Channel ที่โดยปกติ Wi-Fi เมื่อทำการติดตั้ง ตั้งค่าเปิดใช้งานจะต้องเลือกเลข Channel โดย Wi-Fi ที่เปิดในคลื่น 2.4 GHz จะใช้ Channel ที่ 1-13 ส่วน 5 GHz จะมีตั้งแต่ 32 ไปจนถึง 196 ขึ้นอยู่กับแต่ละประเทศที่มีกฎหมายอนุญาตให้ใช้คลื่นที่ความถี่อะไรได้บ้าง

สิ่งหนึ่งที่สำคัญก่อนการทดสอบ Wi-Fi ใด ๆ คือการตรวจสอบดูคลื่นความถี่ว่าเป้าหมายเป็น 2.4 GHz หรือ 5 GHz และอุปกรณ์ Wi-Fi Adapter ภายใน/ภายนอก ของคอมพิวเตอร์เรารองรับความถี่นั้นหรือเปล่า? รวมถึง Channel ของ SSID ว่ารันอยู่ที่ Channel หมายเลขอะไร และสุดท้ายคือ Mode ของ Wi-Fi Adapter ที่ส่วนมากนั้น โปรแกรมต่าง ๆ สำหรับทดสอบความปลอดภัย Wi-Fi จำเป็นต้องใช้ Wi-Fi Chipset ที่สามารถทำ Monitor Mode/Injection Mode ได้ ซึ่งจะอธิบายในลำดับถัด ๆ ไปว่าคืออะไร 

จากในตัวอย่างนี้เราจะทราบข้อมูลเป้าหมายดังนี้

  • SSID: sth-demo
  • BSSID: f4:8c:eb:3b:08:63
  • Frequency: 2.4 GHz (เพราะใช้ Channel 13)
  • รูปแบบการเข้ารหัส: WPA-PSK-TKIP+CCMP, WPS2-PSK-TKIP+CCMP (แปลว่ารองรับทั้งต่อด้วย WPA และ WPA2 ทั้งแบบเก่า TKIP (RC4) และแบบใหม่ CCMP (AES)
  • Channel: 13

หรืออีกทางเลือกอาจจะดูจากข้อมูลของคนอื่นทั่วโลกที่เคยใช้แอป WiGLE และเลือกจะอัปโหลดข้อมูลกลับไปยัง WiGLE (คือปุ่ม UPLOAD TO WIGLE.NET ในรูปด้านบนนั่นเอง) ก็ได้เช่นกัน โดยไม่ต้องไปยังสถานที่เป้าหมายจริง ๆ แต่ข้อมูลอาจจะไม่ล่าสุด

ตัวอย่างเช่น แถวถนนราชดำริ เขตปทุมวัน กรุงเทพฯ ของประเทศไทย สามารถเข้าไปดู WiFi Hotspot โดยรอบได้ฟรี (ต้องสมัครก่อน) จากลิงก์

https://wigle.net/map?maplat=13.745043600632105&maplon=100.53983870318133&mapzoom=19&coloring=density

เมื่อพบ Wi-Fi เป้าหมายที่ต้องการแล้ว ก็ต้องมาดูกันต่อ ว่าตั้งค่าความปลอดภัยเป็นแบบไหนนั้นเอง 

1.ปัญหาของ Wi-Fi แบบ Open

1.1 ข้อมูลที่ไม่ได้ทำการเข้ารหัส

ตามตารางจาก Wikipedia (https://en.wikipedia.org/wiki/IEEE_802.11)

  • ข้อดีและ Use-Case ของ Wi-Fi แบบ Open แต่เดิมสมัยก่อน ก็เคยเหมาะสำหรับ ร้านอาหาร, ห้องสมุด, สนามบิน และพื้นที่สาธารณะต่าง ๆ ณ วันที่ความปลอดภัยยังไม่ได้เป็นประเด็นสำคัญ โดยเน้นความง่ายใครเดินผ่านไปผ่านมาก็ใช้งานได้ทันที และไม่จำเป็นต้องรู้ก็ได้ว่าใครใช้
  • ข้อเสีย หรือปัญหาทางด้านความปลอดภัยหลัก ๆ ของ Wi-Fi แบบ Open คือข้อมูลเครือข่าย ของผู้ใช้งาน ลอยอยู่ในอากาศ แบบไม่มีอะไรป้องกัน ทำให้ใครก็ได้ ในบริเวณนั้นสามารถดักจับข้อมูลที่ลอยไปลอยมาได้ทันที

โดยเฉพาะอย่างยิ่งถ้าหากผู้ใช้งาน ไม่ได้ทำการใช้ Protocol ที่มีการเข้ารหัส ก็จะเห็นข้อมูลเต็ม ๆ อย่างเช่น การเข้าเว็บที่เป็น http:// แทน https:// หรือจะเป็นการเช็คอีเมลที่ใช้ Protocol IMAP/POP3 รวมถึงอื่น ๆ เช่น DNS, Telnet, FTP และอีกมากมาย ที่เป็นรูปแบบการส่งข้อมูลที่ไม่ได้เข้ารหัส ก็จะถูกดักอ่านข้อมูลได้ทันที

ตัวอย่างเช่น ถ้าหากเหยื่อเข้าเว็บที่เป็น https:// แล้ว แต่ข้อมูล DNS ยังเป็นแบบที่ไม่ได้เข้ารหัส ยังไม่ได้บังคับใช้ DoH (DNS over HTTPS) แฮกเกอร์ก็จะรู้ได้ว่า เหยื่อกำลังเข้าเว็บอะไร

นอกเหนือจากนั้น ถ้าหากเหยื่อ เข้าเว็บที่เป็น http:// ด้วยข้อมูลในส่วนของรหัสผ่านและอื่น ๆ ที่มีการรับ-ส่งกัน ก็จะถูกดักอ่านออกจากอากาศได้ทันที

1.2 การยืนยันตัวตนใน Wi-Fi แบบ Open

การใช้ Wi-Fi แบบ Open มีข้อดีที่เห็นชัดเจนที่สุดคือความง่าย สะดวกสบาย ของทั้งเจ้าของสถานที่และผู้ใช้งาน ไม่ต้องทำอะไรให้ยุ่งยาก เดินเข้ามากดเชื่อมต่อ ใช้ได้ จบ!

แต่ในหลาย ๆ ครั้งเราก็มักจะพบว่าใน Wi-Fi แบบ Open ก็จะมีการยืนยันตัวตนภายในหลังจากเชื่อมต่อเสร็จแล้วอีกทีเช่นกัน โดยมีหน้าเว็บขึ้นมาให้ใส่รหัสผ่าน ที่เรียกกันว่า Captive Portal โดยถ้าหากไม่ยืนยันตัวตนผ่านหน้าเว็บ Captive Portal ให้สำเร็จ จะไม่สามารถใช้งานอินเทอร์เน็ตได้

ตัวอย่างหน้าเว็บ Captive Portal ลิงก์ด้านล่างนี้

https://www.true.th/truemoveh/site/our-network/wifi/manual

โดยปกติหน้าเว็บ Captive Portal มักจะมีเงื่อนไขการใช้งานต่างกันไป เช่น

  • ให้กดยืนยันยอมรับข้อตกลงเงื่อนไขการใช้งาน และใช้งานได้ทันที
  • ให้ลงทะเบียนสมัครผ่านหน้าเว็บและสามารถใช้งานได้ทันที
  • ให้ลงทะเบียนสมัครผ่านหน้าเว็บและต้องรอการอนุมัติ (จากพนักงานบริษัท)
  • ให้ใช้รหัสผ่าน ที่ซื้อหรือลงทะเบียนไว้ หรือได้รับจากช่องทางอื่น เช่น จากใบเสร็จการซื้อสินค้า, จากฝ่ายไอที หรือ จากแพ็คเกจเสริมในโปรโมชันค่าโทรศัพท์มือถือ

ตัวอย่างโค้ดจากใบเสร็จร้านอาหารสำหรับนำมาใส่ในหน้าเว็บ Captive Portal (ที่เชื่อมต่อเข้ามาแบบ Open)

แต่ในกรณีของ การเปิดใช้งาน Captive Portal ก็มีความเสี่ยงแบบเดียวกันกับไม่เปิด คือโดนดักข้อมูลในอากาศได้เหมือนกันเป๊ะ ๆ เพราะยังไม่มีการเข้ารหัสข้อมูลที่รับ-ส่ง อยู่ดี บางคนอาจจะมีความเข้าใจผิดว่า การล็อกอินผ่านหน้าเว็บใน Wi-Fi แบบ Open เป็น https:// แล้วจะมีการเข้ารหัสข้อมูล แท้จริงแล้วไม่ใช่ มันก็เหมือนเดิมแค่เพิ่มขั้นตอนการยืนยันตัวตน ป้องกันคนไม่ได้รับอนุญาตเข้ามาใช้งานเฉย ๆ แต่ รหัสผ่านที่ถูกส่งผ่านหน้าเว็บ Captive Portal อาจถูกเข้ารหัสด้วย TLS ทำให้ไม่สามารถดักอ่านได้

เมื่อเข้าสู่ Wi-Fi เรียบร้อยแล้ว และพิมพ์รหัสผ่าน หรือข้อมูลสำคัญผ่าน Protocol ที่ไม่ได้ทำการเข้ารหัส ข้อมูลก็จะลอยอยู่ในอากาศทำให้สามารถถูกดักอ่านได้โดยง่ายเช่นเดิม

1.3 ใช้ Open Wi-Fi แบบเข้ารหัสด้วย Wi-Fi Enhanced Open (OWE)

หลังจากโลกเรามีคนส่งข้อมูลเปลือยเปล่าอยู่ในอากาศได้อยู่หลายปี ในปี 2018 ทาง Wi-Fi Alliance ผู้ออกมาตรฐาน Wi-Fi ก็ได้ออกมาตรฐานใหม่สำหรับ Wi-Fi แบบ Open และตั้งชื่อว่า Wi-Fi Enhanced Open ที่ยกเครื่องเรื่องความปลอดภัยใหม่ทั้่งหมด โดยแก้ปัญหาของ Open แบบเดิมดังนี้

  • ยังยอมให้ใครก็ได้ที่ไม่มีรหัส Wi-Fi เชื่อมต่อเข้ามาในเครือข่ายไร้สายได้แบบ Open ไร้ข้อจำกัด เพียงแค่อยู่ภายในบริเวณที่มีสัญญาณ
  • แต่เมื่อกำลังจะเกิดจากเชื่อมต่อขึ้น ผู้ใช้งาน Wi-Fi จะทำการสร้างคู่กุญแจ (Key Pair) คือ Private Key เก็บไว้ส่วนตัวและ Public Key เอาไว้แจกจ่ายได้ และทำการแลกกุญแจ Public Key กับ Router เพื่อสร้าง Master Key ด้วยวิธีการ Diffie-Hellman Key Exchange 
  • จากนั้นใช้กุญแจที่ต่างฝ่ายต่างได้มาเข้ารหัสคุยกันระหว่าง Router และผู้ใช้งาน Wi-Fi

รูปจาก https://wlan1nde.wordpress.com/2019/02/13/enhanced-open-same-same-but-encrypted/

โดยวิธีการนี้ใน Wi-Fi Enhanced Open จะเรียกว่าเทคนิคการเข้ารหัสแบบ Opportunistic Wireless Encryption (OWE) ในการตั้งค่าของ Wi-Fi Router ก็จะเห็นและใช้เป็นชื่อ OWE ทำให้คนที่ไม่มีรหัสผ่าน Wi-Fi จะสามารถเข้าใช้งาน Wi-Fi แบบเข้ารหัสข้อมูลที่รับ-ส่งกันได้นั่นเอง

OWE สามารถมาทดแทนการใช้งาน Open Wi-Fi ปกติได้ อย่างปลอดภัยมากยิ่งขึ้น (เงื่อนไขคือให้ผู้ใช้งานต่อ Wi-Fi ได้โดยไม่มีรหัสผ่าน สะดวกเหมือนเดิม) ฮาร์ดแวร์เก่าที่เคยรองรับ Open Wi-Fi ปกติ แค่ปรับปรุงรุ่นซอฟต์แวร์ก็ทำให้ใช้ OWE ได้แล้ว (ไม่เหมือนฮาร์ดแวร์อุปกรณ์เครือข่ายเก่าที่ใช้ WEP/WPA ที่อาจไม่รองรับ WPA2)

นอกเสียจากจะต้องเป็นอุปกรณ์รุ่นใหม่ ๆ หน่อย ทั้งฝั่ง Wi-Fi Router และอุปกรณ์ที่มาเชื่อมต่อ ถึงจะใช้งาน OWE ได้นั่นเอง ซึ่งยังไม่ค่อยเป็นที่นิยมนัก ถ้าหาก Wi-Fi Router เปิดใช้งาน OWE แต่อุปกรณ์ที่มาเชื่อมต่อไม่รองรับ ก็จะยังใช้งานได้ แต่ก็จะกลับไปใช้แบบ Open Wi-Fi ที่ไม่ได้เข้ารหัสตามเดิม

ตัวอย่างการตั้งค่า Wi-Fi ที่รองรับ OWE

รูปจาก http://www.netprojnetworks.com/wpa3-frame-format-notes/ 

ตัวอย่างอุปกรณ์ที่รองรับ เช่น โทรศัพท์ Android รุ่นตั้งแต่ 10 ขึ้นไปเท่านั้น (https://source.android.com/docs/core/connect/wifi-wpa3-owe) ถึงจะใช้งาน OWE ได้ ส่วน Wi-Fi Router หรือ Access Point ที่รองรับ OWE ได้ จากที่ลองหาในเว็บขายอุปกรณ์ไอทีชื่อดังสีน้ำเงิน ๆ พบว่า อุปกรณ์เครือข่ายปล่อยสัญญาณ Wi-Fi ระดับผู้ใช้งานทั่วไปตามบ้าน ยังไม่มีความสามารถ OWE ณ วันที่เขียนบทความนี้ อุปกรณ์เครือข่ายไร้สายหลัก ๆ ที่รองรับจะมาจากค่าย Cisco และ Aruba แต่เชื่อได้ว่าในอนาคตข้างหน้าอันใกล้ OWE น่าจะมาแทนที่ Open Wi-Fi อย่างแน่นอน

ส่วนอุปกรณ์เชื่อมต่อ Wi-Fi ค่าย Apple อย่าง macOS และ iOS ก็เพิ่งจะรองรับ OWE สด ๆ ร้อน ๆ ใน iOS 16, iPadOS 16.1 และ macOS 13 ใน iPhone ตั้งแต่ 11 เป็นต้นไป (https://support.apple.com/en-sg/guide/deployment/dep3b0448c58/web

2. ปัญหาของ Wi-Fi แบบ WEP/WPA/WPA2 Personal

2.1 แกะรหัส Wi-Fi WEP

การเข้ารหัส Wi-Fi แบบที่ปลอดภัยน้อยที่สุด และแทบไม่มีการใช้งานในปัจจุบันแล้วคือ WEP-Shared หรือ WEP (Wireless Equivalent Privacy) 

โดยลักษณะค่ารหัส Wi-Fi ที่จะใช้เมื่อเชื่อมต่อกับ Wi-Fi ที่เข้ารหัสแบบ WEP จะหน้าตาเป็นค่า Hex ยาว 10 ตัวอักษร (64-bit key) หรือ 26 ตัวอักษร (128-bit key) เช่น c521ffc3be และ e10adc3949ba59abbe56e057f2 โดยปกติค่า Hex นี้จะถูกแปลงมาจากข้อความรหัสผ่านหรือ Passphrase อีกทีหนึ่ง เพื่อให้ง่ายต่อการสร้าง

ตัวอย่างการตั้งค่ารหัสผ่าน Wi-Fi แบบ WEP

ซึ่งเป็นที่รู้กันโดยทั่วไปว่า WEP โดยแฮกง่ายสุด ให้หนีไปใช้ WPA แทน แต่ว่าในอุปกรณ์เก่า ๆ ที่รองรับเฉพาะ Wi-Fi มาตรฐาน 802.11a และ 802.11b จะยังไม่มี WPA ให้เลือก จะใช้ได้เฉพาะ WEP !

รูปจาก: https://en.wikipedia.org/wiki/Wired_Equivalent_Privacy 

โดยย่อแล้ว WEP-Shared เข้ารหัสข้อมูลโดยการใช้ อัลกอริทึมเข้ารหัสแบบ Symmetric Key ชื่อ RC4 (Rivest Cipher 4) ปัญหาของ RC4 ในการนำไปใช้ของ WEP คือมีช่องโหว่ Related-key Attack (หรือ Stream Key Attack) เพราะว่า Stream Cipher ที่ปลอดภัย เวลานำไปใช้จะต้องใช้กุญแจไม่ซ้ำกันเท่านั้น (ไม่งั้นจะโดนการโจมตีแนว Known Plaintext Attack) โดยกุญแจใน WEP คือ Key Stream ที่สร้างจากค่าสุ่ม (IV – Initialized Vector) กับรหัส Wi-Fi (ตามรูปด้านบนคือ key) แต่ปัญหาเกิดขึ้นตรงค่า IV ที่สุ่มมาตามมาตรฐาน WEP มีความยาว 24-bit ที่มีค่าประมาณ 17 ล้านค่า ทำให้ทุก ๆ การสุ่มในปริมาณ 4096 Packet จะมีโอกาสที่ IV จะซ้ำกัน 1 ครั้ง (IV Collision)

2.2 แกะรหัส Wi-Fi WPA/WPA2 Personal

หลังจาก WEP แตกพ่ายไป ในปี 2003 ก็เกิดเป็นมาตรฐานใหม่คือ WPA (Wi-Fi Protected Access) ที่คราวนี้มาพร้อม WPA แยกเป็นแบบ Personal และแบบ Enterprise

WPA Personal จะเน้นการใช้ PSK (Pre-Shared Key) คือ มีรหัส Wi-Fi ที่คนจะเชื่อมต่อ Wi-Fi ต้องรู้ล่วงหน้าก่อนแล้ว จากนั้นเอามายืนยันตัวตนเพื่อเข้าสู่ Wi-Fi และใช้กุญแจตัวเดียวกันนี้นำไปแปลงเป็นค่าสำหรับเข้ารหัส Packet ด้วย คล้าย ๆ กับที่ WEP แต่เพิ่มไส้ในให้การเข้ารหัสแข็งขึ้น

ปัจจุบันผู้ใช้งานตามบ้านทั่วไปจะนิยมใช้ WPA/WPA2 Personal กันมากที่สุด

ปัญหาของ WPA Personal คือ เนื่องจาก WPA เกิดมาเพื่อเปลี่ยนเก้าอี้นั่งแทนที่เดิมของ WEP ที่โดนอัดยับไปแล้ว เลยออกแบบมาให้เข้ากันได้กับฮาร์ดแวร์เดิมที่รองรับ WEP โดยปรับปรังรุ่นแค่ซอฟต์แวร์ ก็รองรับ WPA ได้แล้ว โดย WPA นี้ยังใช้อัลกอริทึมเข้ารหัสอันเดิมคือ RC4 แต่เปลี่ยนใช้กระบวนการใหม่ในการเข้ารหัสเรียกว่า TKIP (Temporal Key Integrity Protocol)

ดังนั้นเราจึงมักจะเห็น WPA รุ่นแรกนี้เรียกกันว่า WPA TKIP แต่ทั้งนี้ทั้งนั้น RC4 ก็เป็นตัวเลือกที่ไม่ถือว่าปลอดภัยแล้ว เพราะมีการปล่อยวิธีการแฮก WPA ออกมาหลายอย่าง เช่น MIC Key Recovery Attack, Royal Holloway Attack, NOMORE Attack 

ทำให้ Wi-Fi Alliance จึงออกมาตรฐานในปีถัดมา จาก WPA ในปี 2004 และใช้ชื่อเป็น WPA2 ที่ เปลี่ยนอัลกอริทึมเข้ารหัสจากเดิม RC4 เป็น AES (Advanced Encryption Standard) และใช้กระบวนการเข้ารหัสชื่อว่า CCMP (Counter Mode Cipher Block Chaining Message Authentication Code Protocol) ชื่อยาวและหล่อเท่ เรามักจะเห็น WPA2 ถูกเรียกว่า WPA2 CCMP หรือ WPA2 AES-CCMP

อย่างไรก็ตาม WPA และ WPA2 ต่างก็มีความเสี่ยงที่จะถูก “เดาสุ่มรหัสผ่านแบบออฟไลน์” ได้ ถ้าหากแฮกเกอร์ สามารถดัก Packet ที่มีการ รับ-ส่ง ณ จังหวะที่มีการยืนยันตัวตนเข้าสู่ระบบ หรือที่เรียกกันว่า WPA 4-Way Handshake

รูปจาก https://github.com/koutto/pi-pwnbox-rogueap/wiki/05.-WPA-WPA2-Personal-%28PSK%29-Authentication

จะสามารถนำ Packet ในส่วน WPA 4-Way Handshake นี้ไปแปลงเพื่อทดสอบแกะรหัสผ่านแบบออฟไลน์ได้ (ไม่จำเป็นต้องยิงส่งรหัสผ่านไปยืนยันกับ Access Point ปลายทาง และเอาไปแคร็กที่อื่นที่ไม่มีสัญญาณ Wi-Fi อย่างบน Cloud ได้) ทำให้ถ้าหากผู้ให้บริการ Wi-Fi ที่ตั้งค่า WPA โดยใช้รหัส Wi-Fi ที่ไม่ปลอดภัย (ไม่ยาวหรือถูกคาดเดาได้ง่าย) อาจทำให้ผู้ไม่ประสงค์ดีแกะรหัส Wi-Fi ออกไปได้

รวมถึงสามารถนำรหัส Wi-Fi ที่แกะออกไปได้ ไปทำการถอดรหัสข้อมูลของผู้ใช้งานคนอื่น (ขาดคุณสมบัติ Forward Secrecy)

ถ้าหากมีการตั้งรหัสผ่านที่ไม่ปลอดภัย ก็อาจถูกแกะออกได้โดยง่าย ดังนั้น การใช้งาน WPA/WPA2 ควรจะต้องตั้งรหัสผ่านให้ยาว ๆ และไม่มีอยู่ในรหัสผ่านที่คาดเดาได้ง่ายหรือไม่อยู่ในรายชื่อรหัสผ่านเคยถูกแฮกในอดีต

ปัญหาของการถูกนำ WPA 4-way Handshake ไปทำการแคร็กแบบออฟไลน์ได้นี้ ถูกแก้ไขในมาตรฐานของ WPA3 Personal ด้วยการใช้วิธีการแลกกุญแจการเข้ารหัสแบบ Dragonfly Handshake ทำให้ใน WPA3 (ควร) จะทำอะไรแบบนี้ไม่ได้อีกต่อไป

และอีกปัญหาคือตามมาตรฐาน WEP/WPA/WPA2 ไม่ได้เข้ารหัสในข้อมูลในชั้นที่เรียกว่า Frame ทุกประเภท บางประเภทจะไม่ได้ทำการเข้ารหัส อย่าง Management Frame ทำให้เกิดการปลอม (Spoofing) ส่งการขอออกจาก Wi-Fi แทนผู้ใช้งานคนอื่น (เหยื่อ) ได้ เช่นการบังคับ (เตะ) ผู้ใช้งานคนอื่นออกจากการเชื่อมต่อ Wi-Fi ได้ 

รูปจาก https://en.wikipedia.org/wiki/Wi-Fi_deauthentication_attack 

ปัญหานี้ถูกแก้ไข (บางส่วน) ในมาตรฐานของ WPA3 ด้วยการใช้ Management Frame Protection (MFP) ที่เข้ารหัส Management Frame หลาย ๆ อันเพิ่มเติม โดยเฉพาะ Deauthentication Frame และ Disassociation Frame จะไม่สามารถถูกปลอมเพื่อเตะคนอื่นออกมั่ว ๆ ได้ง่าย ๆ อีกแล้ว

2.3 แกะรหัส Wi-Fi ที่เปิด WPS

อย่างไรก็ตาม ถ้าหากเปิดใช้งาน WPA/WPA2 และตั้งรหัสผ่านที่ปลอดภัยแล้ว ก็ยังมีโอกาสโดนแกะรหัสผ่านเข้าไปใช้งาน Wi-Fi ได้ด้วยวิธีการอื่น ๆ อีก เช่น ถ้าหากมีการเปิดใช้งาน ฟีเจอร์ชื่อ WiFi Protected Setup (WPS) ซึ่งจริง ๆ แล้ว จะเอาไว้ช่วยให้ผู้ใช้งานที่มาเกาะ Wi-Fi ทำได้ง่ายมากขึ้น โดยไม่ต้องพิมพ์ใส่รหัสผ่านยาว ๆ โดย WPS ออกแบบมาเน้นสำหรับผู้ใช้งานตามบ้าน (ไม่ใช่สำหรับ Wi-Fi ระดับองค์กร)

WPS จะมี Mode การทำงาน 2 รูปแบบหลัก ๆ คือ

1.PIN

คือที่อุปกรณ์ Wi-Fi Access Point อาจมีสติกเกอร์ที่มีหมายเลข PIN แปะอยู่เมื่อมีการเชื่อมต่อ Wi-Fi ก็สามารถใส่ค่า PIN นี้เข้าไป เพื่อใช้งานได้เลย

รูปตัวอย่าง WPS PIN จาก https://www.linksys.com/support-article?articleNum=143300 

นอกจากในสติกเกอร์ที่แปะบนอุปกรณ์แล้ว WPS PIN ตามปกติจะสามารถกดดูหรือกดเปลี่ยนค่าจากหน้าเว็บการตั้งค่า Wi-Fi Access Point หรือ Router ได้อีกด้วย นอกจาก Wi-Fi ที่เอาไว้ใช้งานอินเทอร์เน็ตปกติแล้ว WPS PIN ยังนิยมใช้ใน Wi-Fi ที่ปล่อยออกมาจากอุปกรณ์ Printer อีกด้วย เพื่อความง่ายในการเชื่อมต่อ

2. Push Button Configuration (PBC)

อีก Mode ของ WPS คือ Push Button Configuration ตามชื่อเลยคือใน Mode นี้เมื่ออุปกรณ์ผู้ใช้งาน Wi-Fi ที่กำลังจะเชื่อมต่อ Wi-Fi ที่รองรับ WPS จะมีข้อความขึ้นมาแจ้งเตือนว่าไปกดปุ่ม WPS ที่อุปกรณ์แทนพิมพ์รหัสผ่านยาว ๆ ก็ได้นะ

รูปจาก https://www.youtube.com/watch?v=lb2DyUbnWqU 

ตัวอย่างหน้าตาปุ่ม WPS PBC บนอุปกรณ์ Wi-Fi Router จาก Linksys

รูปจาก https://www.linksys.com/support-article?articleNum=143300 

ตัวอย่างการ ตั้งค่าของอุปกรณ์ Wi-Fi Access Point ให้เปิดใช้งานฟีเจอร์ WPS

WPS ในหลาย ๆ อุปกรณ์ Wi-Fi Access Point หรือ Router เป็นช่องโหว่ให้แฮกเกอร์เข้าถึงเครือข่ายของเหยื่อได้โดยไม่จำเป็นต้องใช้รหัสผ่านหรือ WPS PIN 

เอาจริง ๆ คนออกแบบ WPS มาตั้งแต่แรกก็พิจารณาไว้ว่า ตัวเลข 8 หลักใน WPS PIN หมายความว่าแฮกเกอร์ ที่จะลองเดาค่า จะต้องเดาค่าจาก 10^8 หรือ 100 ล้านความเป็นไปได้ในการสุ่มหาค่าที่ถูก ถ้าประเมินว่าการเดา 1 PIN ใช้เวลา 1 วินาทีแล้ว การลอง 100 ล้าน PIN จะใช้เวลา ประมาณ 1,200 วัน (10^8/60/60/24 = 1157.40) ซึ่งก็อาจจะไม่ใช่ตัวเลขที่แย่นักสำหรับการออกแบบความปลอดภัย Wi-Fi เพื่อการใช้งานทั่วไปตามบ้าน การเดา WPS PIN จะแตกต่างจากการแคร็กรหัสผ่าน WPA/WPA2 ในตัวอย่างก่อนหน้านี้โดยสิ้นเชิง เพราะว่า การแคร็กรหัสผ่าน WPA/WPS2 จากค่า WPA 4-way Handshake นั้นเราทำแบบออฟไลน์ได้ คือเก็บค่าไว้แล้วโยนไปแคร็กบน Cloud ภายหลังได้ และไม่ต้องอยู่ในบริเวณที่มีสัญญาณ Wi-Fi ก็ได้ ซึ่งอัตราความเร็วในการลองเดาสุ่ม (Hashrate) จะเร็วมหาศาล แต่พอมาเป็น WPS PIN การเดาตัวเลขตรงนี้ต้องทำแบบลองส่ง Packet ไปตรวจสอบกับ Wi-Fi Access Point ก่อน เป็นการเดาสุ่มรหัสผ่านแบบออนไลน์นั่นเอง ซึ่งก็จะมีความหน่วงใน Network Latency ที่ส่ง Packet หากัน และความหน่วงของอุปกรณ์ที่ต้องประมวลผลว่าค่า WPS PIN ถูกหรือเปล่า

แต่สุดท้ายก็มีปัญหาทางด้านความปลอดภัยของ WPS PIN ที่ถูกเจอและเอาไว้แฮกกันอย่างแพร่หลายเกิดจากสาเหตุว่า จริง ๆ แล้ว WPS PIN มันเป็นตัวเลข 8 ตัวก็จริง แต่ว่าแฮกเกอร์สามารถลองเดาสุ่ม โดยไม่ต้องเดา 10^8 ครั้งก็ได้ แต่เดาเพียงแค่ 10^4 + 10^3 ครั้ง หรืออยู่ที่เพียง 11,000 ครั้ง ถ้าคำนวณคล้าย ๆ เดิม การเดา 1 ครั้งใช้เวลา 1 วินาที ก็จะใช้เวลาประมาณ 3 ชั่วโมง (11000/60/60)

เพื่อความเข้าใจให้ดูรูปนี้ประกอบ

กระบวนที่ WPS PIN ถูกตรวจสอบ มันจะทำการหั่นตัวเลข WPS PIN ทั้ง 8 หลัก ออกเป็น 3 ส่วนคือ

  1. PIN ครึ่งแรก 4 ตัว
  2. PIN ครึ่งหลัง 3 ตัว
  3. Check Digit เป็นตัวเลขสุดท้าย 1 ตัว

ตัวเลขตัวสุดท้าย (ตัวที่ 8) เอาไว้ตรวจสอบว่าตัวเลข 7 ตัวแรกนั้นถูกต้อง หรือเรียกว่า Check Digit (Checksum) โดยเอาไปคำนวณตามสูตรในโค้ดด้านล่างนี้ แปลว่าจริง ๆ แล้ว การเดาไม่ใช่ 10^8 แต่เป็น 10^7 เนื่องจากตัวเลขหลักที่ 8 เราไม่ต้องเดา ถ้าเราคำนวณให้ถูกตามสูตรมันก็จะถูกเสมอนั่นเอง ปัญหาถัดมาคือ WPS ตรวจสอบ PIN ครึ่งแรก (4 ตัว) ก่อนว่าตรงไหม ถ้าตรงค่อยตรวจสอบ PIN ครึ่งหลัง (3 ตัว) ต่อ ด้วยจุดประสงค์ที่กลัวว่าถ้าตรวจสอบ PIN ทีเดียว 8 ตัวเลย อาจจะโดนปลายทางตัวปลอมมาดักข้อมูลค่า WPS PIN ไปได้

แต่ในทางกลับกันแปลว่า ถ้าเราลองเดา PIN เป็นตัวเลข 55550000 แล้วผิด ตอนจังหวะตรวจสอบ PIN ครึ่งแรก (4 ตัว) จะทำให้เรารู้ได้ว่า PIN ระหว่าง 55550000 ถึง 55559999 ผิดอย่างแน่นอนนั่นเอง เราก็สามารถเริ่มจากเดา 10^4 ตัวแรก (ไม่เกิน 10,000 ครั้ง) ให้ถูก เมื่อรู้แล้วว่า 4 ตัวแรกคืออะไร สมมุติคือ 7777 จากนั้นก็เอาไปเดา 10^3 ตัวหลังต่ออีกแค่ 1,000 ครั้ง ตั้งแต่ 7777000 – 7777999 (ในแต่ละครั้งของการตรวจสอบเราก็ใช้อัลกอริทึมด้านบนคำนวณ Check Digit) ก็จะสามารถเข้าสู่ระบบเครือข่ายได้ โดยใช้เวลาไม่นานเกินไป 

(อ้างอิงจาก https://en.wikipedia.org/wiki/Wi-Fi_Protected_Setup#Online_brute-force_attack

2.4 การนำรหัส Wi-Fi มาถอดรหัสข้อมูลของผู้ใช้งานคนอื่น (ขาดคุณสมบัติ Forward Secrecy)

อีกปัญหาด้านความปลอดภัยใหญ่ ๆ ที่ WEP/WPA/WPA2 แบบ Personal มี (แต่ WPA Enterprise ไม่มีปัญหานี้!) 

คือ ทุกคนใน Wi-Fi ถือรหัสผ่านเดียวกัน และรหัสผ่านนั้น นอกจากเอาไว้ยืนยันตัวตนเข้าใช้งาน Wi-Fi แล้วยัง สามารถนำไปใช้ “ถอดรหัส” ข้อมูลที่ลอย ๆ อยู่ในอากาศ ของผู้ใช้งานคนอื่น (เหยื่อ) ได้

ตัวอย่าง Scenario การแฮกคือ มี Alice กับ Bob เป็นผู้ใช้งาน Wi-Fi ของบริษัท SDH Bank ชื่อ SSID ว่า SDH-WiFi ที่ใช้การเข้ารหัสแบบ WPA2 จากนั้น ก็มีอีกคนคือ Eve ไปขอรหัส Wi-Fi จาก Bob หรืออาจจะแคร็กรหัส Wi-Fi ของ SDH-WiFi ได้ แต่สุดท้ายคือมีรหัสผ่านเข้าใช้งาน SSID เดียวกันทั้ง 3 คน จากนั้น สิ่งที่ Eve ทำได้คือ แอบดักข้อมูลในอากาศดูเว็บที่ Alice กับ Bob กำลังเข้า เสมือนกับการดักข้อมูลแบบเดียวกับ Open Wi-Fi ได้ทันที เพราะรหัส Wi-Fi ใช้ถอดรหัส Packet ต่าง ๆ ที่เข้ารหัสลอยในอากาศเหล่านั้นได้ นั่นเอง

สาเหตุหลักของปัญหานี้เกิดจากรหัสผ่านของ WEP/WPA/WPA2 เป็นแบบ PSK (Pre-Shared Key) และยังนำมาใช้เข้ารหัส Packet ได้โดยไม่ได้มีการสร้างและใช้งาน Session Key ในการเข้ารหัสข้อมูล Packet แยกกันของแต่ละคน ในทาง Crypto คุณสมบัติที่ถ้าแฮกเกอร์ดักข้อมูลแล้วได้รหัสผ่านหลักไปแล้ว จะต้องไม่ควรถอดรหัสข้อมูลทั้งหมดได้ (เพราะมีการสร้างและใช้งาน Session Key แยก) จะเรียกว่าการทำ Forward Secrecy ซึ่งไม่มีใน WEP/WPA/WPA2 

ดังนั้น การแชร์รหัส Wi-Fi แบบ WPA/WPA2 Personal ให้คนอื่น มีค่าเท่ากับ ยื่นกุญแจให้คนเหล่านั้น หรือยอมรับความเสี่ยงให้คนเหล่านั้น ถอดรหัสข้อมูล ของผู้ใช้งานคนอื่น ๆ ในวง Wi-Fi เดียวกันได้ทันที ถ้าหากเป็นการใช้งานตามบ้านทั่วไป อาจมีความเสี่ยงไม่มากนัก เพราะในบ้าน 1 หลังที่ใช้ Wi-Fi ร่วมกัน ก็อาจจะเป็นครอบครัวเดียวกัน แต่ถ้าหาก กรณีเดียวกันเกิดในบริษัท ที่มีผู้ใช้งานเป็นจำนวนมาก และอาจมีข้อมูลที่ควรเป็นความลับในการใช้งาน ดังนั้นการยอมให้ผู้ใช้งานคนหนึ่ง สามารถถอดรหัส ข้อมูลที่ส่งผ่าน Wi-Fi ของผู้ใช้งานคนอื่น ๆ ได้ เป็นสิ่งที่ไม่ปลอดภัย !!

ปัญหานี้ถูกแก้ไขในมาตรฐานของ WPA3 Personal ด้วยการใช้วิธีการแลกกุญแจการเข้ารหัสแบบ Dragonfly Handshake ที่มีการแลก Session Key ในการเข้ารหัสในแต่ละครั้ง

หรือสามารถย้ายไปใช้ WPA Enterprise แทน ก็จะไม่มีปัญหานี้เช่นกัน เพราะว่าผู้ใช้งานแต่ละคนก็จะมีรหัสผ่านแยกออกจากกัน ไม่ใช้รหัสผ่านเดียวกันแบบ WPA Personal นั่นเอง

2.5 ช่องโหว่จากการใช้งาน Wi-Fi แบบซ่อนชื่อ (Hidden SSID)

หลายคนอาจเข้าใจว่าการตั้งค่า Wi-Fi ให้เป็นแบบซ่อนชื่อ Wi-Fi (Hidden SSID) เป็นสิ่งที่ดี เพื่อความปลอดภัย แฮกเกอร์จะได้หา Wi-Fi เรายากขึ้น เวลาผู้ใช้งานจะเชื่อมต่อ ก็จะต้องพิมพ์ชื่อ Wi-Fi ที่เราซ่อนเอาไว้เข้าไปเอง

ตัวอย่างการตั้งค่าซ่อน SSID ที่อุปกรณ์ Wi-Fi Access Point

คราวนี้เมื่อทำการสแกนหา Wi-Fi ใหม่ก็จะไม่พบ SSID ชื่อ sth-demo แล้ว และ ถ้าหากลองค้นหา BSSID เดิมด้วย Monitor Mode ใน Wireshark จะพบกับ Beacon frame ชื่อ 000000 .. คือ Field สำหรับข้อมูลชื่อ SSID กลายเป็นค่า Null (ว่างเปล่า) ไปแล้วนั่นเอง

เมื่อผู้ใช้งานจะทำการเชื่อมต่อ Wi-Fi ก็จะต้องใส่ชื่อ SSID เข้าไปเอง

แต่หารู้ไม่ว่า การซ่อน Wi-Fi เพื่อความปลอดภัย เป็นความเข้าใจที่ถูกแค่ครึ่งเดียวด้วยเหตุผล 3 ข้อคือ

1.แฮกเกอร์สามารถรู้ได้ว่า บริเวณนั้น ๆ ที่ตนเองอยู่ มี Wi-Fi ซ่อนอยู่ จาก SSID ที่เป็นค่า Null ตามในรูป Wireshark ด้านบนนั่นเอง และการซ่อน SSID ก็อาจถูกตกเป็นเป้าหมายการโจมตีได้อยู่ดี

2.เวลามีผู้ใช้งานที่เคยต่อ Wi-Fi ที่ซ่อน SSID มาใช้งาน จะมีการส่ง Frame ประเภท Probe Request ไปในอากาศ และแนบชื่อ Wi-Fi นี้ซ่อนอยู่นี้ออกมา ทำให้รู้ได้อยู่ดีว่า SSID ที่ซ่อนอยู่ชื่ออะไร !!

ตัวอย่าง Probe Request ที่ปล่อยออกมาจากเครื่องโทรศัพท์ที่เคยต่อ SSID แบบซ่อนชื่อ sth-demo โดยสามารถใช้ Wireshark Filter ว่า wlan.fc.type_subtype == 0x0004 ในการหาได้

3.นอกเหนือจากนั้นประเด็นด้านความเป็นส่วนตัว เป็นปัญหามากที่สุดในการใช้ Wi-Fi แบบซ่อนชื่อ เพราะว่า จากข้อ 2 ที่ว่า อุปกรณ์ที่เคยต่อ Wi-Fi แบบซ่อนชื่อ จะคอยส่ง Probe Request ออกไปจากตัวเองตลอดเวลา เพื่อตามหา Wi-Fi ที่ซ่อนชื่อเหล่านั้น ทำให้แฮกเกอร์จะสามารถกระทำการดังนี้ได้ 

3.1 รู้ได้ว่าเหยื่อที่นั่งข้าง ๆ หรือแค่เดินผ่านกันนั้น เคยไปต่อ Wi-Fi (ซ่อน) ที่ไหนมาบ้าง? เช่นสมมุติ เคยแอบแฟนไปบ้านกิ๊ก แล้วต่อ Wi-Fi ซ่อนที่บ้านกิ๊กไว้ กลับมาบ้าน แฟนเป็นแฮกเกอร์มาตรวจ Probe Request เห็นชื่อ SSID ก็จะทราบได้ทันทีว่าแฟนตัวเองแอบไปบ้านกิ๊กมาเป็นต้น ลองนึกภาพว่าปี ๆ หนึ่งเราไปมาหลาย ๆ จังหวัด หรือหลาย ๆ ประเทศ แค่เราเดินสวนกับแฮกเกอร์ เค้าจะรู้หมดเลยจากชื่อ Wi-Fi ว่าเราไปต่อที่ไหนมา ก็เป็นเรื่องที่ไม่ค่อยดีเท่าไร 

3.2 ทำระบบที่มีอุปกรณ์วางไว้ตามสถานที่ต่าง ๆ และคอยเก็บ Log ว่ามี อุปกรณ์ จาก MAC Address อะไรเคยส่ง Probe Request ไปหา SSID อะไร เพื่อคอย Tracking เหยื่อว่าอยู่ที่ไหนได้เหมือนติด GPS ใส่เหยื่อเลยก็ว่าได้ กรณีนี้ก็ออกจะเป็นหนังแฮกเกอร์ไปหน่อย แต่ก็เคยมีคนลองทำกันจริง ๆ มาแล้ว

เวลาเราต่อ Wi-Fi ซ่อนผ่านอุปกรณ์โทรศัพท์หรือคอมพิวเตอร์ต่าง ๆ ก็มักจะมีคำเตือนขึ้นมานั่นเองว่า Wi-Fi ที่ซ่อนนั้น อาจมีปัญหาเรื่องความเป็นส่วนตัวได้ ตัวอย่างของ Android เตือนว่า “This may create a security risk because your phone will regularly broadcast its signal to find the network.”

ใครสนใจประเด็นนี้เพิ่มเติมตามไปอ่าน Paper ชื่อ Probing for Passwords – Privacy Implications of SSIDs in Probe Requests ได้ที่ https://arxiv.org/pdf/2206.03745.pdf และ Tracking of Vehicle’s Location Using Probe Request ที่ https://www.irjet.net/archives/V5/i4/IRJET-V5I4439.pdf

2.6 ความปลอดภัยใหม่ใน WPA3 Personal

หลังจากมีการโจมตีต่าง ๆ ที่เล่ามาแล้วนั้นก็ได้มีการออกมาตรฐานใหม่ ถัดจาก WPA2 Personal นั่นก็คือ WPA3 Personal ในปี 2018 โดยเน้นการแก้ไขจุดอ่อนทางด้านความปลอดภัยต่าง ๆ ของ WPA2 Personal โดยสรุปดังนี้

  • ยังใช้การเข้ารหัสด้วย AES เหมือนเดิม เพิ่มเติมคือเปลี่ยน Mode การเข้ารหัสจากของเดิม CBC เปลี่ยนเป็น GCM (Galois/Counter Mode) ที่มีจุดเด่นในด้านการเป็น Authenticated Encryption มีการตรวจสอบว่าข้อมูลที่ถูกเข้ารหัสไปแล้วนั้น ไม่ได้ถูกแก้ไข โดยผู้ไม่ประสงค์ดี ก่อนส่งไปถึงมือผู้รับ
  • WPA3 ใช้วิธีการแลกกุญแจการเข้ารหัสแบบ Dragonfly Handshake จะไม่มีการหลุดค่าที่สามารถดักเก็บไปแคร็กแบบออฟไลน์ได้เหมือนกับ WPA2 อีกต่อไป ด้วยการใช้ร่วมกับวิธีการชื่อว่า SAE (Simultaneous Authentication of Equals) ซึ่งเป็นประเภทหนึ่งของการทำ Password-Authenticated Key Agreement (PAKE) protocol ของดีเอาไว้ให้สองคน ที่แลกเปลี่ยนกุญแจกันไว้ล่วงหน้า ยืนยันตัวตนผ่านสื่อกลาง (ในบริบทนี้คืออากาศ) โดยที่คนที่ดักข้อมูลในอากาศได้ จะไม่สามารถรู้ค่ากุญแจ ไม่รู้ค่าเข้ารหัส ไม่รู้ค่า Hash ไม่รู้ค่าอะไรที่เอามาทำออฟไลน์แคร็กได้ เรียกว่าเอาไว้แก้ปัญหาที่ WPA2 มี ได้เป็นอย่างดี คาดว่าในอนาคตเทคนิคของ PAKE อาจจะถูกใช้ที่ Authentication Protocol อื่น ๆ เพิ่มเติมอีกแน่นอน
  • WPA3 จะมี Mode การใช้ย่อย 2 แบบคือ Transition Mode เอาไว้ให้อุปกรณ์ที่ยังรองรับแค่ WPA2 ต่อเข้ามา Wi-Fi ที่ปล่อยสัญญาณใช้การเข้ารหัสแบบ WPA3 ได้อยู่ และ แบบ WPA3 อย่างเดียว
  • แต่การมีอยู่ของ WPA3 Transition Mode ทำให้เกิดช่องโหว่ WPA3 Transition Downgrade ทำให้ผู้ไม่ประสงค์ดี หลอกให้เหยื่อเชื่อมต่อกลับไปยัง Access Point ของปลอมที่ชื่อเดียวกันแต่เป็น WPA2 และยังเก็บ WPA 4-way Handshake (ที่สร้างจากรหัสผ่านของ Access Point จริง) กลับมาลองแคร็กได้อยู่ดี โดยช่องโหว่นี้ถูกอธิบายไว้ในงานวิจัยชื่อ Dragonblood (ตั้งล้อชื่อ Dragonfly) นอกจาก Downgrade แล้วก็ยังมีช่องโหว่อื่น ๆ อีก สามารถเข้าไปดูรายละเอียดเพิ่มเติมได้ที่ https://wpa3.mathyvanhoef.com/ 

ในตารางต่อไปนี้แสดงข้อเปรียบเทียบระหว่าง WEP, WPA, WPA2 และ WPA3

WEPWPAWPA2WPA3
ปีที่ออกมาตรฐาน1999200320042018
อัลกอริทึมการเข้ารหัสRC4 (Rivest Cipher 4)Temporal Key Integrity Protocol (TKIP) ด้วย
RC4 (Rivest Cipher 4)
Counter Mode with Cipher Block Chaining Message Authentication Code Protocol (CCMP) 
ด้วย AES (Advanced Encryption Standard)
AES (Advanced Encryption Standard)
Mode ของการเข้ารหัสStream CipherStream CipherBlock CipherBlock Cipher
ขนาด Session Key64-bit128-bit128-bit128-bit
การทำ AuthenticationPSK (Pre-Shared Key)PSK (Pre-Shared Key)PSK (Pre-Shared Key)SAE (Simultaneous Authentication of Equals)
วิธีการแลก Session KeyWPA 4-way HandshakeWPA 4-way HandshakeSAE (Simultaneous Authentication of Equals) Handshake
Data IntegrityCRC-32MIC (Message Integrity Check)MIC (Message Integrity Check), CBC-MACSHA-2 (Secure Hash Algorithm)

ปัญหาของ WPA3 จะคล้ายกับ OWE ใน Wi-Fi Enhanced Open คือ อุปกรณ์ที่ใช้งานทั้งฝั่งผู้ใช้งาน และอุปกรณ์ Wi-Fi Access Point หรือ Router จะต้องรองรับ WPA3 ทั้งคู่

ตัวอย่างสำหรับฝั่งผู้ใช้งาน ต้องเป็นฮาร์ดแวร์ที่รองรับ เช่น iPhone รุ่น 7 เป็นต้นไป และซอฟต์แวร์ Windows 11, Android 10 ขึ้นไปเท่านั้น

3. สิ่งที่ WPA Enterprise เข้ามาแก้ปัญหา

WPA Enterprise จะใช้มาตรฐาน IEEE 802.1X แทนการใช้ Pre-Shared Key (PSK) ของ WPA Personal โดยการกำหนดให้มีเซิร์ฟเวอร์ที่ให้บริการ RADIUS (Remote Authentication Dial In User Service) เก็บและยืนยันความถูกต้องของชื่อผู้ใช้งานและรหัสผ่านของผู้ใช้งานแต่ละคน

และ WPA Enterprise ในรุ่นใหม่ ๆ จะใช้ร่วมกับมาตรฐาน EAP (Extensible Authentication Protocol) ที่มีการ การสร้าง/ใช้ใบรับรอง X.509 Certificate ให้เซิร์ฟเวอร์ (Server Certificate) และในบางรูปแบบ สร้างให้ผู้ใช้งานแต่ละคน ในกรณีทำ Client Certificate Authentication (EAP-TLS) ร่วมด้วยจะยิ่งปลอดภัยกว่า PSK มาก ๆ

WPA Enterprise จะช่วยแก้ปัญหาเรื่องที่ PSK (Pre-Shared Key) ใน WPA/WPA2 Personal ที่ทุกคนมีกุญแจเดียวกัน ในประเด็นต่อไปนี้

  1. การใช้ PSK เมื่อมีพนักงานบริษัทลาออก ก็อาจจะยังมีรหัส Wi-Fi เข้าถึงระบบเครือข่ายขององค์กรได้อยู่ดี ถ้าหากไม่ได้มีการเปลี่ยนทุกครั้งที่มีคนลาออก รวมถึงไม่สามารถบริหารจัดการรหัสผ่านได้อย่างปลอดภัย
  2. การใช้ PSK ไม่สามารถบริหารจัดการหรือจำกัดการใช้งาน Wi-Fi รายบุคคลได้
  3. การใช้ PSK ทำให้บริษัทตรวจสอบได้ยาก ว่าอุปกรณ์ที่กำลังเชื่อมต่อระบบเครือข่ายเป็นของใคร?
  4. การใช้ PSK คือการใช้กุญแจเดียวกันถอดรหัสข้อมูลในอากาศ ทำให้เกิดช่องโหว่ ทำให้พนักงานคนหนึ่ง สามารถถอดรหัสข้อมูล Wi-Fi ในอากาศที่ลอยอยู่ ซึ่งอาจเป็นของพนักงานคนอื่น (เหยื่อ) ได้

ในมุมผู้ใช้งานทั่วไป วิธีสังเกตว่าเรากำลังต่อ Wi-Fi แบบ WPA Enterprise คือในขั้นตอนการเชื่อมต่อ Wi-Fi จะมีให้กรอกข้อมูล Username และ Password ด้วย ตัวอย่างเช่น

ถ้าเป็น WPA Personal จะไม่มี Username ตรงนี้ ดังตัวอย่างในอีกรูป

ถ้าบริษัทไหนใช้ Azure AD อยู่แล้วสามารถใช้ NPS (Network Policy Server) ทำให้ใช้ รหัสผ่านของผู้ใช้งานแต่ละคนใน AD (Active Directory) เอามายืนยันตัวตนกับต่อกับ RADIUS ที่ใช้กับ WPA Enterprise ได้ทันที

 3.1 เปรียบเทียบ WPA Personal กับ WPA Enterprise

* ด้านความปลอดภัย ตามความคิดเห็นของผู้เขียน

คุณสมบัติWPA2 PersonalWPA2 Enterprise
การตั้งค่าใช้งานครั้งแรกง่าย(ถ้าทำเอง) ยากกว่า
การยืนยันตัวตนรหัสผ่านที่ใช้เหมือนกันทุกคนรหัสผ่านหรือสิ่งที่ใช้ยืนยันตัวตน ของผู้ใช้งานแต่ละคนแยกกัน
ต้องใช้เซิร์ฟเวอร์แยกไม่ต้องใช้อาจจำเป็นต้องใช้ ขึ้นอยู่กับ RADIUS มี Built-in ในอุปกรณ์หรือเป็นเซิร์ฟเวอร์แยก, ต้องการยืนยันตัวตนกับ AD
รองรับการใช้งาน การยืนยันตัวตนสองขั้นตอน (Two-Factor Authentication)ไม่รองรับรองรับ
โอกาสการโดนขโมยรหัสผ่านเข้า Wi-Fi แบบไม่ได้เข้ารหัสไม่มีปานกลาง (ถ้า User ไม่กดยอมรับ Certificate ปลอมใน EAP-TTLS/PAP), ไม่มีถ้าทำการยืนยันตัวตนแบบ Passwordless เช่น ใช้ Client Certificate
โอกาสการโดนแคร็กรหัสผ่านเข้า Wi-Fi แบบออฟไลน์สูงต่ำ (ไม่ได้ใช้ EAP ที่ Legacy อย่าง EAP-MD5)
โอกาสการโดนแคร็กรหัสผ่านแบบออนไลน์สูง (ถ้าเปิด WPS), ต่ำ (ถ้าไม่ได้เปิด WPS)ต่ำ
มีการเข้ารหัสข้อมูลมี (แต่ใช้กุญแจเข้ารหัสเดียวกันทุกคนถอดข้อมูลได้)มีและใช้กุญแจเข้ารหัสข้อมูลแยกกัน

จะเห็นว่า WPA2 Enterprise ตามสเปคแล้วมีความปลอดภัยสูงกว่า WPA2 Personal แต่แลกมาด้วยความยุ่งยากในการตั้งค่าใช้งานครั้งแรก และนอกเหนือจากนั้นในอุปกรณ์ Wi-Fi Access Point หรือ Router ต่าง ๆ ในรุ่นที่ขายสำหรับใช้งานตามบ้าน มักจะไม่รองรับ WPA2 Enterprise

สำหรับในฝั่งองค์กรเอง ถ้าหากมีผู้ใช้งานที่ค่อนข้างเยอะ การลงทุนกับ WPA2 Enterprise เพื่อแลกมาด้วยความปลอดภัยและการบริหารจัดการบัญชีผู้ใช้งานระยะยาว เป็นสิ่งที่คุ้มค่าที่จะทำ

3.2 การโจมตีด้วยเทคนิค Evil Twin

Twin แปลว่าฝาแฝด Evil Twin คือแฝดนรก ที่แฮกเกอร์ จะทำการเปิด SSID ปลอมที่เชื่อเหมือนของจริง เช่น บริษัทมี Wi-Fi ชื่อ SDH-Corp แฮกเกอร์ก็เปิด Wi-Fi ชื่อเดียวกัน SDH-Corp เพื่อให้เหยื่อหลงเชื่อและทำการเชื่อมต่อเข้ามา หลังจากนั้นรหัสผ่านที่เหยื่อใช้ในการเชื่อมต่อก็มีโอกาสโดนดักเพื่อนำมาใช้งาน การโจมตีในลักษณะนี้ถือว่าเป็นการทำ Honeypot ก็ได้

นอกเหนือจากการทำ Evil Twin เพื่อขโมยรหัสผ่านเข้า Wi-Fi เหยื่อ (ซึ่งอาจจะเป็นบัญชี AD ด้วย) แล้ว อาจจะใช้ทำการโจมตีอย่างอื่นได้อีก เช่น การดักข้อมูลหลังจากเหยื่อต่อ Wi-Fi สำเร็จ อาจจะดักข้อมูลที่รับ-ส่งผ่าน Protocol ที่ไม่ได้มีการเข้ารหัส (เหมือนกรณีดักของ Wi-Fi แบบ Open แต่คราวนี้ถูกดักอ่านได้ เพราะว่าข้อมูลวิ่งผ่านอุปกรณ์เครือข่ายของผู้โจมตีเอง)

จากที่อธิบายในตารางว่า WPA Enterprise มีโอกาสโดนดักรหัสผ่านที่ไม่ได้เข้ารหัสและไม่ต้องเอาไปแคร็กนั้น จะมีโปรแกรมยอดนิยมสำหรับการโจมตีด้วยเทคนิค Evil Twin สำหรับ WPA2 Enterprise คือ EAPHammer (https://github.com/s0lst1c3/eaphammer) ง่ายและสะดวกที่สุด นอกเหนือจาก EAPHammer ก็จะมีโปรแกรมอื่นอีก เช่น hostapd-wpe (https://github.com/OpenSecurityResearch/hostapd-wpe

หรือสามารถที่จะตั้งเซิร์ฟเวอร์ RADIUS ขึ้นมาเองด้วยโปรแกรม freeradius และใช้โปรแกรม hostapd ในการเปิด Access Point บนเครื่องเซิร์ฟเวอร์ Linux เองก็ได้

โดยสามารถทำได้ทั้งเมื่อเหยื่อต่อ Wi-Fi เข้ามาให้ขึ้นว่ารหัสผ่านผิดเสมอ และเก็บรหัสผ่านเหยื่อเอาไว้ หรือจะทำให้ไม่ว่าเหยื่อจะใส่รหัสผ่านอะไรเข้ามา ก็สามารถเข้าใช้งาน Wi-Fi ได้เช่นกัน

ตัวอย่างการทำ Evil Twin ด้วยโปรแกรม freeradius และ hostapd เพื่อดักรหัสผ่านใน WPA Enterprise (ของปลอม) ในตัวอย่างนี้เป็น EAP-TTLS/PAP

ที่มารูป https://www.youtube.com/watch?v=HoihKhQWZ7k 

รูปแบบการยืนยันตัวตน EAP (Extensible Authentication Protocol) ของ WPA Enterprise ที่ไม่แนะนำ คือ อาจโดน Evil Twin เล่นงานได้โดยตรงหรือมีช่องโหว่ ได้แก่

  • PAP (ส่งรหัสผ่านแบบไม่เข้ารหัสเลย)
  • LEAP
  • EAP-MD5
  • EAP-FAST/MSCHAPv2
  • PEAP/MSCHAPv2 (ถ้าเหยื่อไม่เช็ค Server Certificate ว่าถูกต้อง)
  • EAP-TTLS/MSCHAPv2 (ถ้าเหยื่อไม่เช็ค Server Certificate ว่าถูกต้อง)
  • EAP-TTLS/MSCHAP (ถ้าเหยื่อไม่เช็ค Server Certificate ว่าถูกต้อง)
  • EAP-TTLS/CHAP (ถ้าเหยื่อไม่เช็ค Server Certificate ว่าถูกต้อง)
  • EAP-TTLS/PAP (ถ้าเหยื่อไม่เช็ค Server Certificate ว่าถูกต้อง)

ประเภทขเอง EAP อ้างอิงจากเอกสารของ Intel

https://www.intel.com/content/www/us/en/support/articles/000006999/wireless/legacy-intel-wireless-products.html

สิ่งที่ควรทำเมื่อใช้งาน WPA Enterprise คือ

  • ควรใช้ EAP-TLS ที่สร้าง X.509 Client Certificate ให้ผู้ใช้งานเข้าสู่ระบบด้วย Private Key/Certificate ของตนเอง แทนการใส่รหัสผ่าน (Passwordless)
  • ควรมีการทำและเปิดใช้งานการยืนยันตัวตนสองขั้นตอน (ขึ้นอยู่กับระบบภายในที่ใช้)
  • ควรมีนโยบายและการอบรมไม่ให้ผู้ใช้งานเชื่อมต่อ Wi-Fi ที่มีใบรับรองที่ไม่ถูกต้อง 

5. บทสรุป

ข้อแนะนำ การตั้งค่าความปลอดภัย WPA2 Personal

  • ควรย้ายไปใช้ WPA3 ถ้าทำได้ เพราะความปลอดภัยดีกว่ามาก ๆ ถ้าหากกลัวว่าผู้ใช้งานในเครือข่ายอาจจะยังมีอุปกรณ์ที่ไม่รองรับก็สามารถใช้ WPA3 Transition Mode ไปก่อนได้
  • ไม่ควรเปิดใช้งานฟีเจอร์ WPS และการเข้ารหัสแบบ WEP 
  • ไม่ควรตั้ง SSID เป็นแบบซ่อนชื่อ ควรตั้งให้ประกาศชื่อออกไปได้เลย
  • ควรตั้งรหัสผ่านให้ยาวอย่างน้อย 16 ตัว
  • หลีกเลี่ยงการใช้งาน Wi-Fi แบบ Open แม้ว่าจะใช้หน้าเว็บยืนยันตัวตนแบบ Captive Portal แล้วก็ตาม ถ้าใช้อุปกรณ์รุ่นใหม่ อาจเลือกใช้ OWE แทน
  • ถ้าหากอุปกรณ์ในเครือข่ายรองรับ 5 Ghz ทั้งหมด ควรยกเลิกการเปิด 2.4 Ghz เพราะอุปกรณ์ Wi-Fi Chipset ของแฮกเกอร์ที่รองรับ 5 Ghz มีน้อยกว่า !

ปัญหาของ WPA Personal ทุกรุ่น คือ ไม่สามารถใช้ในการกำหนดสิทธิ์การเข้าถึงของผู้ใช้งาน รวมถึงไม่สามารถบริหารจัดการผู้ใช้งานในระบบได้โดยง่าย (เป็นการยากที่จะรู้ว่าใครเข้ามาใช้บ้าง ใช้งานเมื่อไร และมีใครเอารหัสผ่านไปให้คนอื่นใช้หรือเปล่า)

สรุปปัญหาเฉพาะของ WPA/WPA2 Personal

  • WPA/WPA2 Personal เป็นการเข้ารหัสแบบมีกุญแจเดียวที่สร้างไว้ล่วงหน้า เรียกว่า PSK (Pre-Shared Key) ทำให้ทุกคนที่เข้าใช้งาน Wi-Fi นั้น ๆ ใช้รหัสผ่านเดียวกัน หรือเราเรียกกันว่า “รหัส Wi-Fi” ในการ (1) ยืนยันตัวตนเข้าใช้งานระบบเครือข่ายไร้สาย (2) เข้ารหัสข้อมูลที่รับ-ส่งภายในระบบเครือข่ายไร้สายนั้น ๆ
    • ปัญหาที่ 1 คือรหัส Wi-Fi ที่มีค่าเดียว เป็นการยากที่จะบริหารจัดการเช่น เมื่อต้องการเปลี่ยนใหม่ต้องบอกทุกคน หรือมีพนักงานลาออกก็ยังรู้รหัส Wi-Fi นั้น ๆ อยู่ และมีความเสี่ยงที่ถ้าหากตั้งรหัสผ่านไม่ปลอดภัย อาจถูกแกะ (Crack) ออกได้โดยผู้ไม่มีสิทธิ์เข้าใช้งาน Wi-Fi นั้น ๆ
    • ปัญหาที่ 2 คือผู้ไม่ประสงค์ดีหรือแฮกเกอร์ ที่ล่วงรู้กุญแจเข้ารหัส (รหัส Wi-Fi) เดียวกันนั้น สามารถที่จะถอดรหัส ข้อมูลที่รับ-ส่งในเครือข่ายไร้สายได้

สำหรับ WPA3 Personal ปลอดภัยกว่า WPA2 Personal เยอะมาก ถ้าใช้อุปกรณ์ที่รองรับ ควรปิด Transition Mode ด้วย เพื่อลดความเสี่ยงการถูกโจมตีด้วยช่องโหว่ Downgrade

ข้อแนะนำ การตั้งค่าความปลอดภัย WPA2 Enterprise

  • ควรย้ายไปใช้ WPA3 Enterprise แต่อุปกรณ์ยังรองรับน้อยมาก ทั้งฝั่งอุปกรณ์เครือข่ายและอุปกรณ์ที่จะมาเชื่อมต่อ
  • จากความเสี่ยงของ WPA Personal ที่เล่ามาทั้งหมด องค์กรควรเลือกใช้ WPA Enterprise ในรูปแบบ EAP-TLS เลี่ยงการใช้ WPA Personal และถ้าเป็นไปได้เลี่ยงการใช้รหัสผ่าน เปลี่ยนเป็น X.509 Client Certificate (Passwordless) ร่วมกับ Two-Factor Authentication เช่น Google Authentication, Okta แทน

บทความที่เกี่ยวข้อง