Simovits

WPS – Weakly Protected Setup? – Del 1

Denna blogginläggsserie, skriven av Peder Sparell, är på två delar behandlar WPS, vilket är en extra funktion för trådlösa nätverk som genom sin konstruktion är väldigt bristfällig.

Det är ingen ny funktion, och dess sårbarhet som vi tar upp här är inte direkt någon nyhet, men det känns fortfarande aktuellt då förvånandsvärt få känner till hur sårbar deras WLAN-utrustning är på grund av detta, och många har utrustning stående som installerats med defaultinställningar för några år sedan och sedan glöms bort tills de får en ny accesspunkt vid nästa abbonemangsbyte eller tills något slutar fungera. Många vet inte ens vad WPS är och/eller struntar helt enkelt att bry sig om inställningarna för den funktionen för de inte tänker använda den.

Om du är en av dem, så är du med stor sannolikhet omedvetet sårbar för en effektiv attack mot ditt WiFi, där en angripare lätt kan få tag på din WPA-nyckel (PSK) oavsett hur lång och komplicerad den är.

I detta inlägg, del 1, förklaras kort vad WPS är och varför det är så sårbart, och i del 2 kommer vi att utföra praktiska tester där vi utför attacker mot två WiFi-enheter.

Det har upptäckts ytterligare kritiska sårbarheter i implementationen av WPS i vissa enheter, men vi kikar i huvudsak på den som upptäcktes i slutet av 2011.

Översikt WPS

För att sätta upp ett trådlöst nätverk manuellt måste oftast användaren efter att ha kopplat in sin nya router koppla en dator till den via det fysiska nätverket för att kunna logga in i dess administratörswebgränssnitt. Sedan måste han in i inställningarna för det trådlösa nätverket och skriva dit ett SSID (nätverksnamn), välja säkerhetstyp samt en nätverksnyckel. När detta är gjort kan han koppla upp sina trådlösa enheter genom att välja sitt nätverks SSID och skriva in samma nyckel i den aktuella enhetens inställningar.

Detta ansåg Wi-Fi Alliance vara på tok för avancerat för medelanvändaren, så för att förenkla konfiguration av trådlösa nätverk för användare i hem och småföretag presenterade de 2007 lösningen ”Wi-Fi Protected Setup” – WPS, som skulle låta medelanvändaren konfigurera sitt nätverk utan att behöva gå igenom de steg som tidigare var nödvändiga för att sätta upp sitt nätverk, utan i stället låta mycket av detta ske automatiskt.
För att en WLAN-produkt ska bli certifierad och därmed få använda de skyddade namnen ”Wi-Fi Protected Setup” eller ”WPS” måste produkten följa Wi-Fi Alliance framtagna standard. Det kan förklara att de flesta tillverkare har egna namn på samma funktion som kan sitta i av någon anledning icke ännu certifierade produkter, vilket kan anses till viss del förvirrar och motverkar enkelheten. Exempelvis om vi tittar på de enheter vi tänkte testa kallar ibland Netgear sin funktion för PNC – ”Push ‘N’ Connect”, och TP-Link kallar sin för QSS – ”Quick Security Setup” och ibland kallar de den båda för WPS.

Metoder

WPS har olika metoder för att ansluta en enhet till en nätverket, varav de vanligaste två (PBC och PIN) förklaras nedan. Accesspunkter måste stöda båda dessa metoder för att bli certifierade.
Det finns även ”out-of-band”-metoder som är något mer ovanliga, där man med hjälp av annan media så som ett usb-minne eller NFC (Near Field Communication) utbyter nyckeln.

Protokollet

WPS använder sig av Wi-Fi Simple Configuration, vilket innefattar en specifikation på protokollet som används för att skicka meddelanden mellan de olika parterna.
Den första figuren nedan är från (Wi-Fi Alliance, 2006, s. 22) som visar en översikt över vilka meddelanden som skickas mellan parterna. I vårt fall spelar verktyget Reaver som vi ska använda rollen som både ”User” och ”Registrar”, och ”AP” är accesspunkten.
Den andra figuren har en mer detaljerad men ändå överskådlig sammanställning, och är Stefan Viehböcks tabell från (Viehböck, S. (2011-1)) som är enkel att följa och har förklarande text för ändamålet.

