WPA2 ¡°KRACK¡± ©¶´¼ò½éÓëÖØÏÖ
Ðû²¼Ê±¼ä 2018-01-241¡¢¸ÅÊö
2017Äê10Ô£¬±ÈÀûʱÄþ¾²Ñо¿Ô±Mathy VanhoefÅû¶ÁËÎÞÏßÍøÂçÐÒéWPA2´æÔÚ¸ßΣ©¶´£¬Â©¶´ÔÊÐí¹¥»÷Õß¼àÌýAPºÍ½ÓÈëµãSTAÖ®¼ä´«ÊäµÄWi-FiÊý¾ÝÁ÷Á¿¡£×÷ÕßÐû²¼ÁË©¶´ÑéÖ¤ÑÝʾÊÓƵ[1][2]¡£ÓÉÓÚ©¶´´æÔÚÓÚWiFiÐÒé²ã£¬ÀíÂÛÉÏËùÓÐÖ§³ÖWPA2µÄ¿Í»§¶Ë£¨×ÀÃæ²Ù×÷ϵͳ¡¢Òƶ¯OS¡¢Â·ÓÉÆ÷¡¢ÎïÁªÍøÉ豸µÈ£©¶¼½«Êܵ½¡°KRACK¡±¹¥»÷µÄÓ°Ï죨Æä͸¹ýWiFi´«ÊäµÄÊý¾Ý´æÔÚ±»¸Ä¶¯¡¢Ðá̽µÄ·çÏÕ£¬ÖîÈç±»¹¥»÷ÕßµÄÖ§¸¶¡¢¹¤ÒµÕ˺š¢Óû§Ãû¡¢ÃÜÂë¡¢Óʼþ¡¢ÕÕƬµÈÃô¸ÐÐÅÏ¢¿É±»½Ø»ñ£¬Î£º¦´óÓ°Ï췶Χ¹ã£©¡£
¶«Éƽ̨ADLabͨ¹ý¶ÔÈ«ÁãÃÜԿ©¶´µÄ·ÖÎöÀÖ³ÉÖØÏÖ¡°KRACK¡±¹¥»÷¡£
2¡¢ÐÒé¼ò½é
802.11iÊÇIEEEÊÂÇé×éΪÎÞÏßÍøÂç802.11ÐÒé×é½ç˵µÄÄþ¾²³ß¶È¡£WPAʵÏÖÁËIEEE 802.11i³ß¶ÈµÄ´ó²¿ÃÅ£¬ÊÇÔÚ802.11iÍ걸֮ǰÌæ´úWEPµÄ¹ý¶É·½°¸£¬ºó±»WPA2È¡´ú[3]¡£WPAºÍWPA2¶¼ÊÇ»ùÓÚ802.11i£¬Çø±ðÔÚÓÚWPA2ÒªÇóÖ§³Ö¸üÄþ¾²µÄCCMP¡£WPAºÍWPA2¾ùʹÓÃ802.11iÖнç˵µÄËÄ´ÎÎÕÊÖ¡£
ÏÂͼÊÇ¿Í»§¶Ë£¨Station, STA£©Á¬½Ó½ÓÈëµã£¨Access Point, AP£©µÄÏûÏ¢½»»¥¹ý³Ì¡£

STAºÍAPÔÚËÄ´ÎÎÕÊÖÖÐÐÉ̻ỰÃÜÔ¿PTK£¨Pairwise Transient Key£©£¬PTKÊÇÓÉPMKºÍPKE¼ÆËãÉú³É£¬¶øPMKÓÉANonce¡¢SNonceºÍË«·½MACµØÖ·µÈ¼ÆËãÉú³É¡£PTK·ÖΪKCK£¬KEKºÍTKÈý²¿ÃÅ£¬ÆäÖУ¬KCKÓÃÓÚMICУÑ飬KEKÓÃÓÚ¼ÓÃÜGTK£¬TKΪÊý¾Ý¼ÓÃÜÃÜÔ¿¡£ËÄ´ÎÎÕÊÖÍê³Éºó£¬´«ÊäÊý¾ÝʹÓÃTK½øÐмÓÃÜ¡£

