Foto: Pixabay.

Hoe ik als niet-hacker miljoenen wachtwoorden kraakte

Door Ufuk Esmer - 4 mei 2018

Al tijden wijs ik vrienden, collega’s, en volstrekt onbekenden op het belang van sterke unieke wachtwoorden. “Een zwak wachtwoord is zo gekraakt,” zei ik altijd. Eigenlijk wist ik niet zeker of dat wel zo was, ik had het zelf nog nooit gedaan. Ik vroeg mij daarom af: is een zwak wachtwoord echt zo gekraakt? Ik besloot het uit te zoeken. Binnen enkele dagen lukte het mij om enkele miljoenen wachtwoorden te kraken, inclusief die van enkele collega’s.

In Hollywood-films en -series zijn hackers genieën die met één druk op de knop een cybernukeverzenden en die precies weten wat ze moeten doen (1). Ik ben geen hacker. Dus begon ik daar waar elke beginner zou beginnen: op Google. Al snel kwam ik erachter dat er programmaatjes bestaan die volautomatisch beveiligde wachtwoorden kunnen kraken, zoals het programma Hashcat (2).

Om te begrijpen wat Hashcat doet, zal ik even technisch moeten worden. Zodra je een wachtwoord aanmaakt op een website, dan slaat de website je wachtwoord niet zomaar op, maar gooit het je wachtwoord eerst door een wiskundig algoritme waardoor er een reeks van letters en cijfers ontstaat. Deze reeks wordt opgeslagen en is in feite je ‘versleutelde’ wachtwoord. Het wachtwoord ‘ditismijnwachtwoord’ wordt bijvoorbeeld opgeslagen als ad16638389d26ef5a1db85c64d5d6ab8. Er zijn twee belangrijke eigenschappen van dit soort algoritmes die je moet kennen:

  1. 1. De versleuteling werkt maar één kant op. Je kan wel van ‘ditismijnwachtwoord’ de reeks ad16638389d26ef5a1db85c64d5d6ab8 maken, maar je kan niet van de ad16638389d26ef5a1db85c64d5d6ab8 weer ‘ditismijnwachtwoord’ maken.
  2. Iedere minimale wijziging in de input (het wachtwoord) levert een volledig andere output (wiskundige reeks) op. De input ‘ditismijnwachtwoord’ resulteert in de output ad16638389d26ef5a1db85c64d5d6ab8, maar de input ‘Ditismijnwachtwoord’ (met een hoofdletter D als het enige verschil) levert de output 312e3d032067a615a52a96d898ef4ab4 op.

Op internet zwerven databases met versleutelde wachtwoorden van gehackte websites rond. Deze databases bevatten vaak miljoenen e-mailadressen en de bijbehorende reeksen van versleutelde wachtwoorden. Als je zo’n database in handen krijgt, dan kun je programmaatjes als Hashcat de opdracht geven om heel erg snel en volledig automatisch wachtwoorden te kraken. Hashcat pakt dan bijvoorbeeld ‘ditismijnwachtwoord’, versleutelt het, en bekijkt of de output in de database voorkomt. Zo ja, dan heb je een wachtwoord gekraakt.

Nu komt het enge. Dit soort programmatjes kunnen deze reeksen berekenen met een snelheid van tussen de 50.000 en 64 miljard pogingen per seconde (3). Dat betekent dus dat als je een wachtwoord hebt van 8 kleine letters, Hashcat dat in het slechtste geval binnen 4 seconden heeft gekraakt.

Het kostte mij als niet-hacker slechts enkele dagen om een gelekte database te vinden, Hashcat werkend te krijgen en aan de slag te gaan. Het resultaat? 10 miljoen gekraakte wachtwoorden, inclusief die van enkele collega’s (4). Bij één collega is het mij zelfs gelukt om in te loggen in zijn account (5). Als het mij al zo makkelijk af gaat, hoe goed zijn professionele criminelen dan wel niet?

Websites lekken beveiligde wachtwoorden bovendien vaker dan je denkt. LinkedIn, Dropbox, MySpace, Yahoo, Adobe, Last.FM en vele, vele andere sites waar je een wachtwoord gebruikt, hebben te maken gehad met hackers die een wachtwoordendatabase wisten buit te maken. Er is dus een grote kans dat jouw wachtwoord is gelekt en, als die niet heel sterk is, ook is gekraakt. Via deze sitekan je controleren of je e-mailadres in bekende lekken voorkomt.

Kan je hier nou niets aan doen? Zeker wel! Ik zou er nog een hele blog aan kunnen wijden, maar dit zijn enkele belangrijke tips:

  1. Gebruik een wachtwoordmanager zoals 1Password, Dashlane of LastPass. Je hoeft dan nog maar één (lang) wachtwoord te onthouden, of liever: een wachtwoordzin;
  2. Gebruik een uniek wachtwoord op elke website. Met een wachtwoordmanager is dat heel simpel;
  3. Denk niet dat je uniek bent door iets ‘slims’ te bedenken voor je wachtwoord, zoals een woord gevolgd door twee cijfers en een uitroepteken of het vervangen van bepaalde letters door symbolen of cijfers ($ in plaats van s bijvoorbeeld). Alles wat jij bedenkt, hebben anderen ook bedacht en is dus makkelijk te kraken;
  4. Hoe langer het wachtwoord, hoe veiliger.

Kom je er nou nog niet uit, stuur mij dan een e-mail voor hulp!

Naschrift: hoe heb ik het gedaan?

  • Ik heb een database van enkele miljoenen gehashte wachtwoorden en plaintext e-mailadressen gedownload. De bron van de database is een bekend, enkele jaren oud lek dat veel publiciteit kende. De betreffende website heeft (naar eigen zeggen) maatregelen genomen en gebruikers een password-reset gegeven. De database is vrij te vinden op het (reguliere) internet. Ik heb dus géén website gekraakt.
  • De database heb ik gecontroleerd op e-mailadressen van enkele collega’s. Indien ze in de database stonden, heb ik ze gevraagd of ik het bijbehorende versleutelde wachtwoord mocht proberen te kraken.
  • Na hun toestemming heb ik alle overige e-mailadressen uit het bestand verwijderd, zodat ik geen koppeling meer kan maken met echte mensen.
  • Na het schrijven van dit blog heb ik het bestand met gekraakte wachtwoorden secure verwijderd.

Voetnoten:
(1) Hold your horses, technerds; deze fragmenten zijn bedoeld als grapje.
(2) Deze programmaatjes worden ook wel (enigszins eufemistisch) Password Recovery Tools genoemd.
(3) Voor de nerds: de snelheid is o.a. afhankelijk van het gebruikte versleutelingsalgoritme (bv. MD5, SHA-1, SHA-256, bcrypt, etc.) én van de snelheid van de videokaart van het systeem waar Hashcat op draait. Mijn systeem deed 300 miljoen poging per seconde op SHA-1-reeksen.
(4) Ik heb mijn collega’s vooraf om toestemming gevraagd voordat ik heb geprobeerd om hun wachtwoorden te kraken.
(5) Nogmaals, met toestemming vooraf. Sterker nog, de collega stond achter mij toen ik het probeerde.