Hoewel World Password Day voorbij is, dat jaarlijks plaatsvindt op de eerste donderdag van mei, blijven wij (en hopelijk ook jij) gefascineerd door wachtwoordbeveiliging. In plaats van zelfgecreëerde wachtwoorden te analyseren die voor onderzoeksdoeleinden waren gemaakt, besloten we ons onderzoek in de praktijk uit te voeren. Hierbij hebben we echte wachtwoorden onderzocht die op het dark web waren gelekt. De resultaten waren zorgwekkend: 59% van deze wachtwoorden kon in minder dan een uur worden gekraakt. Hiervoor was alleen een moderne grafische kaart nodig en wat handigheid.
In het bericht van vandaag wordt uitgelegd hoe hackers wachtwoorden kraken en hoe dit tegengegaan kan worden (spoileralert: gebruik betrouwbare beschermin en laat je wachtwoorden automatisch gecontroleerd worden op lekken).
De gebruikelijke manier om wachtwoorden te kraken
Laten we eerst uitleggen wat we precies bedoelen met ‘een wachtwoord kraken’. We hebben het over het kraken van de hash van het wachtwoord, oftewel een unieke reeks tekens van het wachtwoord. Bedrijven slaan gebruikerswachtwoorden doorgaans op een van de volgende drie manieren op:
- Platte tekst. Dit is de eenvoudigste en duidelijkste manier: als het wachtwoord van een gebruiker bijvoorbeeld qwerty12345 is, wordt het op de bedrijfsserver opgeslagen als qwerty12345. Als er zich een datalek voordoet, hoeft de hacker alleen het wachtwoord met de bijbehorende gebruikersnaam in te voeren om in te loggen. Dit is natuurlijk alleen mogelijk mits er geen tweefactorauthenticatie (2FA) is, maar zelfs dan kunnen cybercriminelen soms eenmalige wachtwoorden
- Met deze methode wordt gebruikgemaakt van hash-algoritmen zoals MD5 en SHA-1. Zo kan elk wachtwoord worden omgezet in een unieke hash-waarde in de vorm van een tekenreeks met een vaste lengte. Deze wordt opgeslagen op de server. Wanneer de gebruiker zijn wachtwoord invoert, zet het systeem de ingevoerde reeks tekens om in een hash en vergelijkt het deze met de reeks die op de server is opgeslagen. Als ze overeenkomen, is het wachtwoord correct. Als je wachtwoord bijvoorbeeld weer qwerty12345 is, maar daarna wordt ‘vertaald’ naar SHA-1, ziet het er als volgt uit: 4e17a448e043206801b95de317e07c839770c8b8. Hackers die deze hash weten te verkrijgen, moeten deze terug decoderen naar qwerty12345 (dit is het moment waarop het wachtwoord wordt gekraakt), bijvoorbeeld door rainbow tables te gebruiken. Een gekraakt wachtwoord kan vervolgens worden gebruikt om niet alleen toegang te krijgen tot de besmette service, maar mogelijk ook tot andere accounts waarvoor het wachtwoord opnieuw is gebruikt.
- Hashing met salt (zout). Nee, deze methode heeft niets te maken met een lekkere afhaalmaaltijd. Met deze methode wordt juist een willekeurige reeks gegevens toegevoegd, ook wel een salt genoemd, aan elk wachtwoord voordat het wordt gehasht. Een salt kan statisch zijn of dynamisch worden gegenereerd. Een reeks van wachtwoord+salt wordt in het algoritme ingevoerd, wat resulteert in een andere hash. Zo worden vooraf berekende rainbow tables nutteloos voor hackers. Door deze methode te gebruiken voor het opslaan van wachtwoorden, zijn ze veel moeilijker te kraken.
Voor ons onderzoek hebben we een database van 193 miljoen gelekte wachtwoorden in platte tekst samengesteld. Waar hebben we ze allemaal verkregen? Je moet weten waar je naar deze wachtwoorden op zoek moet gaan. Wij hebben ze gevonden op het dark web. Hier zijn zulke ‘schatten’ wel vaker gratis te vinden. We hebben deze database gebruikt om gebruikerswachtwoorden te controleren op mogelijke lekken, maar weet dat wij geen wachtwoorden opslaan of zelfs zien. Je kunt meer lezen over de interne structuur van de wachtwoordkluis in onze Kaspersky Password Manager en hoe we zonder jouw wachtwoorden te weten, deze vergelijken met gelekte wachtwoorden.
De kosten van het kraken van wachtwoorden
Moderne GPU’s zijn de beste tool voor het analyseren van de sterkte van een wachtwoord. De RTX 4090 in combinatie met de wachtwoordhersteltool hashcat haalt bijvoorbeeld een snelheid van 164 miljard hashes per seconde (GH/s) voor salted MD5-hashes.
Als voorbeeld gebruiken we een wachtwoord van 8 tekens met zowel Latijnse letters (allemaal kleine letters of allemaal hoofdletters) als cijfers (36 mogelijke tekens per positie). Het aantal mogelijke unieke combinaties is 2,8 biljoen (berekend door 36 tot de achtste macht te verheffen). Een krachtige CPU met een verwerkingskracht van 6,7 GigaHashes per seconde (GH/s) kan een dergelijk wachtwoord in zeven minuten kraken door brute-force. De eerder genoemde RTX 4090 doet dit echter in slechts 17 seconden.
Hoewel een dergelijke high-end GPU iets minder dan $ 2.000 kost, kunnen zelfs hackers zonder zulke GPU’s gemakkelijk cloudgebaseerde CPU’s huren voor slechts een paar dollar per uur. Maar wat als ze in één keer een tiental RTX 4090’s huren? Hiermee hebben ze genoeg vermogen om enorme hash-databaselekken met gemak te verwerken.
59% van alle wachtwoorden kunnen binnen één uur worden gekraakt
We hebben de sterkte van wachtwoorden getest met behulp van algoritmen als brute-force en smart-guessing. Terwijl met brute-force alle mogelijke combinaties van karakters worden doorgelopen totdat er een overeenkomst wordt gevonden, worden smart-guessing-algoritmen juist getraind op basis van een wachtwoorddataset. Zo kan de frequentie van verschillende tekencombinaties worden berekend en kunnen er eerst selecties worden gemaakt uit de meest voorkomende combinaties en vervolgens de zeldzaamste combinaties. Meer informatie over de gebruikte algoritmen kun je lezen in de volledige versie van ons onderzoek op Securelist.
De resultaten waren beangstigend: maar liefst 45% van de 193 miljoen echte wachtwoorden die we hebben geanalyseerd (oftewel 87 miljoen wachtwoorden!) konden binnen een minuut door het slimme algoritme worden gekraakt. Ook kon van deze wachtwoorden 59% binnen een uur worden gekraakt en 67% binnen een maand worden gekraakt. Slechts 23% van deze wachtwoorden kan als sterk worden beschouwd, aangezien het meer dan een jaar kost om deze te kraken.
Tijd voor het kraken | Percentage wachtwoorden dat kan worden gekraakt met de gegeven methode | |
Brute-force | Smart-guessing | |
Binnen 1 minuut | 10% | 45% |
1 minuut tot 1 uur | +10% (20%) | +14% (59%) |
1 uur tot 1 dag | +6% (26%) | +8% (67%) |
1 dag tot 1 maand | +9% (35%) | +6% (73%) |
1 maand tot 1 jaar | +10% (45%) | +4% (77%) |
Langer dan 1 jaar | +55% (100%) | +23% (100%) |
Hierbij moet vermeld worden dat het kraken van álle wachtwoorden in de database niet veel meer tijd kost dan het kraken van slechts één wachtwoord (!). Bij elke iteratie controleert de hacker, nadat deze de hash voor de volgende tekencombinatie heeft berekend, of dezelfde combinatie in de algemene database voorkomt. Als dit het geval is, wordt het betreffende wachtwoord beschouwd als ‘gekraakt’ en blijft het algoritme andere wachtwoorden raden.
Waarom smart-guessing-algoritmen zo effectief zijn
Mensen zijn voorspelbaar. We kiezen namelijk zelden echt willekeurige wachtwoorden. De wachtwoorden die we maken zijn daarbij niets vergeleken met die gemaakt door machines. Voor onze wachtwoorden maken we gebruik van veelvoorkomende zinnen, datums, namen en patronen. Smart-guessing-algoritmen zijn precies ontworpen om van deze misbruik te kunnen maken.
Bovendien zitten de meeste mensen wel hetzelfde in elkaar. Als je bijvoorbeeld een groep mensen vraagt een getal tussen de 1 en 100 te kiezen, dan kiezen de meesten, uiteraard, dezelfde getallen! Het YouTube-kanaal Veritasium heeft meer dan 200.000 mensen ondervraagd en ontdekte dat de populairste getallen 7, 37, 42, 69, 73 en 77 waren.
Zelfs als we willekeurige tekenreeksen proberen in te voeren, geven de meesten alsnog de voorkeur aan toetsen in het midden van het toetsenbord. Ongeveer 57% van alle door ons geanalyseerde wachtwoorden bleken een woord uit een woordenboek of een veel voorkomende symbolencombinatie te bevatten. Van deze wachtwoorden kon, zorgwekkend genoeg, 51% binnen een minuut worden gekraakt en 67% binnen een uur. Slechts 12% kon na langer dan een jaar worden gekraakt. Er waren echter maar een paar wachtwoorden die alleen uit één woord bestonden uit een woordenboek (die dus binnen een minuut gekraakt konden worden). Zie het Securelist-bericht voor meer informatie over de wachtwoordpatronen die we zoal hebben gezien.
Met slimme algoritmen zijn de meeste wachtwoorden met woorden uit een woordenboek snel te achterhalen. Ze vangen daarbij zelfs vervangingen van tekens op. Als je bijvoorbeeld ‘w@chtw00rd’ in plaats van ‘wachtwoord’ typt, of ‘gebru!ker’ in plaats van ‘gebruiker’, wordt je wachtwoord dus niet sterker. Het gebruik van populaire woorden en cijferreeksen heeft net zo veel risico’s. In 4% van de door ons onderzochte wachtwoorden kwam het volgende wel ergens in een wachtwoord voor:
- 12345
- 123456
- love
- 12345678
- 123456789
- admin
- team
- qwer
- 54321
- password
Aanbevelingen
De conclusies uit ons praktijkonderzoek:
- Veel gebruikerswachtwoorden zijn niet sterk genoeg; 59% ervan kan binnen een uur worden gekraakt.
- Door specifieke woorden, namen en standaardtekenreeksen in je wachtwoord te gebruiken, wordt de tijd die nodig is voor het kraken van wachtwoorden aanzienlijk minder.
- Het minst sterke wachtwoord is een wachtwoord dat volledig uit alleen cijfers óf woorden bestaat.
Houd rekening met het volgende om je accounts veilig te houden:
- Genereer sterke wachtwoorden met Kaspersky Password Manager.
- Als je zelf een wachtwoord wilt maken, gebruik dan mnemonische passphrases in plaats van specifieke woordcombinaties, namen of woorden uit een woordenboek.
- Gebruik nooit dezelfde wachtwoorden op verschillende sites, omdat niet alle bedrijven gebruikersgegevens veilig opslaan.
- Bewaar nooit wachtwoorden in browsers.
- Bewaar veilig je wachtwoorden in een wachtwoordmanager en creëer hiervoor een primair wachtwoord dat niet te kraken is.
- Controleer hoe sterk je wachtwoord is met Password Checker of rechtstreeks in je Kaspersky Password Manager. Hiermee kun je zwakke en dubbel gebruikte wachtwoorden identificeren, controleren of je wachtwoorden niet voorkomen in besmette databases en wordt je gewaarschuwd wanneer er een overeenkomst is gevonden.
- Gebruik Kaspersky Premium om continu op de achtergrond alle accounts op datalekken te controleren die zijn gekoppeld aan de telefoons of e-mailadressen van je gezinsleden en jezelf.
- Stel overal 2FA in als dat kan. Met Kaspersky Password Manager kun je overigens ook 2FA-tokens opslaan en eenmalige codes genereren.