Mathy Vanhoef จาก imec-DistriNet, KU Leuven พบช่องโหว่ที่ชื่อว่า KRACKs ซึ่งเป็นตัวที่ทำให้ผู้โจมตีสามารถ”อ่าน”หรือทำอะไรนอกเหนือกว่านั้นกับ WPA2 Traffic ได้

สรุป (Too Long Didn’t Read: TLDR)

  • เป็นการโจมตี Man-in-the-Middle อีกที ซึ่งทำให้การโจมตีนั้นไม่สามารถทำได้ง่ายนัก
  • Update:: เป็นการทำให้ Client ใช้งาน Key เก่า ทำให้ Hacker สามารถถอดรหัส stream packet ได้เลย
  • Update2:: เครื่องมือสำหรับการทดสอบ
  • เราสามารถป้องกันที่ฝั่ง Client ได้โดยการระบุว่าให้ติดตั้ง key แค่ครั้งละ key เท่านั้น
  • ข้อแนะนำไม่ต้องกังวลมาก หรือไม่ก็ใช้ VPN ซ้อนอีกทีระหว่างใช้งานใน Wireless ครับ

Wireless WPA2

การใช้งาน Wireless ถือเป็นเรื่องปกติไปแล้ว ไม่ว่าจะเป็นร้านค้าหรือที่ไหนก็แล้วแต่ก็มีการให้บริการเป็น Wireless Network แม้แต่รถเมล์ในไทยก็ยังมีการให้บริการเป็น Free Wifi ด้วยซ้ำ แต่เราก็ทราบกันดีว่า หากเป็น Open Wifi นั้นทำให้คนที่อยู่ในระแวกเดียวกันสามารถดักจับหรือแก้ไขข้อความแบบ on-the-fly หรือก็คือขณะมีการรับ-ส่ง traffic ได้เลย ซึ่งทำให้มีการพัฒนาเรื่อง security หรือก็คือการเข้ารหัส Wireless Network นั่นเอง โดย ณ ปัจจุบันจุดสูงสุดของ Wireless Security ที่มีอยู่คือ WPA2 (Wi-Fi Protected Access version 2)

โดยปกติการ Authentication ในการเข้าใช้งานจะใช้ส่วนที่เรียกว่า 4 way handshake มีคุณสมบัติดังนี้

– เมื่อ Client จะต่อกับ Access Point จะมีการสร้าง temporal keys สำหรับการสร้างคู่ message ในการคุยขึ้นมา ซึ่งในทุกๆที่มีการสร้างขึ้นมานั้นจะไม่มีความเหมือนกันเลยทุกครั้งในการสร้าง connection, Groupwise Temporal Key (GTK) จะไม่ซำ้กันเลย แต่ในกรณีที่เป็น broadcast, multicase frame client ทุกๆคนจะใช้ GTK เดียวกัน จะไม่ใช่การสร้างใหม่ทุกๆครั้ง
– Key ชั่วคราวนี้จะถูกสร้างขึ้นจาก Master Key (Pairwise Master Key(PMK)) ซึ่งอาจเป็นได้ทั้ง passphase ของ WPA-PSK หรือ key ที่ถูกสร้างจากกระบวนการของ EAP process ของ WPA-802.1x ก็เป็นได้ (ในกรณีที่เป็น WPA Enterprise)
– เมื่อ Key ชั่วคราวถูกสร้างขึ้น Attacker จะไม่สามารถดักจับการใช้งาน Master Key ได้

ซึ่งการกระทำดังจะมีขั้นตอนดังนี้