3¡¢Â©¶´ÔÀí
wpa_supplicantÊÇlinuxϵͳÏÂWiFi¿Í»§¶Ë£¬ÓÃÓÚÁ¬½ÓÎÞÏßÍøÂ磬Android WiFiϵͳÒýÈëÁËwpa_supplicant£¬ËüµÄÕû¸öWiFiϵͳÊÇÒÔwpa_supplicantΪºËÐÄÀ´½ç˵ÉϲãÓû§½Ó¿ÚºÍϲãÇý¶¯½Ó¿Ú¡£
ÏÂͼΪwpa_supplicant°æ±¾Ðû²¼Ê±¼äÏß¡£Android 6.0 WiFiϵͳÊÇ»ùÓÚv2.5£¬Android 6.0+ WiFiϵͳÊÇ»ùÓÚv2.6¡£

v2.4°æ±¾ÒýÈëÁËÒ»¸öÈ«ÁãÃÜԿ©¶´¡£Õâ¸ö©¶´ÊÇÓÉ802.11³ß¶ÈÖеÄÒ»¾ä»°ÒýÆðµÄ£¬¸Ã³ß¶È¼ä½Ó½¨ÒéÔÚ°²×°ÁËTKÖ®ºó´ÓÄÚ´æÇå³ýTK£»2016Äê10ÔÂÐû²¼µÄV2.6¶ÔÕâ¸ö©¶´½øÐÐÁËÒ»´ÎÐÞ¸´£¬ÓÉÓÚ¿¼ÂDz»È«Ã棬´úÂëÈÔÈ»´æÔÚ©¶´£»ÔÚ2017Äê10ÔÂÐû²¼µÄ²¹¶¡ÖУ¬×îÖÕÐÞ¸´ÁËÕâ¸ö©¶´¡£ÏÂÃæ½áºÏ´úÂë¶Ô©¶´½øÐÐÏêϸ·ÖÎö¡£
3.1. V2.4(2.5)
wpa_supplicant 2.4(2.5) ËÄ´ÎÎÕÊÖÖеÄ״̬תÒÆÈçÏÂͼËùʾ£º
£¨1£©µ±Á¬½Óµ½ÎÞÏßÍøÂç½øÐÐËÄ´ÎÎÕÊÖµÄʱºò£¬Ê×ÏȽøÈëPTK_INIT״̬¡£
£¨2£©µ±½ÓÊÕµ½Msg1ʱ£¬½øÈëPTK-START½×¶Î¡£wpa_supplicant»áËæ»úÉú³ÉÒ»¸öSNonce£¬¼ÆËãÒ»¸öÁÙʱPTK£¨TPTK£©£¬¶øÇÒÔÚMsg2Öн«SNonce·¢Ë͸øAP¡£
£¨3£©µ±½ÓÊÕµ½Msg3ʱ£¬Èç¹ûMICºÍreplay counterУÑéÀֳɣ¬½øÈëPTK-NEGOTIATING״̬¡£È»ºó½«TPTK¸³Öµ¸øPTK£¬²¢·¢ËÍMsg4¡£
£¨4£©½Ó׎øÈëPTK-DONE½×¶Î£¬°²×°PTKºÍGTK£¬¶øÇÒ´ò¿ª802.1xµÄ¶Ë¿Ú£¬Ê¹wpa_supplicantºÍAPÕý³£½ÓÊպͷ¢ËÍÊý¾Ý°ü¡£
ÓÉÓÚÎÞÏßÍøÂç´æÔÚ×ÌÈÅ£¬¿ÉÄÜ»áÔì³ÉÊý¾ÝÖ¡µÄ¶ªÊ§£¬Òò´ËÔÚ802.11i¹æ¶¨Èç¹ûAPûÓÐÊÕµ½Msg2ºÍMsg4£¬»áÏàÓ¦µÄÖØ´«Msg1ºÍMsg3¡£´ÓͼÖпÉÒÔ¿´³ö£¬µ±Íê³ÉPTK°²×°ºó£¬Èç¹ûÊÕµ½ÖØ´«µÄMsg3£¬»áÖØа²×°PTK¡£

