2018-10-26 12:30 | Kirke Kjellberg

3/3 Password cracking med Hashcat

I de forrige posts så vi nærmere på, hvad password cracking er, og hvilke redskaber det kræver. I denne post demonstrerer vi, hvordan det lykkedes os, at cracke forskellige password brugt i en TDC router. Vi ser samtidig nærmere på, hvor hurtigt et populært password kan genskabes og afslutningsvis på, hvordan man laver passwords, som er sværere at genskabe.

TDC

Passwords bruges ikke kun til at beskytte forskellige brugeres konti rundt omkring på internettet. De bruges blandt andet også til at beskytte routere mod at der opnås adgang og laves ændringer i deres indstillinger. Da vi undersøgte sikkerheden i en af TDCs Homebox routere stod vi overfor at skulle genskabe sådanne passwords. Vi kunne hurtigt se, at disse passwords var hashet med MD5 algoritmen, hvilket var en fordel for os jf. den sidste post. Vi besluttede at starte med nogle simple brute-force angreb i vores AWS instans.

$ hashcat -a 3 -m 0 TDChash.txt ?a?a?a

Hashcat Brute-force angreb med tre tegn

På under et minut kunne vi genskabe alle mulige password kombinationer bestående af tre tegn. For at udføre lignende angreb på passwords af otte eller ni tegn ændredes tidshorisonten drastisk. For otte tegn vil det tage omkring 3 dage og 20 timer, hvor det for ni ligger på 338 dage og 14 timer. Dette vil i en kraftigere instans kunne gøres hurtigere, og viser derfor også hvorfor et password på kun 8 tegn ikke er sikkert, ligemeget hvor tilfældigt de tegn måtte være udvalgt. Vi valgte herefter at forsøge med nogle af de andre angrebstyper, som Hashcat tilbyder.

For videre at demonstrere, at passwords også kan genskabes på en almindelig computer, eksekverede vi et dictionary attack med ny liste og fandt de resterende to passwords.

$ hashcat -a 0 -m 0 TDChash.txt [nyliste]

Hashcat dictionary angreb med weakpass listen.

Alt i alt lykkes det os at genskabe alle fem passwords på under 2 timer, hvilket må siges at være en overskuelig tidsramme**.

 f5ba7db80ba2d7d7bXXXXXXXXXXXXXXX:XXXXXX
 77c1fdd80c91593XXXXXXXXXXXXXXXXXX:XXXXXX
 c231df9a8f34cee9XXXXXXXXXXXXXXXXX:XXXXXX
 29d375f47fec5faXXXXXXXXXXXXXXXXX:XXXXXX
 d41d8cd98f00b20XXXXXXXXXXXXXXXXX:XXXXXX 

** Ingen af de genskabte passwords er i brug på den pågældende enhed længere, men vi har valgt at sløre dem, da de kan være i brug andre steder.

De populære passwords

Undersøgelser viser, at de hyppigst brugte danske passwords ikke afviger meget fra de mest brugte på internettet generelt. For eksempel var det mest brugte danske password fra Adobe hacket[1], hvor 360.000 danske konti var involveret, 123456. I alt brugte 4262 danskere, som fik lækket deres informationer, dette password. Det samme password indgår med stor sandsynlighed på de fleste top-10 lister over de meste brugte passwords i verden. Vi har testet, hvor hurtigt det kunne lade sig gøre for os at genskabe netop 123456 med Hashcat kørende i vores AWS-instans, og resultaterne viser igen vigtigheden i at vælge et stærkt password.

Vi eksekverede et dictionary attack med rockyou listen, først på passwordet hashet med MD5 og siden med bcrypt. For 123456 med MD5 kunne vi genskabe det på under 1 sekund(!);

 Time.Started.....: 09:25:00 (0 secs)
 Time.Estimated...: 09:25:00 (0 secs) 

For det samme password hashet med bcrypt tog det 4 sekunder(!) at genskabe passwordet, altså relativt væsentlig længere tid - men stadig en MEGET overskuelig tidsramme.

 Time.Started.....: 09:31:58 (4 secs)
 Time.Estimated...: 09:32:02 (0 secs) 

