Hoe worden wachtwoorden gekraakt?
Accounts worden zelden gehackt zoals je dat in films ziet. In de praktijk wordt een wachtwoord op een van drie manieren verkregen. Het wordt gekraakt: achterhaald door kandidaat na kandidaat te proberen, meestal tegen een database met wachtwoordhashes die van een dienst zijn gestolen. Het wordt gestolen: ingetypt op een neppagina of gekopieerd door malware. Of het wordt hergebruikt: aanvallers nemen een wachtwoord uit een eerder datalek en proberen het op andere diensten, rekenend op het feit dat de eigenaar het daar ook heeft gebruikt. Dat verschil doet ertoe, omdat elke methode door iets anders wordt tegengegaan. Dit artikel behandelt de belangrijkste methoden en noemt wat helpt tegen elk daarvan.
Hergebruikte wachtwoorden uit datalekken
Elk jaar worden diensten gehackt en worden hun gebruikersdatabases te koop aangeboden of gratis gedeeld. Aanvallers nemen de combinaties van e-mailadres en wachtwoord uit één lek en proberen ze automatisch uit op banken, mailproviders, webwinkels en sociale netwerken — een aanval die credential stuffing wordt genoemd. Er komt geen enkel giswerk aan te pas, en het werkt om een eenvoudige reden: mensen hergebruiken wachtwoorden. Zelfs een sterk wachtwoord helpt hier niet als het overal hetzelfde is.
Wat helpt: een ander wachtwoord voor elk account, zodat een lek bij één dienst nergens anders toegang geeft.
Phishing
Een phishingpagina is een kopie van een echte inlogpagina op een net iets ander adres, bereikt via een link in een e-mail of bericht dat dringend klinkt: een geblokkeerd account, een pakket, een factuur. Alles wat je daar intypt, gaat rechtstreeks naar de aanvaller. De lengte en willekeur van het wachtwoord maken geen enkel verschil, omdat je het zelf invoert.
Wat helpt: open sites vanuit je eigen bladwijzers in plaats van via links. Gebruik een wachtwoordmanager: deze biedt alleen aan om een wachtwoord in te vullen op het adres waarvoor het is opgeslagen; als hij het opgeslagen wachtwoord niet aanbiedt, controleer dan het adres voordat je het met de hand intypt. En schakel tweestapsverificatie in, waardoor een gestolen wachtwoord op zichzelf niet voldoende is. Eenmalige codes kunnen echter op dezelfde manier worden gephisht als het wachtwoord. Passkeys en FIDO2-beveiligingssleutels kunnen dat niet, omdat ze alleen reageren op de echte site — het onderscheid dat NIST phishing-resistentie noemt.
Malware
Programma's die bekendstaan als infostealers kopiëren de in een browser opgeslagen wachtwoorden, samen met sessiecookies, en verzenden ze binnen enkele seconden na uitvoering, terwijl keyloggers registreren wat er wordt getypt. Een gestolen sessiecookie kan een aanvaller toegang geven tot een account waarop al is ingelogd, zonder het wachtwoord en zonder de tweede factor. Zulke programma's komen meestal binnen via illegale software, valse updates en e-mailbijlagen.
Wat helpt: software alleen installeren vanaf de officiële bron, het systeem en de browser up-to-date houden en een onverwachte bijlage als gevaarlijk beschouwen — al biedt geen van deze maatregelen een garantie. Als een apparaat is geïnfecteerd, handel dan vanaf een ander apparaat waarvan je weet dat het schoon is: wijzig de wachtwoorden, gebruik de optie van elke dienst om bij alle sessies uit te loggen en controleer of het herstel-e-mailadres, het telefoonnummer en de instellingen voor tweestapsverificatie nog van jou zijn. Maak het geïnfecteerde apparaat schoon voordat je er opnieuw op inlogt.
Raden via het inlogformulier
Wachtwoorden rechtstreeks op een website uitproberen is traag: een goed gebouwde dienst vertraagt, blokkeert of vraagt om een captcha na een paar verkeerde pogingen. Dat maakt het herhaaldelijk bestoken van één account inefficiënt, dus is een veelgebruikte aanpak het tegenovergestelde: een handvol van de meest voorkomende wachtwoorden — 123456, password, qwerty123 — uitgeprobeerd op miljoenen accounts, wat password spraying wordt genoemd. Gericht raden werkt op dezelfde manier met persoonlijke gegevens: de namen van kinderen en huisdieren, verjaardagen, een favoriet team, allemaal gemakkelijk te vinden op sociale media.
Wat helpt: elk wachtwoord dat niet veelvoorkomend is en niet is opgebouwd uit feiten over jou — zie hoe je een sterk wachtwoord maakt.
Gestolen hashes offline kraken
Een goed gebouwde dienst slaat wachtwoorden niet in leesbare vorm op. Hij slaat hashes op — de uitkomst van een eenrichtingsfunctie waaruit het wachtwoord niet kan worden terugberekend. Wanneer zo'n database lekt, testen aanvallers mogelijke wachtwoorden: ze berekenen de hashes van kandidaten op hun eigen hardware en vergelijken de resultaten. Geen enkel inlogformulier remt hen af, en de snelheid hangt af van de hashfunctie die de dienst heeft gekozen en de instellingen daarvan. Voor snelle, verouderde functies zoals MD5 test een enkele moderne grafische kaart tientallen miljarden kandidaten per seconde. Functies die zijn ontworpen voor het opslaan van wachtwoorden — Argon2id, of bcrypt in oudere systemen — zijn bewust traag en verlagen die snelheid met vele ordegroottes, en daarom noemen huidige aanbevelingen juist deze functies.
Woordenboekaanvallen
De kandidaten zijn niet willekeurig. Kraaktools beginnen met lijsten van echte wachtwoorden uit eerdere datalekken en met woordenboeken van woorden en namen, en passen vervolgens regels toe die menselijke gewoonten nabootsen: een hoofdletter aan het begin, een jaartal of een uitroepteken aan het einde, een letter vervangen door een vergelijkbaar symbool. Een wachtwoord als Summer2024! ziet er complex uit, maar behoort tot de eerste kandidaten die worden geprobeerd. Salting — het toevoegen van een unieke willekeurige waarde aan elk wachtwoord vóór het hashen — voorkomt dat aanvallers vooraf berekende tabellen kunnen gebruiken, bekend als rainbow tables, en dat ze alle identieke wachtwoorden in één keer kraken, maar het maakt een voorspelbaar wachtwoord niet minder voorspelbaar.
Brute force
Wanneer de woordenboeken zijn uitgeput, rest nog het proberen van elke combinatie, en bij een willekeurig gegenereerd wachtwoord is lengte wat de doorslag geeft. Neem ter illustratie een snelle hash en een wachtwoord waarin elk teken onafhankelijk, met gelijke waarschijnlijkheid, wordt gekozen uit de 94 afdrukbare ASCII-tekens, met uitzondering van de spatie. Er zijn ongeveer 6 × 1015 van zulke wachtwoorden van 8 tekens; bij tien miljard pogingen per seconde duurt het uitproberen van allemaal ongeveer een week, en gemiddeld duikt het juiste wachtwoord in de helft van die tijd op. Voor 12 tekens zou het uitproberen van alle mogelijkheden op dezelfde hardware ongeveer 1,5 miljoen jaar duren, en voor 16 ontstijgt het getal elke zinvolle vergelijking. Dat is het hele argument voor lange willekeurige wachtwoorden: woordenboeken hebben er weinig vat op, en onder deze aannames is het proberen van elke combinatie niet praktisch. Onze generator voor sterke wachtwoorden maakt ze in je browser en toont voor elk wachtwoord een entropieschatting in bits.
Wat helpt: een lang wachtwoord zonder menselijk patroon, wat in de praktijk neerkomt op een gegenereerd wachtwoord. Je kunt niet bepalen hoe een dienst je wachtwoord opslaat, dus ga uit van het ergste en kies er een die bestand is tegen raden, zelfs wanneer het wordt opgeslagen met een snelle hashfunctie.
Meekijken over de schouder en social engineering
De oudste methoden vereisen geen technologie. Een wachtwoord wordt over een schouder meegelezen, van een sticker op een beeldscherm afgekeken of gezien op een scherm dat wordt gedeeld in een videogesprek; of de aanvaller vraagt er simpelweg om, zich voordoend als helpdeskmedewerker of collega — wat social engineering wordt genoemd. Geen enkele legitieme dienst zal ooit via telefoon, e-mail of chat naar je wachtwoord vragen.
Wat helpt: nooit een wachtwoord aan iemand vertellen of sturen, en het niet bewaren op plekken waar anderen het kunnen zien.
Wat dit betekent
Verschillende aanvallen worden tegengegaan door verschillende gewoonten, en drie daarvan doen het meeste werk: een uniek wachtwoord voor elk account, gegenereerd in plaats van verzonnen, met daarbovenop tweestapsverificatie — of een passkey in plaats van het wachtwoord waar de dienst dat aanbiedt. Ze dekken niet alles af — een gestolen sessie bijvoorbeeld — en daarom is het bovenstaande advies over malware eveneens belangrijk. Meer lees je in de artikelen over wachtwoorden.