µ±wpa_supplicantÊÕµ½Msg3ºó£¬»áµ÷ÓÃwpa_supplicant_install_ptkº¯Êý°²×°PTK£¬ÆäÖÐwpa_sm_set_keyº¯ÊýÂôÁ¦½«ÃÜÔ¿PTK.TK°²×°µ½Çý¶¯¡£ÔÚsupplicant v2.4(v2.5)ÖУ¬ÔÚµ÷ÓÃwpa_sm_set_keyº¯ÊýÍê³ÉPTKµÄ°²×°ºó£¬Ö´ÐÐos_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN)£¬¶ÔPTK.TK½øÐÐÇåÁã²Ù×÷¡£
Èç¹û¹¥»÷Õß½Ù³ÖMsg3»òMsg4£¬Ôì³ÉMsg3µÄÖØ´«£¬Æ¾¾Ý״̬תÒÆͼ£¬STA»áÖØа²×°PTK£¬¶øPTK.TK֮ǰÒѾ±»ÇåÁ㣬µ¼ÖÂSTA°²×°È«Áã¼ÓÃÜÃÜÔ¿¡£

3.2. V2.6
ÏÂÃæ½áºÏV2.5ºÍV2.6µÄÔ´´úÂë½øÐзÖÎö¡£
£¨1£©V2.6ÔÚwpa_sm½á¹¹ÌåÖÐÌí¼ÓÁËÒ»¸ö±ê־λtk_to_set¡£

£¨2£©V2.6ÐÞ¸ÄÁËwpa_supplicant_install_ptkº¯Êý¡£ÔÚ°²×°ÍêPTKºó£¬½«tk_to_set¸³ÖµÎª0£¬µ±ÔٴνøÈë¸Ãº¯Êýʱ£¬Èç¹ûtk_to_set==0£¬Ö±½Óreturn£¬²»ÔÙÖØ×°PTK¡£

£¨3£©V2.6ÐÞ¸Äwpa_supplicant_process_1_of_4º¯Êý¡£µ±Ã¿´ÎÊÕµ½Msg1ʱ£¬¼ÆËãtptk£¬²¢½«tk_to_setÖØÖÃΪ1¡£

Õë¶ÔV2.6£¬¹¥»÷Õßͨ¹ýÔÚÖØ´«µÄMsg3֮ǰ²åÈëÒ»¸öαÔìµÄMsg1£¬ÈÔÈ»¿ÉÒÔʵÏÖÈ«ÁãÃÜÔ¿µÄ°²×°¡£ËäÈ»STAÊ״ΰ²×°PTKºó¶Ôtk_to_set½øÐÐÇåÁ㣬µ«Êǽô½Ó´¦ÖÃαÔìµÄ Msg1ʱ£¬½«tk_to_setÖØÖÃΪ1£¬Òò´ËÔÚ×îºó´¦ÖÃÖØ´«Msg3ʱ£¬ÀÖ³ÉÈƹýwpa_supplicant_install_ptkº¯ÊýµÄtk_to_setÌõ¼þÅжϴúÂë¡£
ÔÚ2017Äê10ÔÂÐû²¼µÄ²¹¶¡ÖУ¬É¾³ýÁËwpa_supplicant_process_1_of_4º¯ÊýÖеÄsm->tk_to_set = 1;Óï¾ä£¬ÐÞ¸´ÁËÈ«ÁãÃÜԿ©¶´¡£
4¡¢Â©¶´ÖØÏÖ
¶«Éƽ̨ADLab ¡°KRACK¡±ÖØÏÖÊÓƵµØַΪ£ºhttps://v.qq.com/x/page/m0538vcwqbb.html ¡£
ÊÓƵÖзºÆðµÄ²½Öè¼°Ìáʾ×ÖÄ»£º
1.±¾ÊµÑéʹÓÃNexus6ÊÖ»ú×÷Ϊ±»¹¥»÷É豸¡£
2.Ê×ÏÈ£¬NexusÁ¬½Óµ½ÕæʵAP(SSID=wap£¬¼ÓÃÜ·½Ê½ÊÇWPA2£¬ÐŵÀ10£¬ÆµÂÊ2457)¡£
3.½Ó×Å£¬ÔËÐÐHostapd´´½¨¿Ë¡AP(SSID=wap£¬¼ÓÃÜ·½Ê½ÊÇWPA2£¬ÐŵÀ3£¬ÆµÂÊ2422)¡£
4.ͬʱ£¬Æô¶¯wireshark¼àÌý¿Ë¡APÍø¿¨£¬²¶×½¿Í»§¶ËÊý¾Ý¡£
5.ÔËÐй¥»÷½Å±¾£¬Ö¸¶¨APµÄSSIDºÍNexusµÄMacµØÖ·¡£
6.ÔËÐÐssltrip,½øÐÐHttps½µ¼¶¡£
a.wiresharkÏÔʾÁ˽¨Á¢Á¬½ÓµÄÊý¾Ý°ü¡£
b.¹¥»÷Àֳɣ¬NexusÁ¬½Óµ½¿Ë¡wap£¬ÆµÂÊ2422¡£
c.·ÃÎÊuk.match.com ÏÔʾµ±Ç°Á¬½ÓΪhttpÁ¬½Ó£¬ÊäÈë²âÊÔÓû§ÃûºÍÃÜÂë¡£
d.wireshark¿ÉÒÔÀֳɲ¶×½Óû§ÃûºÍÃÜÂë¡£
e.¹Ø±ÕHostapd£¨ÆµÂÊ2422£©¡£
f.ÖØÐÂÁ¬½Óµ½Õæʵwap£¨ÆµÂÊ2457£©£¬ÔٴηÃÎÊuk.match.com ÏÔʾÁ¬½ÓΪhttpsÁ¬½Ó¡£
ϱíÖÐÁгöÁËÖØÏÖÊÓƵÖÐʹÓõÄÉ豸£º