Om man tittar på meddelande M4, så ska ”Registrar” (i vårt fall verktyget Reaver) i detta meddelande till ”Enrollee” (i vårt fall accesspunkten) bevisa att han känner till första halvan av PIN-koden, och i M6 bevisa att han känner till andra halvan.
I den lilla rutan längst ned syns även hur PIN-koden är uppdelad.
Varför dessa saker är intressanta förklaras nedan.

Sårbarheten

I slutet av december 2011 offentliggjordes sårbarhet VU#723755 av cert.org, efter att den rapporterades av Stefan Viehböck. Föga överraskande hade ännu ett team, lett av Craig Heffner, upptäckt samma sårbarhet och dagen efter släppte de sitt verktyg ”Reaver” som kan användas för att utnyttja den i praktiken.
Till att börja med så borde det säga sig självt att WPS kringgår all säkerhet som reglerna för nyckellängd i WPA/WPA2 medför, genom att använda sig av en PIN-kod på exakt 8 siffror för att kunna ansluta sig, jämfört med WPA:s nyckel som kräver minst 8 siffror/bokstäver/specialtecken (skrivbara ASCII-tecken).
För att använda en brute force-attack mot en 8-siffrig sifferkod måste man testa 10^8=100 miljoner kombinationer, vilket jämfört med en 8 tecken lång slumpmässig WPA-nyckel som ger ca 95^8 = ~6,6 biljarder kombinationer är en struntsumma. Dock så blir det ändå opraktiskt i brute force-sammanhang när varje försök mot WPS tar i storleksgraden 1 sekund. Att testa alla 10^8 kombinationer skulle ta ca 32 år, men statistiskt sett är medeltiden tills man hittar rätt nyckel den halva, alltså enbart 16 år.
Det finns dock några svagheter i algoritmen och protokollet för meddelandeutbytena i WPS som förenklar för angriparen och drar ner antalet kombinationer väsentligt:

Antal kombinationer drogs nu drastiskt ned till 10 000 + 1 000 = 11 000 st. Detta gör att en brute force-attack är helt klart genomförbar och realistisk trots långsam onlinegissning. Om man lyckas med att hålla hastigheten 1 gissning per sekund medför det att man kan prova alla kombinationer på ca 3 timmar, och medelgenomförandetiden för en attack blir ca 1½ timme.

Reaver – översikt

Reaver är ett verktyg utvecklat av en av upptäckarna av sårbarheten, Craig Heffner, och finns i en open source-version samt en kommersiell hårdvaruversion. Hårdvaruversionen har ett grafiskt gränssnitt, är optimerad i sitt PIN-kodssökande, och kan skicka resultatet till specificerad e-mailadress när den hittat PIN och nätverksnyckel.
Gratisversionen av verktyget är ett kommandoradsprogram och några viktiga argument förklaras nedan. Denna version ingår i Kali Linux, och är den vi kommer att använda.
Verktyget försöker först med kända vanliga default-PIN-koder, och fortsätter därefter gå igenom alla varianter av första halvan av PIN-koden och struntar i att ändra på andra delen (förutom checksumman som måste stämma). När den väl hittat första delen fortsätter den med de tre siffrorna i andra delen tills den slutligen hittar rätt.

Argument

Detta är inte en komplett lista på Reavers alternativ, utan en lista på de vanligaste eller av annan anledning intressanta.

Argument Förklaring Exempel Obligatorisk? default
-i Interface
Vilket nätverksgränssnitt som ska användas. (Måste vara i monitor mode.)
-i mon0 Ja
-b BSSID
AP:ns MAC-adress.
-b 00:11:22:33:44:55 Ja
-c Channel
Vilken kanal som Reaver ska använda. Något snabbare initiering, men om AP:n byter kanal följer inte Reaver efter.
-c 11 Nej auto
-e ESSID/SSID
Nätverkets namn
-e Homenetwork Nej (bara om AP:n inte sänder ut sitt SSID) auto
-t Timeout
Timeout för mottagning av meddelanden.
-t 2 Nej 5
-d Delay
Dröjsmål mellan PIN-försök (sekunder).
-d 5 Nej 1
-v
-vv
Verbose
Visa fler statusmeddelanden (-vv=ännu fler).
-vv Nej
-l Lock delay
Om reaver upptäcker att AP:n låst sig, vänta med att försöka mer i detta antal sekunder.
-l 300 Nej 60
-r X:Y Recurring delay
Efter ett antal (X) PIN-försök, vila ett antal (Y) sekunder.
-r 10:15 Nej
-x Fail wait
Om samma fel sker 10 försök i rad, vila i detta antal sekunder.
-x 360 Nej 0
-S
Small Diffie-Hellman keys
Använd små dh-nycklar för att AP:n ska få jobba mindre och därmed snabba upp processen.
-S Nej
-h Help. -h Nej

