Når en hacker eller penetrasjonstester bryter et system og ønsker å få tilgang til et klartekstpassord fra et databasedump, må de først knekke den lagrede passordhasjen. Mange angripere dykket inn i konseptet: De prøvde et vilkårlig passordangrep de ønsket å prøve, og det var liten grunn. Denne diskusjonen vil vise noen effektive metoder for å knekke passord og hvordan du kombinerer statistisk analyse av passord med verktøy for å lage en tidsbegrenset tilnærming til effektiv og vellykket knekking.
Passordknekking er en døende sak. Brukere må lage mer komplekse passord, og noen back-end-utviklere begynner å bruke mekanismer som Bcrypt for å erstatte standard hashfunksjoner. BCrypt-hashverdier tar lengre tid å generere, og derfor blir passord vanskeligere å knekke. Cracker må generere hashverdier veldig raskt for å knekke passord effektivt, så Bcrypt er et svært kraftig verktøy mot slike angrep. For å illustrere dette eksemplet kan et passordknekkeprogram produsert av 25 GPU-klynger lansert i 2012 oppnå en NTLM-hashgenereringshastighet på 350 milliarder hasher per sekund, mens BCrypt-hashgenereringshastigheten er 71 000 hasher. Ved å bruke dette som en sammenligningsmodell, kan 5 millioner NTLM-hasher genereres for hver generert BCrypt-hash. Når de står overfor BCRPYTED-algoritmen, må hackere gjøre mer beregnede gjetninger på passordet og kan ikke stole på å bruke brute kraft for hver mulighet.
Merk: Hvis angriperen vet at passordet er så kort at det ikke tar lang tid å brute force nøkkelplassen, er det ikke nødvendig med inkrementelle angrepsskritt.
Tidseffektivitet blir en nøkkelfaktor for vellykket passordknekking. Selv om det ville være greit å dekke hele kritisk plass for brukerpassord, er tiden som kreves for å gjøre det vanligvis ikke mulig. Derfor, når du knekker, er det viktig å prøve det mest tidsbesparende angrepet først, og hvis det ikke lykkes, fortsette med et langsommere kryptografisk angrep som dekker mer nøkkelplass. Den raskeste måten er et enkelt ordbokangrep basert på vanlige brukerpassord og tidligere passorddump. Derfra bør du prøve å manipulere ordboken for å legge til tall eller symboler på slutten eller endre bokstaver. Dette kalles et hybridangrep eller et regelbasert angrep. Deretter kan du prøve å bruke maskinlæringsfunksjoner for å generere mulige passord. Markov-kjeden er et godt eksempel. Ved å kombinere vanlige elementer som finnes i engelsk for å danne ord (f.eks. "ing", "er", "qu"), kan en god gjetning av passordet genereres, for eksempel passordet nedenfor. Selv om det er enkelt å knekke dette spesifikke passordet med noen metode, vil vi bruke det for å forenkle alle angrepsvektorer. passord1234passord1234
Til slutt dekker målrettede brute force-angrep, kalt maskeangrep, alle nøkkelplasser for et gitt passord basert på en kryptografisk struktur. Med "struktur" av et passord mener jeg typen og rekkefølgen av tegn som brukes til å lage passordet. For eksempel en "struktur" med store bokstaver, etterfulgt av 7 små bokstaver, etterfulgt av 4 siffer (notert som). passord1234ullllllldddd
Små bokstaver, store bokstaver, symboler, tall (l) (u) (s) (d)
Så hvis en angriper bestemmer seg for å bruke strukturen til å lage alle mulighetene for en kombinasjon av tegn, vil han eller hun til slutt finne passordet. Da blir angriperens spørsmål: Hvilken struktur skal målrettes først når man angriper et sett med hash-verdier? passord1234
For å hjelpe til med å svare på dette spørsmålet, har jeg gjort litt statistisk analyse av populære passorddumper for å se om det finnes en mer vanlig passordstruktur enn andre, og i hvilken grad denne strukturen er riktig. En prøvestørrelse på over 34 millioner offentlig avslørte passord inkluderer kjente passorddumper som RockYou, LinkedIn, phpBB, etc.
Figuren nedenfor viser hvor ofte maskestrukturen er for hver unik maske. Den røde linjen representerer 50% linjen, som vises etter den 13. hyppigste masken.
Dette betyr at de 13 første unike maskestrukturene utgjør 50 % av eksempelpassordet. Strukturen til mer enn 20 millioner passord i prøven er plassert i de 13 første maskene. Disse resultatene er ganske sjokkerende når det gjelder universaliteten til strukturerte passord. De andre 50% finnes i den lange høyre halen og er redusert i denne figuren. Faktisk, av de 260 500 unike maskene, vises bare 400 i denne figuren. Konseptet med dette universelle strukturerte passordet er utrolig; Det er imidlertid ikke overraskende når du tenker på hvordan brukere oppretter og husker passordene sine. Basert på analysedataene er det logiske faktorer som bidrar til å forklare hvordan dette er mulig. Når en bruker blir bedt om å oppgi et passord som inneholder store bokstaver, blir det brukt som det første tegnet mer enn 90% av tiden. Når tall blir bedt om, legger de fleste brukere to siffer på slutten av passordet, sannsynligvis eksamensår. Det neste mest populære alternativet er å avslutte passordet med fire siffer (kanskje året før eller i år). I dette tilfellet har det neste mest populære tallet ett tall på slutten og tre tall på slutten. Strukturelle fellestrekk som dette gjør det mulig for en angriper å forutsi hva strukturen til et brukerpassord mest sannsynlig vil være.
Med denne strukturelle kunnskapen kan man trygt anta at brukeren mest sannsynlig vil sette passordet sitt til than (tilfeldige bokstaver), selv om de alle begynner med 9 bokstaver og har 9 bokstaver. Derfor antar vi at gitt en passordstruktur, hvis vi ser påfølgende bokstaver, er det sannsynligvis et ord. Dette er en veldig nyttig antagelse for crackers, da det eliminerer mye nøkkelplass. Dette blir da et hybridangrep som utnytter statistisk signifikans av en generell kryptografisk struktur. potetespwivwdhpp
Normalt, som penetrasjonstestere, selv om vi bryter et sett med hashverdier, kan det hende vi ikke har tid til å knekke alle hashverdier. Å bryte dem kan imidlertid bidra til å oppgradere tilgangen til systemet og gi kundene mer nyttige funn. Derfor, når du knekker et passord, kan det være nyttig å bestemme hvor mye tid som skal tildeles for å knekke et sett med hashverdier. Ved å bruke strukturene som ble funnet i den forrige analysen, kan en angriper bestemme hvilke topp 10 populære strukturer han eller hun ønsker å dekke basert på passordkompleksitetskrav sortert etter raskest fullføringstid. Til slutt kan en angriper tidsbegrense sin metode ved å bruke ikke mer enn en time på å utføre knekken. Dette ble oppdaget i en nylig penetrasjonstest for å få hash. Nedenfor er et øyeblikksbilde av resultatene av CPU-basert cracker.
Den raskeste konstruksjonen å fullføre i dette tilfellet er at vi definerer det som en stor bokstav etterfulgt av tre små bokstaver ("W" for "Word") og deretter fire siffer. Det er 69 passord i hashsettet som samsvarer med strukturen, og min standard CPU er i stand til å krysse alle mulighetene for strukturen på ett minutt. Vi sluttet å knekke på 62 minutter, og knekkingen produserte 221 unike knekkhash-verdier som matchet 491 kontoer, noe som resulterte i en total lekkasje på 11 %. Årsaken til den store forskjellen i antall knekkede passord og kontolekkasjer er at Office-innstillingene ofte fører til at folk bruker vanlige passord. Hvis en angriper bestemmer at et felles passord brukes i miljøet, vil alle brukere med samme passord også bli truet. U (W3) dddd
Selv om hybridangrep eller regelbaserte angrep (for eksempel) kan knekke flere av disse passordene raskere, kan strukturen til angrepspassordet tillate oss å dekke mer nøkkelplass. Denne metoden er et effektivt neste skritt hvis FASTER-angrepet viser seg å ikke lykkes med å ødelegge målhashen. Videre er det viktig å huske på at dette eksemplet er gjort på en ganske middelmådig CPU, og at å utføre det samme angrepet på en kraftig GPU kan redusere denne tiden til noen få sekunder. Derfor er den nøyaktige timingen ikke like viktig som den effektive implementeringsteorien. best64
hjelper oss med å angripe vanlige passordstrukturer generelt; Det finnes imidlertid verktøy som kan hjelpe til med å finne spesifikke applikasjoner. Verktøy som CeWL kan gjennomsøke ord fra nettsider og brukes til å generere ordlister eller ordbøker spesifikt for bedrifter. Det fungerer fordi bedrifter har en tendens til å bruke passord knyttet til deres bransje, selskap eller jobb. I tillegg, siden vi har fastslått at vanlige passord er populære i arbeidsmiljøet, kan det også være mulig å bruke passord som allerede er knekket som grunnlag for andre passord, noe som kan være tilsvarende. Hvis vi for eksempel finner ut at "" er en brukers passord, kan vi sette "" i en ny ordliste, sette den i regelsettet og deretter finne ut at noen andre har passordet "". Dette konseptet med å bruke knekkede grunnleggende ord (som ' ') og dekorere dem med omkringliggende tegn fungerer veldig effektivt når du knekker hashverdier dumpet fra bedriftsmiljøet, som kan spores tilbake til begrepet passordgjenbruk. Basert på penetrasjonstestene vi har gjennomført, er dette best egnet for å knekke de siste 20% av uncracked hashverdier. AcmeCorp1234AcmeCorpAcmeCorp@2015AcmeCorp
Det er også viktig å trimme ordboken slik at alle gjettet passord oppfyller kravene som er angitt av appen, slik at det ikke blir bortkastet tid med å gjette passord som ikke kan gjettes på grunn av lengde eller tegnsammensetning.
Starter med det raskeste angrepet og dekker minst nøkkelplass (standard ordbokangrep) til det langsomste og største nøkkelplassen (ren brute force) er den mest ideelle fremgangen for å vurdere tiden som er tildelt angrepet. Derfor bør en angriper implementere en standard tilnærming som tar dette i betraktning. Hvis kontoen angriperen ønsker å hacke er fullført i første fase, er det kanskje ingen grunn til å fortsette å bruke andre angrep; Men i mange tilfeller kan det hende at et enkelt ordbokangrep ikke er nok dersom en målkonto er tilstede, eller at angriperen bare ønsker å ødelegge så mange kontoer som mulig, og derfor kan det være nødvendig å bruke et blandet angrep med statistisk struktur og et målrettet brute force angrep. Derfor er etableringsmetoder avgjørende for en vellykket crack, som kan inkludere de tidligere nevnte metodene sammen med noen automatiserte prosesser. Nyere verktøy som PRINCE kan bidra til å lette passordknekking. Det er viktig å utvikle et verktøybelte, som f.eks. PRINCE prøver i metoder, men å forstå funksjonalitetene bak verktøyene, i stedet for å stole helt på dem, vil gjøre cracking mer effektiv.
Ved å analysere ved hjelp av disse passordene, er det mulig å identifisere de mest populære konstruksjonene gitt det nødvendige kompleksitetsnivået. Derfor bør utviklere kanskje implementere noen kontroller for å hindre brukere i å bruke noen av de mest populære strukturene for å flate kurven til den forrige grafikken. Problemet med ideen er imidlertid at uten en enkel struktur kan brukerne finne det vanskelig å huske passordene sine. Jeg anbefaler å bruke en passordbehandler som krever to-autentisering. Disse programmene vil generere og lagre alle passordene dine for deg, så minnet er ikke et problem. Passordene de genererer er tilfeldige i strukturen og kan brukes så lenge applikasjonen tillater det. Som jeg nevnte tidligere, er kryptering av passord en annen veldig effektiv måte å bremse utsiktene til en angriper. Til slutt er implementering av strategier på kontoret som hjelper brukerne å forstå farene ved å dele eller gjenbruke passord et vellykket skritt i riktig retning, selv om brukerne ikke alltid følger dem. Selv om de sannsynligvis ikke vil følge det hele tiden, er det en effektiv kontroll.
Passordknekking kan være et vagt begrep. Etter hvert som vanskeligheten med å knekke øker, er det behov for målrettede angrep basert på effektivitet, og personlige knekkmetoder bør etableres. Det er ikke verdt å investere penger for til slutt å øke hastigheten på hashgenerering. Derfor kan bruk av statistikk og verktøy som et angrepsmiddel for å implementere en metode og en forenklet prosess lette passordknekking. Utviklere kan utvikle kontroller for å håndtere denne situasjonen, og brukere kan bruke sikre passordbehandlere for å minimere effektiviteten til disse angrepene; Imidlertid er slike implementeringer ennå ikke veldig populære. For tiden er statistiske angrep mot passord effektive når det gjelder antall knekker og effektivitet av tidsforbindelser. Tenk på ditt eget passord og spør deg selv hvor raskt de kan knekkes basert på strukturen til passordet og hvilke kontroller på kontoret ditt som kan føre til at en angriper hacker brukerens konto.