Hashing, salting og pepring - slik knekker du passord og sikrer brukernes

Martin Ingesen knekker passord hele døgnet med en rigg til 300.000 kroner. Men du kan stanse han.

Martin Ingesen er grunnlegger av og daglig leder i pentester-selskapet Kovert. 📸: Mattis Vaaland
Martin Ingesen er grunnlegger av og daglig leder i pentester-selskapet Kovert. 📸: Mattis Vaaland Vis mer

- Når du skal knekke passord hjelper det lite med rå makt hvis du ikke klarer å lage gode ordlister, sier Martin Ingesen, grunnlegger og daglig leder i pentester-selskapet Kovert, til kode24 i Lillehammer.

Tirsdag holdt Ingesen foredraget "Fra Hash til Cash - en introduksjon til passordknekking" på Sikkerhetsfestivalen i Lillehammer.

Til kode24 forteller Ingesen om hvordan han går fram når han skal knekke passord, og hva utviklere kan gjøre for å sikre passordene til brukerne.

Viktig å beregne tid

Kort forklart er en hashing en kryptografisk teknikk hvor input blir konvertert til en uforståelig serie av tall og bokstaver.

Ingesen forteller at det første han gjør når han får tilgang til et hashet passord, er å vurdere hvilken type det er, hvem den tilhører og hvor lett hashen er å knekke.

- Selv bruker vi ordlister som er tilpasset kundene eller landet de befinner seg i, sier han.

Ifølge Ingesen er det viktig å beregne og være økonomisk med tid når du skal knekke passordhasher.

- Du kan i teorien gå gjennom ett og ett tegn. Litt avhengig av hashtype går de første seks tegnene ganske fort. Men når du treffer syv til ni tegn, snakker vi om uker, måneder og år. Desto lengre et passord er, desto vanskeligere er det å knekke det, sier han.

Populære verktøy

Når det gjelder verktøy selskapet hans Kovert bruker, viser Ingesen til de populære verktøyene hashcat og John the Ripper, som begge følger med den offisielle Kali Linux-distribusjonen.

- Det kjekke med hashcat er at den er integrert med grafikkortet og bruker CUDA-driverne til Nvidia.

I tillegg har folkene bak hashcat implementert "snarveier".

- Både ved å gjøre hashing-algoritmene raskere, men også å avslutte prosessen tidlig dersom man ser at hashen ikke kommer til å matche, sier Ingesen.

«Det må være tyngre og vanskeligere for noen å knekke hashene, selv om noen har valgt passordet "Sommer2020!"»

Lag gode ordlister

- Hva er den største utfordringen når du skal knekke en hash?

- Å lage gode regler og ordlister. Regler er det som modifiserer ordlistene i hashcat, og som gjør at du får størst mulig sjanse for å treffe riktig, uten å bruke mer tid, sier Ingesen.

Å cracke passord krever mye datakraft, særlig dersom du skal gjøre det "profesjonelt". For Kovert sto valget mellom å bruke skyressurser eller å bygge en "cracker-rigg" selv.

Kovert valgte sistnevnte og har bygget en rigg som for NTLM-hasher tar 1,2 "terra-hasher" i sekundet. Serveren består av 10 GeForce RTX 3080 Ti-grafikkort, 192GB RAM og 2 8-core Xeon prosessorer, i tillegg til et spesiallaget kabinett. Prislappen ligger på rundt 300.000 kroner.

- Vi har mulighet til å knekke passord 24 timer i døgnet, uten at det koster oss noe mer enn slitasje, sier Ingesen.

Kovert har mekket en egen server med kallenavnet "barraCUDA" for å knekke passordhasher. Serveren har 10 3080 Ti-kort, 192GB RAM og 2 8-core Xeon prosessorer. 📸: Kovert
Kovert har mekket en egen server med kallenavnet "barraCUDA" for å knekke passordhasher. Serveren har 10 3080 Ti-kort, 192GB RAM og 2 8-core Xeon prosessorer. 📸: Kovert Vis mer

Lærdommer for utviklere

- Er det noe utviklere kan hente fra passordknekking?

- Ja. Det første handler om å ikke bruke MD5 og svake hashing-algoritmer som er kjente for å være raske å knekke.

Ingesen sier at utviklere må se for seg et scenario der databasen, som inneholder fulle navn, e-post og hasha passord, blir lekket.

- Det må være tyngre og vanskeligere for noen å knekke hashene, selv om noen har valgt passordet "Sommer2020!", sier han.

Salt passordet ditt

En annen ting du som utvikler kan gjøre, er å salte passordene. Det gjør du ved å generere en unik verdi som du legger til hvert passord før du bruker hashing-funksjonen.

Denne verdien lagres i databasen ved siden av passordet.

- Når jeg skal logge inn og gir deg passordet mitt, henter du saltverdien og slår det sammen med passordet. Så hasher du kombinasjonen og sjekker om det er likt hashen du har i databasen. Dette gjør at hver hash er unik, sier Ingesen.

Han viser til at i verktøy som hashcat kan du gi en liste hasher og ett passord, så vil det prøve passordet på alle hashene.

- Hvis passordet er saltet kan hackeren bare cracke én og én linje om gangen, sier Ingesen.

«Gullstandarden i dag er å sjekke passord opp mot lekkede passord eller ordlister»

Ikke glem å pepre passordet

Du kan også gjøre det enda vanskeligere for ondsinnede hackere ved å pepre passordet. I tillegg til å ha en verdi, altså saltet, lagret i databasen, har du en verdi som er lagret i kildekoden. Også denne legges til passordet før det hashes.

- Dette betyr at selv om jeg får tilgang til databasen din må jeg også ha tilgang til applikasjonens kildekode. Har jeg ikke det, er det tilnærmet umulig for meg å cracke passordet - selv om jeg vet hva saltverdien er, sier Ingesen.

Han nevner også multifaktor og gode passord-retningslinjer som legger opp til lange passord som viktige sikkerhetsgrep.

- Gullstandarden i dag er å sjekke passord opp mot lekkede passord eller ordlister. Selv om "Sommer2020!" er bra i teorien, kan det ikke aksepteres, fordi det ligger i ordlisten fra før av, sier Ingesen.