1) AP ส่งไปยัง Client โดย Message ดังกล่าวจะมีการสร้าง ANonce หรือก็คือ message ที่ถูกสร้างจาก Pairwise Temporal Key(PTK) generator โดยใช้ทั้งรายละเอียดของตัวที่เชื่อมต่อและ PMK
2) Client ส่ง SNonce + Message Integrity Code (MIC) ซึ่งเป็นตัวเช็คความถูกต้องของ key ที่ถูกเก็บไว้ส่งไปให้ AP จากนั้น AP จะสร้าง MIC ของฝั่งตัวเองแล้วดูว่าตรงมั้ย ถ้าตรงก็จะเริ่มขั้นตอนถัดไป
3) หากไม่มีการ retransmission ใดๆหลายๆครั้ง (หรือก็คือไม่ได้รับการตอบกลับจากฝั่ง AP หรือข้อมูลไม่เสียหาย) AP ก็จะเริ่มคุยกับ Client ว่าข้อมูลที่ใช้ในการทำ PTK และ GTK มีอะไรบ้างต่อไป
4) เมื่อทุกอย่างพร้อมแล้วทั้ง PTK และ GTK ก็จะทำการคุยกันแบบเข้ารหัสต่อไป

KRACKs

ทีนี้มาต่อกันที่ KRACKs กันบ้าง ช่องโหว่ที่ทำให้เกิด Key Reinstallation Attacks (KRACKS) เกิดขึ้นที่เมื่อ client พยายามจะต่อ network จะกระทำเรื่อง 4-way handshake เพื่อสร้าง PTK ซึ่งมันต้องผ่านขั้นตอนที่ 3 ไปก่อน ทีนี้หาก Message ในขั้นตอนที่ 3 นั้นถูก drop บ่อยๆหรือเสียหายบ่อยๆ ซึ่งหากไม่มีการ ACK กลับมาจาก client บ่อยๆ จะทำให้ตัว AP จะส่ง message 3 ใหม่ไปให้กับ Client หลายๆครั้ง ซึ่งส่งผลให้ Client จะมีการติดตั้ง key เดิมซ้ำๆหลายๆครั้ง กระบวนการที่จะเกิดขึ้นคือ Nonce เก่าอาจถูกนำกลับมาใช้ใหม่ ซึ่งนั่นก็คือการใช้งาน key เก่านั่นเอง สิ่งที่เกิดขึ้นคือ Attacker สามารถถอดรหัสหรือเกิดการ replay packet ได้

ซึ่งการโจมตีนี้จำเป็นต้องมีการสร้าง fake AP (ขอเพิ่มเติมคือเครื่องมือใดๆที่สามารถส่ง Nonce Message 3 ได้) ขึ้นมาแล้วส่ง Message 3 รัวๆไปที่ Client แล้วทำตัวเป็น Man-in-the-Middle ระหว่าง AP จริงกับ Client ทำให้ Client นั้นรับ Key ไปหลายๆครั้งแล้วติดตั้ง (ซึ่งตัวผมเองมองว่าถ้าจะทำแบบนี้ได้มันมีการโจมตีอะไรที่รุนแรงกว่านี้เยอะให้ทำ เช่น SSLStrip เป็นต้น) โดยทางผู้พบบอกว่ายิ่ง Wireless Access Point นั้นใช้เป็น WPA-TKIP หรือ GCMP (แทนที่จะเป็น AES-CCMP)ก็จะยิ่งโจมตีได้สำเร็จได้ง่ายขึ้น

หรือไม่งั้นก็รอให้ Vendor เจ้าต่างๆทำการ patch ต่อไป

ข้อแนะนำ

  • Update Wireless Client Driver เพื่อทำการติดตั้ง Key แค่ครั้งเดียวในแต่ละช่วงเวลาเท่านั้น
  • รอการ update จากฝั่ง Vendor เพื่อแก้ไขการใช้งาน Key
  • ไม่ต้องกังวลมากครับ
  • การใช้งาน Wireless Network ใดๆควรเพิ่ม Secure Layer เพิ่มขึ้น เช่น การใช้ VPN เป็นต้น

เครื่องมือสำหรับการทดสอบว่าเครือข่ายนั้นมีช่องโหว่ KRACKs หรือไม่

Update: Ubuntu ออก WPA Package Update wpa_supplicant (2.4-0ubuntu6.2) แล้วครับ update เพื่อป้องกันช่องโหว่ได้เลยครับ

Source::