Våra attackmål

De enheter vi använder som testobjekt är något äldre, men det är något oväsentligt då det dels faktiskt fortfarande finns många som använder dessa modeller eller motsvarande, samt att sårbarheten till stor del består av själva implementationen av funktionen som fortfarande har samma standard, även om många tillverkare på nyare modeller börjat implementera bättre skydd såsom låsning vid för många misslyckade PIN-kodsförsök etc.

TP-link

Den första enheten som är tänkt som mål för attacken är en TP-Link TD-W8951ND, och är ett ADSL-modem med inbyggd router/switch samt WLAN-accesspunkt. Denna produkt kan fortfarande, trots åldern, medfölja vid tecknande av nytt bredbandsabbonemang.
Denna produkt är WiFi-certifierad i november 2010, men själva WPS-funktionen verkar inte ha klarat testerna, så detta modem är inte WPS-certifierad. Den WPS-liknande funktionen heter därmed i denna produkt QSS istället för WPS.
På framsidan sitter knappen för PBC-anslutningar och PIN-koden står på en etikett på undersidan (se bild) så väl som i inställningarna för det trådlösa nätverket i webgränssnittet (se bild).
PIN-koden är 67495740 som ni kan se på bilderna nedan (klicka för att förstora).
(Normalt avråder vi så klart starkt från att på något sätt blotta sådan känslig information, men i detta fall kommer inte dessa enheter att nånsin användas igen.)

Netgear

Den andra modellen är en router/switch med inbyggt WLAN och heter Netgear WNR2000. Den har några år på nacken och blev (senast) WPS-certifierad 1 augusti 2008.
Även denna modell har sin PCB-knapp på framsidan, men till skillnad från TP-linkmodemet kan den alltså stoltsera med att skylta knappen med bokstavskombinationen ”WPS”.
Likt TP-linkmodemet har denna också sin PIN-kod på en etikett på baksidan (se bild), samt i webgränssnittet på sidan för ”Avancerade trådlösa inställningar” (se bild).
WPS är som förval aktiverat i fabriksinställningarna, även i den senaste inbyggda programvaran daterad december 2011. Sårbarheten offentliggjordes senare samma månad, och efter det har ingen ny programvara till denna modell släppts, vilket känns positivt inför testet.
Denna enhets PIN-kod är som synes på bilderna nedan: 55340670.

Härnäst kommer vi att utföra attacker mot dessa två accesspunkter med hjälp av i huvudsak verktyget Reaver.

>>>>> Vidare till Del 2 >>>>>

Referenser

CERT® Coordination Center. (2011). Vulnerability Notes Database. Vulnerability Note VU#723755
Heffner, C. (2011-2016). Reaver Open Source Project Home
Microsoft. (2006). WCN-Netspec (version 1.1)
Netgear. (2008-2016). What is Wi-Fi Protected Setup (WPS) or Push ‘n’ Connect?
Netgear. (2012-2016). How do NETGEAR Home routers defend WiFi Protected Setup PIN against brute force vulnerability?
Okänd/flera författare. (2011-2016). WPS Vulnerability Database
Viehböck, S. (2011-1). Brute forcing Wi-Fi Protected Setup – When poor design meets poor implementation. (version 3)
Viehböck, S. (2011-2). Wi-Fi Protected Setup PIN brute force vulnerability
Wi-Fi Alliance. (2006). Wi-Fi Protected Setup Specification (version 1.0h)
Wi-Fi Alliance. (2008). Certification ID: WFA6317 (Netgear WNR2000)
Wi-Fi Alliance. (2010). Certification ID: WFA9733 (TP-link TD-W8951ND)