Computerbeveiliging - Hoe je bad guys buiten de deur houdt

MD5 hashes vragen

04-07-2011, 22:12 door Anoniem, 5 reacties
De laatste tijd zien we steeds meer dat website's worden gekraakt en wachtwoord en gebruikersnamen op diverse pastbin site's worden geplaatst. Nu ben ik als leek eens
even wat research aan het doen, en zie via de diverse md5 crack site's dat niet alle
hashes of mds tot een wachtwoord leiden.

Luls publiseerd sommige zelf met:
EMAIL | PASS | USERNAME | NAME = CRACKED PASSWORD

Voorbeeld:
http://md5.noisette.ch/index.php

De volgende hash: 5268a8cf7845a09008dff4888e2db098 leverd wachtwoord "3pasimpo" op.

De volgende hash: ca2478f74fc6b4c5a203162406610154 kan niet gekaakt worden
No corresponding md5 found for "ca2478f74fc6b4c5a203162406610154"

Het gaat zich mij dus om de zeg maar technische kant als je het zo kan noemen, en niet om de account te misbruiken, want de wachtwoorden staan toch al in die txt file's.

Via google heb ik nu enkele md5 online site's gevonden, en sommige hashes van de wachtwoorden kloppen en sommige kunnen zeg maar niet gekraakt worden.
Nu vraag ik me af waarom niet alle hashes gekraakt kunnen worden?

Nu zou ik graag willen weten hoe dit kan? Zijn deze wachtwoorden gewoon te lang, of komen deze nog niet in die database van die website's voor?

Dan wil ik natuurlijk als hamvraag ook willen weten of een wachtwoord van 14 of 20
ook gekraakt kan worden?

Trouwens wat is salt?

dank voor de uitleg
Reacties (5)
05-07-2011, 08:45 door SirDice
De wachtwoorden die buitgemaakt zijn waren niet gehasht. Ze stonden dus 'clear-text' in de database. Iets wat, helaas, nog heel veel voorkomt.

Alle hashes kunnen gekraakt worden. Het is alleen een kwestie van tijd en moeite. Die sites gebruiken waarschijnlijk alleen een 'subset' van alle mogelijk karakters (bijv alleen hoofd en kleine letters plus cijfers). Een password wat karakters buiten deze subset gebruikt zal dan niet gevonden worden.

Een salt is een extra 'variatie' die je kunt toevoegen. Stel je krijgt wat hashes in handen en je ziet dit:


#username - hash
userA - 1122334455
userB - 1122334455

Hieruit kun je al heel eenvoudig afleiden dat userA en userB hetzelfde wachtwoord hebben, de hashes zijn hetzelfde. Door gebruik van een salt zie je dan bijv.:

#username - hash
userA - 1122334455
userB - 6677889900
Ondanks dat beide gebruikers hetzelfde wachtwoord hebben hebben ze toch een andere hash.
05-07-2011, 08:46 door Anoniem
De sites die je gevonden hebt kraken de hashes niet, ze zoeken ze op in een database. Niet alle md5 hashes staan in die database, en die situatie levert de situatie op dat de hash niet gevonden kan worden. Een hash is in principe niet te kraken omdat het niet terug te herleiden is tot de originele tekst. Wat een hash wel/niet veilig maakt is de kans op een collission: twee verschillende teksten die de zelde hash opleveren.

Een salt is een tekenreeks die aan een password toegevoegd wordt om te zorgen dat de kans kleiner is dat de uiteindelijke hash in een dergelijke database te vinden is. Een voorbeeldje.
Stel mijn password is "test", de bijbehorende md5 hash is dan 098f6bcd4621d373cade4e832627b4f6, de kans is groot dat je die gewoon terug kan vinden.
Om het iets veiliger te maken zet ik in mijn systeem een vaste tekenreeks achter het password en daar neem ik de hash van, bijvoorbeeld "test|mijnsalt", de hash daarvan is 79b6729694d895e58a88111168f7d871 en heeft een kleinere kans dat je die terug kan vinden. "|mijnsalt" was hier de salt.
05-07-2011, 10:40 door iuss
Aansluitend op de vorige reactie: het is erg belangrijk om per gebruiker een (andere) random salt te gebruiken, anders geldt de eigenschap die SirDice beschrijft niet. Hoewel je door de salt de hash niet kunt opzoeken in een online database, levert een niet-per-gebruiker-unieke salt alsnog dezelfde hash op wanneer gebruikers hetzelfde wachtwoord hebben.

