# Wachtwoordkraker

Een wachtwoordkraker (in het Engels: password cracker) is een programma waarmee wachtwoorden achterhaald kunnen worden. Die wachtwoorden worden in computersystemen in de regel door middel van cryptografische technieken versleuteld, waardoor ze niet rechtstreeks leesbaar zijn. Een wachtwoordkraker kan door kennis van de gebruikte algoritmes en andere trucs vanuit de versleutelde codes de originele wachtwoorden terugvinden. Als een computersysteem een zwak algoritme gebruikt om wachtwoorden te versleutelen, kunnen zelfs 'goed gekozen' wachtwoorden gemakkelijk achterhaald worden.
Er bestaan verschillende technieken om wachtwoorden te achterhalen. Sommige vergen kraaktechnieken waarvoor speciale programmatuur is ontwikkeld. Andere vergen social engineering-trucs om gebruikers een wachtwoord te ontfutselen.

## Raden

Vele onderzoeken hebben uitgewezen dat ongeveer 40% van de gekozen wachtwoorden gemakkelijk te raden zijn, doordat gebruikers zwakke wachtwoorden kiezen. Meestal zijn de wachtwoorden op enige manier gerelateerd aan de gebruiker zelf. Hierdoor zijn veel wachtwoorden eenvoudig te achterhalen door hackers en door kraakprogramma's. Enkele voorbeelden van zwakke keuzes zijn:
* het woord "password", "passcode", "admin" en andere soortgelijke woorden
* de eigennaam van de gebruiker of diens gebruikersnaam
* de naam van zijn/haar echtgenoot of een ander familielid
* zijn/haar geboorteplaats of geboortedatum
* merk van een auto of kenteken
* een simpele verandering, zoals de volgorde van de letters veranderen.
* een letterreeks van een standaard toetsenbord, zoals 'qwerty', 'asdf' of 'qwertyuiop' enzovoort

## Woordenboekaanval

Een woordenboekaanval (Engels: dictionary attack) probeert wachtwoorden te raden door gebruik te maken van een ingeprogrammeerd woordenboek en de techniek is daarom gerelateerd aan de vorige manier. Wachtwoordkrakers hebben meestal eigen woordenboeken of woordenlijsten met duizenden of soms tientallen miljoenen woorden, zoals:
* woorden in verschillende talen
* namen van mensen
* plaatsen
* vaak gebruikte of reeds eerder gekraakte of gelekte wachtwoorden
* standaard wachtwoorden zoals ze door leveranciers van computercomponenten worden geïnstalleerd
Sites behoren tegenwoordig wachtwoorden in onleesbare vorm op te slaan (gehasht). Een enkele keer wordt daarvoor versleuteling (encryption) gebruikt. Versleutelde wachtwoorden kunnen echter door de site manager, en dus ook door inbrekers, weer leesbaar gemaakt worden. Bij gehashte wachtwoorden kan dat niet en ook de site manager kent het wachtwoord dus niet. Om het wachtwoord toch te achterhalen, probeert het kraakprogramma elk woord uit het woordenboek te hashen met het door het doelsysteem gebruikte cryptografische hash-algoritme. Als het resultaat overeenkomt met de hash-code (het opgeslagen resultaat van een cryptografische hash-bewerking) van het gezochte wachtwoord, dan is het wachtwoord gekraakt.
Ook probeert het programma veranderingen van elk woord, zoals een toegevoegd maand- of jaarnummer, veranderen van O in 0 of wisselingen tussen hoofd en kleine letters. Ook kunnen zeer geavanceerde variaties geprobeerd worden, uitgedrukt in patronen of maskers. Afhankelijk van de gebruikte hash-algoritme, kan een kraakprogramma duizenden tot tientallen miljarden mogelijkheden per seconde proberen. Duurdere grafische kaarten in PC's zijn daar bijzonder geschikt voor vanwege het grote aantal parallelle berekeningen dat zo'n kaart kan doen.

## Brute krachtaanval

Als alle bovenstaande methoden niet werken, gebruikt de hacker een 'brute krachtaanval', ook wel bekend als een 'brute force attack', waarmee alle mogelijke wachtwoorden geprobeerd worden. Hoe eenvoudiger het wachtwoord, hoe korter de zoekactie. Het is daarom altijd verstandig een lang wachtwoord te nemen, omdat hackers er dan veel langer over doen om het wachtwoord te verkrijgen. Deze methode is in theorie altijd succesvol, maar de zoekactie kan erg tijdrovend zijn. Er zijn erg veel verschillende mogelijke wachtwoorden en de kraker moet ze allemaal nagaan. Het gebruiken van langere wachtwoorden en het gebruik van verschillende alfanumerieke tekens en leestekens kan de tijd die nodig is voor het kraken van een wachtwoord exponentieel laten toenemen. Als de kraaktijd langer is dan de tijd dat een wachtwoord geldig is (omdat het bijvoorbeeld periodiek moet worden gewijzigd), dan is het wachtwoord veilig.

### Database met bekende wachtwoordhashes

Er bestaan ook databases waarin vele honderden miljoenen van tevoren berekende hashes van wachtwoorden zijn opgenomen (Engels: rainbow tables). Als bekend is welk algoritme gebruikt is voor het berekenen van een hash, kan op die wijze direct het originele wachtwoord in de database worden teruggevonden. Het mag duidelijk zijn dat dit wel een enorm beslag op technische middelen vergt, maar voor wachtwoorden tot ongeveer 8 tekens is het haalbaar. De bekende kraakprogramma's hebben dergelijke databases niet beschikbaar. Om die vooraf berekende databases onbruikbaar te maken, maakt een goede wachtwoordomvormer (Engels: Key Derivation Function) zoals PBKDF2, gebruik van een hash-methode; een toevoeging (Salt) die voor elk wachtwoord anders is en past de hash-bewerking met zout duizenden keren toe als vertragingstechniek (Iteration). Bij WiFi/WPA2 wordt bijvoorbeeld de netwerknaam (SSID) als zout gebruikt (dus maak die persoonlijk!) en wordt het geheel ruim 32000 keer uitgevoerd.

## Wachtwoordkraakprogramma's

* Ophcrack - Open source
* John the Ripper
* LC5 (voorheen L0phtCrack)
* RainbowCrack
* Crack