Efterhånden som virksomheder er blevet mere opmærksomme på vigtigheden af stærke passwords, mødes brugerene fra flere sider af regler, som deres password skal opfylde, samt indikatorer for om deres password er stærkt. I sådanne tilfælde vil passwordet 123456 højst sandsynligt ikke kunne vælges. I stedet opfordres brugere til at vælge et password som indeholder store bogstaver, tal og / eller symboler og har en længde på minimum otte karakterer.

Sådanne regler fører desværre ofte til at brugerne følger de samme password mønstre, eksempelvis med stort bogstav forrest og tal bagerst. For at demonstrere, at passwords lavet ud fra disse mønstre heller ikke nødvendigvis er sikre, har vi testet passwordet Nusen123. Et password som overholder reglerne på mange af de mest besøgte sider og brugte tjenester, såsom Microsoft Office 365 og Twitter - og endda betegnes som et stærkt password af Outlook.

Vi eksekverede det samme dictionary attack på passwordet Nusen123 først hashet med MD5. Det lykkedes os at gendanne det på 1 sekund.

 Time.Started.....: 09:26:36 (1 sec)
 Time.Estimated...: 09:26:37 (0 secs) 

Og ligeledes hashet med bcrypt…

 Time.Started.....: 11:49:02 (2 hours 17 mins)
 Time.Estimated...: 09:32:56 (4 hours 32 mins) 

Her er forskellen på tidsrammen en del større, men det er stadig ikke umuligt at gendanne det indenfor en overskuelig tidsramme, i dette tilfælde på 2 timer og 17 minutter. Disse test viser med al tydelighed, at selv om passwords opfylder de ”klassiske” krav er de ikke nødvendigvis sikre. Tværtimod er disse krav med til at skabe en falsk tryghedsfornemmelse og forvirring omkring hvad et stærkt password skal bestå af.

Forhåndsregler

Hvis du er kommet så langt i læsningen af denne serie af blog posts, har du nu også en idé om, hvor forholdsvist simpelt det er at sætte Hashcat op og begynde at cracke passwords. Vi har demonstreret hvor let det er at genskabe passwords, både de "almindelige" men også de som kan synes mere tilfældige. Ligeledes står det klart, at svage hashing algoritmer og populære passwords bruges i vid udstrækning. Derfor er det vigtigt at vælge sine passwords med omhu og en vis eftertanke.

Som udgangspunkt skal man som bruger forsøge at vælge et password stærkt nok til, at det er sikkert selv med de svagere hashing algoritmer. For at sikre sig bedst, har vi udformet nogle punkter, som vi mener er centrale for at lave et godt password.

  • Passwordet skal være 12 karakterer eller derover. Med vores AWS-instans var det muligt, at finde et hvilket som helst password på 8 karakterer, ved et brute force attack på 3 dage og 20 timer. Men der findes selvfølgelig instanser eller maskiner, som er endnu hurtigere, og der kommer konstant forbedringer på området.
  • Vælg et password som er unikt og som i videst mulige udstrækning ikke indgår på lister med de mest populære passwords
  • Aldrig genbrug et password og hold det hemmeligt.
  • Bryd med password normerne og lav dit eget mønster, for eksempel med 4 ord sat sammen. Eller vælg et andet mønster som er let at huske. Dette kunne være en mail addresse eller en hjemmeside såsom "www.DuGætterDetALDRIG.dk".
  • Brug æ, ø, og å, da disse sjældent indgår på password lister.
  • Undgå et password som indeholder kæledyrsnavne, vigtige årstal eller andet der kan lede tilbage på dig selv.
  • Indsæt bevidst stavefejl, for at gøre dit password mindre sårbart overfor dictionary attacks.

Derudover hæver det sikkerhedsniveauet betydeligt hvis man slår two factor authentication (2FA) til på de konti, hvor det er muligt.

Hvis man har svært ved at huske de mange forskellige kodeord kan man med fordel bruge et program som KeePass til at gemme sine passwords, i stedet for at skrive det ned på en papirlap eller i et Word dokument. Det kræver dog, at du så kan huske kodeordet til din KeePass fil...

Har du mistanke om at dine oplysninger er med i et læk, kan du tjekke om din e-mail indgår på haveibeenpwned.com, som indeholder informationer fra mange af de større læk.

Kilder

(1) Computerworld - Her er danskernes mest brugte passwords.