Wachtwoorden hacken, hoe doen we het?
Er zijn veel methodes om devices, websites, diensten etc. te hacken. Deze hacks zijn succesvol doordat ze gebruik maken van een (on)bekende zwakheid in het systeem of doordat een gebruiker een foutje maakt zoals bijvoorbeeld bij phishing. Er zijn uiteraard meerdere methodes te bedenken. Soms gaat het zover dat de hacker ook een dief wordt van fysieke materialen om toegang te kunnen krijgen tot data. Maar wat als dat allemaal niet nodig is. Wat als je gewoon jezelf kunt voordoen als de rechtmatige gebruiker. Dan heb je toegang tot alle data en software. Er gaan geen alarmbellen rinkelen en de kans dat je gepakt wordt is enorm klein. Er is vaak slechts 1 ding dat in de weg staat. Het wachtwoord van de gebruiker. In deze post heb ik het over het hacken van wachtwoorden. Hoe doen we het en hoe kun je jezelf hiertegen beschermen.
Natuurlijk gaat het niet zo zoals in de Hollywood films. De werkelijkheid is meestal wat lastiger en minder flashy. Maar er zijn verschillende manieren waarop een wachtwoord gehackt kan worden. In deze post vertel ik over de verschillende methodes, bespreken we een aantal tools en vertel ik je hoe je het hacken van je wachtwoord kunt mitigeren.
En de gebruikersnaam dan?
Een succesvolle inlog is altijd een combinatie van 2 gegevens. De gebruikersnaam en het wachtwoord. Als een van beide incorrect is dan zal de inlog poging falen. Maar waarom hebben we het dan alleen maar over het wachtwoord? De gebruikersnaam is van identiek belang en daar word vaak niet over gesproken. Waarom dan?
De reden hiervoor is vrij simpel. De gebruikersnaam is meestal vrij germakkelijk te achterhalen. Gebruikersnamen worden in veel log-gegevens vermeld, dus als een hacker achter logging informatie kan komen van het device of via een ander device waar het doelapparaat zich weleens op aanmeld dan is de gebruikersnaam vaak makkelijk gevonden. Succesvolle man-in-the-middle attacks onthullen het wachtwoord ook. Daarnaast is een gebruikersnaam vaak niet ingewikkeld. Het is meestal een combinatie van je voor- en achternaam of je e-mailadres. Deze info is ook vrij gemakkelijk te achterhalen.
Ook worden er vaak algemene gebruikers op een systeem gebruikt. Wat dacht je van “administrator”, “beheerder”, “root” en zelfs “gast”. Ook hebben specifieke systemen een generieke default user. Als een hacker een Raspberry Pi wilt hacken zal deze zich focussen op de meest voorkomende gebruikersnaam, namelijk “pi”.
Kortom. De gebruikersnaam is vaak vrij gemakkelijk te achterhalen. Meestal word er een lijst met mogelijke gebruikersnamen samengesteld en een lijst met verschillende wachtwoorden. Deze wachtwoorden worden vervolgens geprobeerd tegen elke mogelijke gebruikersnaam op de lijst.
Het moeilijkste gegeven, welke meestal niet in logging informatie terug te vinden is, is het wachtwoord. Laten we ons dus nu weer focussen op het wachtwoord.!
Wachtwoord Hacking Methodes
Laten we eens beginnen met de methodes die gebruikt worden om een wachtwoord te hacken. Er zijn een aantal veelgebruikte methodes. Melke methode gebruikt wordt is afhankelijk van het systeem of de dienst waarvan de hacker het wachtwoord probeert te achterhalen.
Laten we nogmaals de nadruk leggen op voorgaande zin “probeert te achterhalen”. Een hacker kan niet altijd een wachtwoord achterhalen (Hollywood style). Of dit lukt is afhankelijk van een aantal factoren welke benadrukt worden in het “mitigatie” hoofdstuk. Maar tijdens het “proberen” kunnen de volgende methodes gebruikt worden.
1. Raden
De eerste methode die vaak gebruikt wordt is het simpelweg raden van je wachtwoord. De hacker zal online zoveel mogelijk over je te weten proberen te komen. Hoe je heet, hoe je kinderen heten, hoe je huisdieren heten, geboortedata, adres etc. Veel mensen gebruiken namelijk een combinatie van deze gegevens om een wachtwoord te vormen. Dit zodat het wachtwoord gemakkelijk onthouden kan worden. Als de hacker deze data heeft zal hij eerst proberen handmatig de meest voorkomende combinaties in te voeren. Simpelweg “raden” dus.
2. Dictionary Attack
Als het simpelweg raden van het wachtwoord niet lukt dan zal de hacker een “password file” maken met heel veel verschillende wachtwoord combinaties. Naast deze “user-based” combinaties zijn er bestaande lijsten met woorden en woord combinaties (zogenaamde disctionaries). De hacker zal eerst zijn user-based dictionary gebruiken en als deze faalt een default dictionary uit zijn arsenaal. Middels een tool zal de hacker deze wachtwoorden op het systemen proberen. Zo kunnen gemakkelijk duizenden wachtwoorden geprobeerd worden tot het werkelijke wachtwoord achterhaald is.
3. Brute Force Attack
Als ook het wachtwoord niet achterhaald kan worden middels een dictionary attack dan kan de hacker een zogenaamde “brute-force” attack uitvoeren. Bij een brute-force worden alle mogelijke combinaties geprobeerd tot een bepaald formaat. Als de hacker kiest voor een brute-force aanval van alle mogelijke letters en cijfers tot 7 karakters dan worden alle mogelijke combinaties geprobeerd van 0 tot ZZZZZZZ. Deze attack methode is veel langzamer omdat er veel meer combinaties geprobeerd worden. De snelheid is afhankelijk van de hardware configuratie van de hacker. Meer processing power in de vorm van sterke GPU’s, processors of zelfs samenwerkende botnets zorgt ervoor dat een brute-force aanval sneller gaat dan op een “simpele” desktop PC.
Het achterhalen van een wachtwoord middels een brute-force attack is dus afhankelijk van de lengte van je wachtwoord en de complexiteit van je wachtwoord. Elk extra karakter kost substantieel meer tijd om te verwerken. Een 8 karakter wachtwoord zal binnen een aantal uren succesvol gekraakt worden maar een wachtwoord van 10 karakters duurt maanden om te achterhalen. Een 12 karakter wachtwoord kost al meerdere eeuwen.
4. Rainbow Table Attack
Wachtwoorden worden vaak versleuteld opgeslagen. Dit noemen we dan een “hash”. Een hash heeft een vorm en een opmaak en wordt bepaald door de hashingmethode. Vaak wordt de hash geconstrueerd in combinatie met een “salt”. Als de hash “ge-salt” wordt dan wordt er extra willekeurige data toegevoegd aan de hash zodat 2 wachtwoorden welke hetzelfde zijn en gehasht worden middels dezelfde methode uiteindelijk toch een andere hash krijgen.
Als een hacker een lijst met wachtwoord hashes heeft bemachtigd welke opgeslagen zijn zonder “salting” dan volstaat vaak het opzoeken van de hash in een zogenaamde “hash table”. Een hash table is feitelijk een “dictionary” maar niet met “plaintext” wachtwoorden maar met wachtwoorden welke gehashed zijn volgens de gebruikte hashing methode. Op die manier kan de hash opgezocht worden in de hash table en wanneer deze gevonden is beschik je meteen over het juiste (leesbare) wachtwoord.
Hash lijsten met hashes welke geconstrueerd zijn middels salting zijn een stuk lastiger. Om hier een “leesbaar” wachtwoord uit te achterhalen wordt vaak gebruik gemaakt van een zogenaamde “rainbow table”. Rainbow tables en Hash tables worden nogal eens door elkaar gehaald. Een Rainbow table is vaak ontzettend groot, afhankelijk van het aantal karakters en de gebruikte karakters. Een rainbow table werkt met chains ofwel “kettingen”. Deze chains worden gemaakt met de “reduction” parameter welke feitelijk een “hash-to-plaintext” functie is. Let op hiermee wordt de hash niet omgezet in een leesbaar wachtwoord maar worden er delen van de hash afgehaald en vervolgens wordt het overgebleven deel terug omgezet in een leesbaar wachtwoord. Je kunt een plaintext wachtwoord dus hashen, reducten (een deel eraf halen), weer hashen, reducten, hashen etc. Meestal vinden er 3 reductions in een chain plaats maar dit kunnen er ook meer zijn. De rainbow table bewaart alleen je beginpunt (het plaintext wachtwoord) en het eindpunt. Vervolgens ga je een hash opzoeken in de “eindpunt” kolom van de rainbow table. Als de hash gevonden wordt dan weet je het wachtwoord. Als de hash niet gevonden wordt haal je er een deel af (reduction), maak je er plaintext van en hash het de nieuwe plaintext weer. Deze hash zoek je weer op. Dit doe je net zo vaak tot je een match hebt. Als je een match hebt bevind het werkelijke wachtwoord zich in de chain waarin deze gevonden is. Nu wordt de chain opnieuw uitgevoerd en worden alle mogelijke wachtwoorden genoteerd. Deze worden vervolgens geprobeerd tot het werkende wachtwoord gevonden is.
Kortom, een rainbow table is ingewikkelder dan een hash table en duurt ook langer om uit te voeren. Met rainbow tables kunnen salted hashes (mits de salt niet te groot is) soms achterhaald worden. Het achterhalen van gewone hashes geeft een hoger succesgehalte maar persoonlijk zou ik dan kiezen om een hash table te gebruiken.
Overige methodes
Als we het echt over het “kraken” van wachtwoorden hebben, dan zijn bovenstaande methodes de methodes die hiervoor gebruikt worden. Omdat het kraken van wachtwoorden vaak veel tijd kost worden er ook andere methodes gebruikt om wachtwoorden te achterhalen. Denk hierbij aan phishing, social engineering, bespieden of het schrijven en implementeren van malware of keyloggers.
Ook zijn er nog “hybrid attacks” welke feitelijk een combinatie zijn van 2 of meer aanvallen. Een bekende hybrid attack is een combinatie van een dictionary attack en een brute-force attack. In dit type attack zal het wachtwoord in de lijst geprobeerd worden en als deze faalt zal het wachtwoord aangevuld worden met random karakters volgens het brute-force principe. Zo kunnen bepaalde tekens veranderd worden en kunnen er tekens toegevoegd worden aan het begin en het einde van het woord. Zo kan het woord “wachtwoord” in de dictionary vermeld zijn maar zal de brute-force methode meerdere combinaties proberen zoals bijvoorbeeld “w@chtw00rd999”.
Wachtwoorden Hacken, De Tools
Er zijn vele soorten tools die we kunnen gebruiken voor het kraken van wachtwoorden. Soms zullen eigen scripts geschreven worden voor het uitvoeren van deze taak. Vaker zullen default tools gebruikt worden welke gratis beschikbaar zijn of al aanwezig zijn in distributies als Kali Linux. Dit zijn mijn 10 top password cracking tools:
1. John the Ripper
John the Ripper is een van de bekendere wachtwoord hacking tools en default aanwezig in Kali Linux. Er zijn eveneens Mac en Windows varianten van John the Ripper. John the Ripper is volledig naar eiden wens en inzicht te configureren en combineerd verschillende cracking methodes en is specifiek gefocussed op het kraken van zwakke Linux wachtwoorden. Out-of-the-box ondersteund John the Ripper o.a. crypt(3), DES, MD5, Kerberos en nog vele anderen.
2. Aircrack-NG
Aircrack-NG is speciaal ontworpen voor het achterhalen van WiFi (WEP/ WPA(2)) wachtwoorden. Aircrack-NG is een suite welke bestaat uit o.a. Airmon, Airodump en Aircrack. Aircrack-NG achterhaalt WiFi wachtwoorden door pakketjes te analyseren welke draadloos worden verzonden. Aircrack-NG is een command-line tool maar er zijn diverse GUI-based scripts die in de achtergrond o.a. gebruik maken van Aircrack-NG zoals b.v. Fluxion.
3. L0phtCrack
L0phtCrack is een alternatieve variant van OphCrack. OphCrack is een rainbow-table password cracking tool voor Windows. L0phtCrack is dit ook maar biedt meerdere functies zoals dictionary attacks en brute forcing. L0phtCrack werkt op werkstations, servers, netwerkstations, AD etc. Daarnaast biedt L0phtCrack instelbare routine audits. L0phtCrack is een fantastische Windows wachtwoord cracking tool.
4. Cain and Able
Cain and Able is opmerkelijk genoeg alleen beschikbaar voor Windows systemen en wordt gebruikt voor het kraken van Windows wachtwoorden. Echter kan Cain and Able nog veel meer dan alleen het achterhalen van Windows wachtwoorden. Cain and Able kan ook als netwerksniffer fungeren of als Man-in-the-Middle proxy. Maar ook kan het VoIP-gesprekken opnemen, cryptanalysis-aanvallen uitvoeren, wachtwoordboxen onthullen, wachtwoorden achterhalen uit verschillende caches etc. Cain and Able werkt middels dictionary attacks en brute-force attacks.
5. RainbowCrack
RainbowCrack is, zoals de naam al doet vermoeden een hash-cracking tool op basis van rainbow tables. RainbowCrack gebruikt een “large-scale time-memory trade off process” en werkt hierdoor ontzettend snel. RainbowCrack helpt je bij het genereren van de Rainbow tabellen maar de makers hebben ook diverse rainbow tables (LM, NTLM, MD5, SHA1) beschikbaar gesteld als download welke je gratis kunt gebruiken.
6. THC Hydra
THC Hydra is een webapplication cracking tool voor het achterhalen van wachtwoorden. Medusa, Wfuzz en vele andere tools zijn beschikbaar om webapplications te kraken. THC Hydra is echter een prima keuze als je HTTP-FORM-GET en POST, HTTP-GET, HTTPS-GET, IMAP, ICQ, IRC, LDAP, MS-SQL, NNTP wachtwoorden probeert te achterhalen. Dit zijn overigens niet de enige authenticatiemethodes die ondersteund worden. THC Hydra is ontzettend snel en de functionaliteit kan uitgebreid worden middels diverse modules. THC Hydra is op vrijwel alle platformen beschikbaar.
7. Wfuzz
Wfuzz is een web application password cracking tool. Wfuzz kraakt wachtwoorden d.m.v. brute-forcing maar probeert tegelijkertijd verborgen resources zoals scripts, dictionaries en servlets te vinden. Wfuzz biedt ondersteuning voor het gebruik van proxy en SOCKS en kan ingesteld worden om een pauze te nemen na een x-aantal requests. Gegenereerde output is een opgemaakte HTML
8. HashCat
HashCat is misschien wel de bekendste wachtwoord cracker. Volgens de documentatie is Hashcat een van de snelste wachtwoord crackers omdat HashCat gebruik maakt van multi-threading en dus optimaal functioneert op moderne computers. HashCat ondersteunt ook meerdere (maximaal 128) GPU’s en focust zich op het kraken van wachtwoorden via dictionary attacks. HashCat kan overweg met meer dan 150 algoritmes waaronder MD5, SHA-1, SHA-512, IKE-PSK, Kerberos 5 etc.
9. Crowbar
Crowbar (voorheen Levye) staat in mijn top 10 lijst omdat Crowbar algoritmes ondersteund die veel populaire password cracking tools niet ondersteunen. Denk aan VNC Key Authentication, OpenVPN, SSP Private Key Authentication, RDP with NLA. Crowbar maakt gebruik van brute-forcing methods. Crowbar gaat ook anders te werk dan andere tools. Waar veel tools voor SSH Brute Force gebruik maken va neen gebruikersnaam en wachtwoord probeert Crowbar de SSH keys te gebruiken (als deze onderschept kunnen worden).
10. Brutus
Brutus is een wat oudere password cracking tool die al een tijdje niet onderhouden is. Net als Cain and Able is Brutus alleen beschikbaar voor Windows. Ondanks zijn ouderdom kan hij in veel gevallen nog ontzettend handig zijn. Brutus ondersteund default de volgende authenticaties: HTTP (basic authentication & HTML Form/CGI), POP3, FTP, SMB, Telnet, IMAP, NNTP. Ook zijn er diverse andere authenticatieschema’s te downloaden voor meer functionaliteit. Brutus richt zich voornamelijk op het uitvoeren van dictionary attacks. Een mooie functie in Brutus is dat je een lopend proces kunt pauzeren en later weer kunt herstarten. Ook kan Brutus 60 gelijktijdige connecties maken en werken met geen of meerdere gebruikersnamen.
Maak je wachtwoord onhackbaar (is dat een woord?!)
Zoals je hierboven ziet zijn er nogal wat tools om wachtwoorden te achterhalen. Bovenstaande lijst is slechts het topje van de ijsberg. Als men een wachtwoord wil achterhalen zijn er dus diverse methodes en tools om dit te doen. De kans van slagen is echter afhankelijk van je eigen inzet om je wachtwoord te beveiligen en zo sterk mogelijk te maken. Hieronder een aantal vuistregels voor het beveiligen van je wachtwoord.
1. Wachtwoord sterkte
Een sterk wachtwoord is lastiger, veel lastiger te achterhalen dan een zwak wachtwoord. Een lang wachtwoord is moeilijker dan een kort wachtwoord. Verwerk nog wat speciale karakters en cijfers en je bent al een eind op de goede weg. Neem voor een sterk wachtwoord de volgende regels in acht:
- Langer dan 12 karakters
- Gebruik minimaal 1 symbool
- Gebruik minimaal 1 hoofdletter
- Gebruik minimaal 2 cijfers
- Gebruik geen persoonlijke informatie (postcode / naam etc).
- Verander je wachtwoord periodiek (minimaal elke 6 maanden)
- Gebruik nooit dezelfde wachtwoorden voor verschillende diensten / systemen
Bovenstaande regels zijn misschien in het begin nogal een opgave om te hanteren. Als je er echter aan gewend bent wordt het een simpele en snelle routine waarmee de veiligheid van je wachtwoord, en daarmee je account en de gegevens een flink stuk vergroot is.
Wil je kijken hoe veilig je wachtwoord is dan zou je deze website kunnen gebruiken. Vul hier echter een variant in van je huidige wachtwoord. Ook deze website kunnen wachtwoorden loggen en ze bemachtigen. Ben hier dus altijd voorzichtig mee.
Tip: Als je problemen hebt met het onthouden van al die verschillende, moeilijkere wachtwoorden gebruik dan een password manager zoals “Lastpass”. Beveilig de toegang tot je wachtwoord manager echter wel volgens bovenstaande en onderstaande richtlijnen. Als men toegang heeft tot je wachtwoordmanager heeft men dus meteen toegang tot al je wachtwoorden en dus al je accounts.
2. Sterke Gebruikersnaam
Een stuk minder belangrijk dan een sterk wachtwoord, maar toch kan een sterke gebruikersnaam wel degelijk helpen met het mitigeren van account hacking. Vaak wordt toegang gegeven tot een dienst of account middels de combinatie van een gebruikersnaam en een wachtwoord. Als een hacker geen gebruikersnaam heeft kunnen achterhalen zal deze default gebruikersnamen gebruiken of gebruikersnamen die “logisch” zijn zoals je voorletter + achternaam, je achternaam, je e-mailadres etc. Gebruik dus vooral geen “logische” gegevens in je gebruikersnaam of mix deze met andere informatie. De gebruikersnaam “JarnoBaselier” is een heel stuk minder veilig dan “JarnoSchrijftEenBlogje” of zelfs “JarnoJarno3”. Probeer dus je gebruikersnaam, als je de keuze hebt zo “onlogisch” mogelijk te maken.
3. Two-Factor Authentication
Wanneer je de keuze hebt om two-factor authentication (ook wel 2-weg authenticatie of multi-factor authentication genaamd) is het zaak dat je deze ALTIJD inschakelt. Two-factor authentication zorgt ervoor dat je dubbel met inloggen. Meestal met iets dat je weet (zoals je wachtwoord) ook met iets dat je hebt (zoals je telefoon, vingerafdruk, e-mail etc.). Je logt dus eerst in met een gebruikersnaam en een wachtwoord en als deze succesvol zijn zal het systeem vragen om in te loggen met “de 2e factor”. Vaak moet je dan een code ingeven welke vermeld staat in een authenticator app op je telefoon zoals de Google Authenticator. Of er wordt een code per SMS of e-mail gestuurd. Soms kun je inloggen met een vingerafdruk of een irisscan. Het maakt niet uit welke two-factor authentication methode je activeert, het activeren van de methode zorgt ervoor dat je 90% veiliger bent dan zonder deze two-factor authentication. Een hacker moet namelijk nog steeds beschikken over je telefoon, vingerafdruk of andere methode alvorens deze je account kan misbruiken. Zelfs als hij het wachtwoord heeft kunnen hacken.
Let op dat two-factor authentication via e-mail de minst veilige methode is. Beter als niets, maar de kans bestaat dat de hacker na het achterhalen van je wachtwoord ook toegang heeft verkregen tot je e-mail waardoor hij de two-factor authentication alsnog succesvol kan uitvoeren.
4. Schakel ongebruikte accounts uit
Alle accounts die niet gebruikt worden kun je uitschakelen. Administrator, Guest? Als je het niet gebruikt is uitschakelen de beste optie. Op die manier kunnen de accounts ook niet misbruikt worden. Wil je ze niet uitschakelen verander dan het wachtwoord naar een ontzettend moeilijk te kraken wachtwoord volgens de richtlijnen in stap 1.
5. Trap niet in Phishing
Phishing is er vaak op gericht om je wachtwoord te achterhalen. Vul dus nooit je wachtwoord in op websites die je niet vertrouwd. Controleer altijd of de URL klopt en of de website een geldig SSL certificaat gebruikt (in het geval van HTTPS websites).
6. Stel een 2e e-mail account in
Veel (e-mail) diensten geven je de optie om een 2e e-mailaccount in te stellen. Dit 2e e-mailaccount wordt gebruikt als je geen toegang meer hebt tot je actieve account. Herstelinformatie kan naar dit 2e e-mailaccount gestuurd worden. Stel dit 2e (backup) e-mailaccount dus altijd in zodat je altijd je primaire account kunt herstellen.
7. The obvious
Uiteraard kunnen we nog wel even doorgaan. Zorg dat je computer malware-vrij is. Log je accounts uit als je ermee klaar bent. Verwijder je cookies als je de browser sluit. Gebruik HTTPS indien mogelijk etc. Er zijn veel methodes waarmee hackers je wachtwoorden kunnen achterhalen. Punt 1 t/m 5 zijn echter de sleutel tot succes. Als je deze punten opvolgt is de kans dat je wachtwoord gehackt wordt uitermate klein.
Ik hoop dat jullie deze post interessant vonden! Ja? Geef dan een dikke duim op Facebook en deel het bericht met je vrienden of andere geïnteresseerde. Positieve feedback zorgt ervoor dat er meer van dit soort artikelen online komen en dat ik dus blijf schrijven over beveiliging en tips! Dankjewel!