WPA2 ¡°KRACK¡± ·ì϶¼ò½éÓëÖØÏÖ

°ä²¼¹¦·ò 2018-01-24

1¡¢¡¢¡¢¸ÅÊö

        2017Äê10Ô£¬£¬±ÈÀûʱ°²È«×êÑÐÔ±Mathy VanhoefÅû¶ÁËÎÞÏßÍøÂçºÍ̸WPA2´æÔÚ¸ßΣ·ì϶£¬£¬·ì϶ÔÊÐí¹¥»÷Õß¼àÌýAPºÍ½ÓÈëµãSTAÖ®¼ä´«ÊäµÄWi-FiÊý¾ÝÁ÷Á¿¡£¡£×÷Õß°ä²¼ÁË·ì϶ÑéÖ¤ÑÝʾÊÓÆµ[1][2]¡£¡£ÓÉÓÚ·ì϶´æÔÚÓÚWiFiºÍ̸²ã£¬£¬ÀíÂÛÉÏËùÓÐÖ§³ÖWPA2µÄ¿Í»§¶Ë£¨×ÀÃæ²Ù×÷ϵͳ¡¢¡¢¡¢Òƶ¯OS¡¢¡¢¡¢Â·ÓÉÆ÷¡¢¡¢¡¢ÎïÁªÍøÉ豸µÈ£©¶¼½«Êܵ½¡°KRACK¡±¹¥»÷µÄÓ°Ï죨Æä͸¹ýWiFi´«ÊäµÄÊý¾Ý´æÔÚ±»´Û¸Ä¡¢¡¢¡¢Ðá̽µÄ·çÏÕ£¬£¬ÖîÈç±»¹¥»÷ÕßµÄÖ§¸¶¡¢¡¢¡¢²Æ¸»Õ˺Å¡¢¡¢¡¢Óû§Ãû¡¢¡¢¡¢ÃÜÂë¡¢¡¢¡¢Óʼþ¡¢¡¢¡¢ÕÕÆ¬µÈÃô¸ÐÐÅÏ¢¿É±»½Ø»ñ£¬£¬Î£º¦´óÓ°ÏìÁìÓò¹ã£©¡£¡£

        OG¶«·½Ìü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£©µÄÐÂÎŽ»»¥¹ý³Ì¡£¡£

OG¶«·½Ìü¡¤(Öйú´ó½)

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

OG¶«·½Ìü¡¤(Öйú´ó½)

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¡£¡£

OG¶«·½Ìü¡¤(Öйú´ó½)

        v2.4°æ±¾ÒýÈëÁËÒ»¸öÈ«ÁãÃÜÔ¿·ì϶¡£¡£Õâ¸ö·ì϶ÊÇÓÉ802.11³ß¶ÈÖеÄÒ»¾ä»°ÒýÆðµÄ£¬£¬¸Ã³ß¶È¼ä½Ó½¨ÒéÔÚ×°ÖÃÁËTKÖ®ºó´ÓÄÚ´æ¶Ï¸ùTK£»2016Äê10Ô°䲼µÄV2.6¶ÔÕâ¸ö·ì϶½øÐÐÁËÒ»´ÎÐÞ¸´£¬£¬ÓÉÓÚ˼¿¼²»È«Ã棬£¬´úÂëÒÀÈ»´æÔÚ·ì϶£»ÔÚ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¡£¡£

OG¶«·½Ìü¡¤(Öйú´ó½)

        µ±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×°ÖÃÈ«Áã¼ÓÃÜÃÜÔ¿¡£¡£

OG¶«·½Ìü¡¤(Öйú´ó½)

3.2.  V2.6

        ÏÂÃæ½áºÏV2.5ºÍV2.6µÄÔ´´úÂë½øÐзÖÎö¡£¡£

        £¨1£©V2.6ÔÚwpa_sm½á¹¹ÌåÖÐÔö³¤ÁËÒ»¸ö±ê־λtk_to_set¡£¡£

OG¶«·½Ìü¡¤(Öйú´ó½)

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

OG¶«·½Ìü¡¤(Öйú´ó½)

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

OG¶«·½Ìü¡¤(Öйú´ó½)

        Õë¶Ô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¡¢¡¢¡¢·ìÏ¶ÖØÏÖ

        OG¶«·½ÌüADLab ¡°KRACK¡±ÖØÏÖÊÓÆµµØÖ·Îª£ºhttps://v.qq.com/x/page/m0538vcwqbb.html ¡£¡£

        ÊÓÆµÖгöÏֵIJ½Öè¼°ÌáÐÑ×ÖÄ»£º

        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Ïνӡ£¡£

        ϱíÖÐÁгöÁËÖØÏÖÊÓÆµÖÐʹÓõÄÉ豸£º

OG¶«·½Ìü¡¤(Öйú´ó½)

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