Hoe kan je een hash bruteforcen?
Een hash heeft een vorm en een formaat en wordt bepaald door de hash-methode.
Je zult eerst moeten detecteren welke hashmethode is gebruikt. Enkele veelgebruikte hash-algoritmen zijn MD5, SHA-1, SHA-2, NTLM en LANMAN.
Als een hacker een lijst met wachtwoord-hashes heeft bemachtigd, is het vaak voldoende om de hash op te zoeken in een zogenaamde “hash-tabel”. Een hashtabel is eigenlijk een “woordenboek” maar dan niet met “plaintext” wachtwoorden maar met wachtwoorden die gehasht zijn volgens de gebruikte hashing methode. Zo kan de hash worden opgezocht in de hashtabel en als deze gevonden is, heb je direct het juiste (leesbare) wachtwoord.
Hash-lijsten met hashes die zijn gemaakt met behulp van salting, zijn een stuk lastiger. Om hieruit een leesbaar wachtwoord te vinden wordt vaak een zogenaamde “regenboogtabel” gebruikt. Een regenboogtafel is vaak erg groot, afhankelijk van het aantal karakters en de gebruikte karakters. Een regenboogtafel werkt met kettingen. Deze ketens worden gemaakt met de parameter “reductie”, wat eigenlijk een “hash-to-plaintext” -functie is. Let op: hiermee wordt de hash niet omgezet in een leesbaar wachtwoord, maar worden delen van de hash verwijderd en vervolgens wordt het resterende deel weer omgezet in een leesbaar wachtwoord. Je kunt dus een platte tekst wachtwoord hashen, verkleinen (een deel verwijderen), opnieuw hashen, verkleinen, hashen etc. Meestal zitten er 3 reducties in een keten, maar het kunnen er ook meer zijn. De regenboogtabel slaat alleen uw startpunt (het leesbare wachtwoord) en het eindpunt op. Vervolgens zoek je een hash op in de kolom “eindpunt” van de regenboogtabel. Als de hash wordt gevonden, weet je het wachtwoord. Als de hash niet wordt gevonden, neem je er een deel van (reductie), maak je er platte tekst van en hash je het weer de nieuwe platte tekst. Je zoekt deze hasj nog eens op. Dit doe je tot je een match hebt. Als je een match hebt, zit het eigenlijke wachtwoord in de keten waarin het is gevonden. Nu wordt de keten opnieuw uitgevoerd en worden alle mogelijke wachtwoorden genoteerd. Deze worden vervolgens geprobeerd totdat het werkende wachtwoord is gevonden.