5¡¢Â©¶´±àºÅ¼°ÐÞ¸´Çé¿ö
¡°KRACK¡±Éæ¼°µÄÏà¹Ø©¶´±àºÅ£º
CVE-2017-13077: ÔÚËÄ´ÎÎÕÊÖÖÐÖØ×°³É¶Ô¼ÓÃÜÃÜÔ¿£¨PTK-TK£©
CVE-2017-13078: ÔÚËÄ´ÎÎÕÊÖÖÐÖØ×°×éÃÜÔ¿£¨GTK£©
CVE-2017-13079: ÔÚËÄ´ÎÎÕÊÖÖÐÖØ×°ÍêÕû×éÃÜÔ¿£¨IGTK£©
CVE-2017-13080: ÔÚ×éÃÜÔ¿ÎÕÊÖÖÐÖØ×°×éÃÜÔ¿£¨GTK£©
CVE-2017-13081: ÔÚ×éÃÜÔ¿ÎÕÊÖÖÐÖØ×°ÍêÕû×éÃÜÔ¿£¨IGTK£©
CVE-2017-13082: ½ÓÊÜÖØд«ÊäµÄ¿ìËÙBSSÇл»£¨FT£©ÖØйØÁªÇëÇó£¬ÖØ×°³É¶Ô¼ÓÃÜÃÜÔ¿£¨PTK-TK£©
CVE-2017-13084: ÔÚPeerKeyÎÕÊÖÖÐÖØ×°STKÃÜÔ¿
CVE-2017-13086: ÔÚTDLS£¨Tunneled Direct-Link Setup£©ÎÕÊÖÖÐÖØ×°TDLS PeerKey£¨TPK£©
CVE-2017-13087: ´¦ÖÃÎÞÏßÍøÂç¹ÜÀí£¨WNM£©ÐÝÃßģʽÏìӦ֡ʱÖØ×°×éÃÜÔ¿£¨GTK£©
CVE-2017-13088: ´¦ÖÃÎÞÏßÍøÂç¹ÜÀí£¨WNM£©ÐÝÃßÏìӦ֡ʱÖØ×°ÍêÕû×éÃÜÔ¿£¨IGTK£©
ÐÞ¸´Çé¿ö£º
2017Äê10ÔÂ2ÈÕ£¬LinuxµÄhostapdºÍwpa_supplicant ²¹¶¡ÒÑÐû²¼£¬Ïê¼û https://w1.fi/security/2017-1/¡£
2017Äê10ÔÂ10ÈÕ£¬Î¢ÈíÔÚWindows 10 ²Ù×÷ϵͳÖÐÐû²¼²¹¶¡ KB4041676¡£
Æ»¹ûÔÚ×îÐ嵀 beta °æ±¾iOS¡¢macOS¡¢ tvOSºÍ watchOSÖÐÐÞ¸´ÁËÎÞÏßÍøÂçÄþ¾²Â©¶´¡£
6¡¢²Î¿¼Á´½Ó
[1]https://www.krackattacks.com/
[2]https://papers.mathyvanhoef.com/ccs2017.pdf
[3]https://zh.wikipedia.org/wiki/WPA