Een mooi voorbeeld hiervan is het lek van Pepper.nl - hoewel de hashes de lengte van een MD5-hash hebben, lijkt er toch niet (enkel) MD5 gebruikt te zijn. Wel valt het op dat enkele hashes relatief vaker dan eens voorkomen, dus men heeft in ieder geval geen per-user salt gebruikt. Door alle hashes op frequentie te sorteren vind je er een aantal die significant vaker voorkomen dan anderen - (frequenties resp. 164, 144, 142, 93). Leg hier een lijst naast van veelvoorkomende wachtwoorden ('12345', 'wachtwoord') en een aanvaller kan hoogstwaarschijnlijk alsnog ~500 accounts buitmaken.

Betreffende je vraag of een wachtwoord van 14 of 20 karakters ook gekraakt kan worden: jazeker, mits het opgebouwd is uit woorden die ook in het woordenboek voorkomen. Het woord 'authenticatie' bestaat uit 13 karakters maar komt letterlijk in het woordenboek voor. Ook 'w4chtw00rd' en 'vogelspin84' zijn verre van veilig - je kunt een aantal transformaties toepassen op woordenlijsten om zo een hoop extra kandidaatwachtwoorden te genereren.

Als je ervoor zorgt dat je wachtwoord >10 karakters (alfanumeriek + speciale karakters) lang is en niet op een bestaand woord gebaseerd is dan ben je vooralsnog veilig. Mits men je wachtwoord niet plaintext opslaat..
05-07-2011, 10:47 door Anoniem
Het antwoord van 08:46 is juist.
Een hash kan niet "gekraakt" worden. Heel eenvoudig omdat een hash niets zegt over de bron. Het is dus iets anders als, bijvoorbeeld, een zip bestandje waarvan je weer het orgineel terug kan maken.
Als je website waarop je inlogt werkt met MD5, weet de website je wachtwoord niet, alleen de hash. Op het moment dat jij de ww intikt, berekent de website de hash van het ww dat je intikte. Is die hetzelfde als de opgeslagen, dan was je ww juist. Of dat berekenen van de hash lokaal op jouw pc gebeurd of op de website weet ik niet.
Er is een kanttekening. Er is inmiddels vastgesteld dat een hash niet perse uniek is. Je kan een hash dus namaken. Hoe moeilijk dit is weet ik niet, maar dat kan je googlen. Maar dit speelt vooral bij HTTPS certificaten (die kunnen dus nagemaakt worden), voor zover mij bekend gaat dit niet eenvoudig werken bij wachtwoorden.
Op het internet bestaan lijsten met wachtwoorden en bijbehorende hashes. Is jouw wachtwoord "test" of "1234", dan zal die zeker voorkomen in een van die lijsten met hashes, en is je ww daarmee dus bekend.

En een salt is zoals ook als gemeld iets wat jij toevoegd aan je wachtwoord om te voorkomen dat er een bekende hash uitkomt.

Samengevat, en ww van 6 karakters kan best veilig zijn. Maar controleer dan wel even of de hash ervan niet al ergens in een database staat.
05-07-2011, 12:40 door Anoniem
Je hoeft natuurlijk niet een 100% success rate te hebben als je zo'n database wilt "kraken".
als je een database heb met bijv. 50.000 gebruikersnamen + hashes , en je kan 10% trug halen omdat ze een zwak password hebben gebruikt. dan heb je nog steeds 5.000 wachtwoorden trug gehaalt. (beter iets met dan niets:P)

de meeste mensen gebruiken een zwak wachtwoord, dus je haalt een hogere success rate dan 10% verwacht ik. ;)
tenzij er een andere salt is voor elke gebruiker, dan zakt je succes rate enorm.

--------------
je kan wel een password gebruiken met 20+ karakters. maar toeval bestaat.... misschien kan iemand een collision maken, en dus een ander ww genereren met de zelfde hash, en kan je als nog inloggen. maar die kans is natuurlijk zeer klein!
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.