Atunci când un hacker sau un tester de penetrare distruge un sistem și dorește să acceseze o parolă în text simplu dintr-un dump de bază de date, trebuie să spargă mai întâi hash-ul parolei stocate. Mulți atacatori s-au scufundat în acest concept: au încercat orice atac de parolă arbitrar pe care au vrut să-l încerce, cu puțin motiv. Această discuție va arăta câteva metode eficiente de spargere a parolelor și cum să utilizați analiza statistică a parolelor împreună cu instrumente pentru a crea o abordare limitată în timp pentru spargere eficientă și de succes.
Spargerea parolelor este o cauză pe moarte. Utilizatorii trebuie să creeze parole mai complexe, iar unii dezvoltatori back-end încep să folosească mecanisme precum Bcrypt pentru a înlocui funcțiile standard de hash. Valorile hash Bcrypt durează mai mult pentru a fi generate, astfel încât parolele devin mai greu de spart. Crackerii trebuie să genereze hash-uri foarte repede pentru a sparge eficient parolele, deci Bcrypt este un instrument foarte puternic pentru combaterea unor astfel de atacuri. Pentru a ilustra acest exemplu, programul de spargere a parolelor realizat din 25 de clustere GPU lansat în 2012 a fost capabil să obțină o viteză de generare a hash-urilor NTLM de 350 de miliarde de hash-uri pe secundă, în timp ce viteza de generare a hash-urilor Bcrypt este de 71.000. Folosind acest lucru ca model de comparație, pentru fiecare hash Bcrypt generat, pot fi generate 5 milioane de hash-uri NTLM. Când se confruntă cu algoritmul Bcrpyted, hackerii trebuie să facă ghicituri mai computaționale cu privire la parolă și nu se pot baza pe utilizarea forței brute pentru fiecare posibilitate.
NOTĂ: Dacă atacatorul știe că lungimea parolei este atât de scurtă încât nu va dura mult timp să spargă spațiul cheie cu forță brutală, nu este nevoie să luați măsuri de atac incrementale.
Eficiența timpului devine un factor cheie pentru spargerea cu succes a parolelor. Deși ar fi bine să acoperiți întregul spațiu critic al parolei utilizatorului, timpul necesar pentru a face acest lucru nu este adesea fezabil. Prin urmare, atunci când cracați, este important să încercați mai întâi cel mai economisitor de timp atac și, dacă nu reușește, să continuați cu atacurile criptografice mai lente care acoperă mai mult spațiu cheie. Cea mai rapidă metodă este un atac simplu de dicționar bazat pe parole comune de utilizator și depozite de parole anterioare. De acolo, ar trebui să încercați să manipulați dicționarul pentru a adăuga numere sau simboluri la sfârșit sau pentru a schimba literele. Acest lucru se numește un atac hibrid sau un atac bazat pe reguli. În continuare, puteți încerca să utilizați funcțiile de învățare automată pentru a genera posibile parole. Lanțul Markov este un exemplu bun. Combinând elemente comune prezente în limba engleză pentru a forma cuvinte (de exemplu, „ing ", „er", „qu "), se poate genera o ghicire bună a parolei, cum ar fi parola de mai jos.Deși este ușor să spargem această parolă specifică folosind orice metodă, vom folosi această parolă pentru a simplifica toți vectorii de atac. parola1234parola1234
În cele din urmă, atacurile cu forță brută vizate (numite atacuri cu mască) se bazează pe structuri criptografice care acoperă tot spațiul cheie al unei anumite parole. Prin "structura" unei parole ma refer la tipul si ordinea caracterelor folosite pentru crearea parolei. De exemplu, o "structură" cu litere majuscule, urmată de 7 litere mici, urmate de 4 cifre (marcate ca). parola1234ullllllldddd
Litere mici, litere majuscule, simboluri, numere (l) (u) (s) (d)
Deci, dacă un atacator decide să folosească această structură pentru a crea toate posibilitățile combinațiilor de caractere, el sau ea va găsi în cele din urmă parola. Atunci întrebarea atacatorului devine: ce structură ar trebui vizată mai întâi atunci când atacă un set de valori hash? parola1234
Pentru a ajuta la răspunsul la această întrebare, am efectuat câteva analize statistice ale depozitelor de parole populare pentru a vedea dacă există o structură de parolă mai comună decât alte structuri de parolă și în ce măsură această structură este corectă. Dimensiunea eșantionului de peste 34 de milioane de parole expuse public include dumpuri de parole celebre precum RockYou, LinkedIn, phpBB etc.
Figura de mai jos arată frecvența structurii mascii pentru fiecare mască unică. Linia roșie reprezintă linia de 50%, care apare după cea de-a 13-a mască cea mai frecventă.
Aceasta înseamnă că primele 13 structuri unice de mască reprezintă 50% din parola eșantionului. Structura a peste 20 de milioane de parole din eșantion se află în primele 13 măști. În ceea ce privește universalitatea parolelor structurate, aceste rezultate sunt destul de șocante. Celelalte 50% sunt prezente în coada lungă din dreapta și au fost reduse în această figură. De fapt, din 260.500 de măști unice, doar 400 sunt afișate în această figură. Conceptul acestei cifre structurale universale este incredibil; Cu toate acestea, acest lucru nu este surprinzător când vă gândiți la modul în care utilizatorii își creează și își amintesc parolele. Pe baza datelor analizate, există un număr de factori logici care ajută la explicarea modului în care acest lucru este posibil. Atunci când utilizatorului i se cere să furnizeze o parolă care conține litere majuscule, aceasta este folosită ca primul caracter mai mult de 90% din timp. Atunci când sunt solicitate numere, majoritatea utilizatorilor adaugă două cifre la sfârșitul parolei (probabil anul absolvirii). Următoarea variantă cea mai populară este încheierea parolei cu patru cifre (poate anul precedent sau anul acesta).În acest caz, următorul număr cel mai popular are un număr la sfârșit și trei cifre la sfârșit. Unitățile structurale, cum ar fi acestea, permit atacatorului să prezică care este cel mai probabil structura parolei utilizatorului.
Folosind aceste cunoștințe structurale, se poate presupune în siguranță că utilizatorii își vor seta parola la than (litere aleatorii), chiar dacă toate încep cu 9 litere și au 9 litere. Prin urmare, presupunem că, având în vedere o structură criptografică, dacă vedem litere consecutive, cel mai probabil este un cuvânt. Aceasta este o ipoteză foarte utilă pentru biscuiți, deoarece elimină o mulțime de spațiu cheie. Acest lucru devine apoi un atac hibrid care utilizează semnificația statistică a unei structuri criptografice universale. potatoespwivwdhpp
De obicei, ca testeri de penetrare, chiar dacă spargem un set de hash-uri, este posibil să nu avem timp să spargem toate hash-urile. Cu toate acestea, distrugerea lor poate ajuta la actualizarea accesului la sistem și poate aduce descoperiri mai utile clienților. Prin urmare, atunci când spargeți o parolă, poate fi util să determinați cât timp va fi alocat pentru a sparge un set de valori hash. Folosind structurile găsite în analiza anterioară, un atacator poate determina primele 10 structuri populare pe baza cerințelor de complexitate a parolei sortate după cel mai rapid timp de finalizare. În cele din urmă, un atacator poate limita timpul metodei sale, petrecând nu mai mult de o oră pentru a efectua o cracare. Acest lucru a fost descoperit într-un test recent de penetrare pentru a obține hash. Mai jos este un instantaneu al rezultatelor cracker-ului bazat pe CPU.
În acest caz, cea mai rapidă structură finalizată este, pe care o definim ca o literă majusculă, urmată de trei litere mici („W "pentru „cuvânt"), urmată de patru cifre. Există 69 de parole în setul de hash care se potrivesc cu structura, iar CPU-ul meu standard este capabil să traverseze toate posibilitățile structurii într-un minut. Am oprit cracarea la 62 de minute, iar cracarea a generat 221 de hash-uri unice de cracare, potrivite cu 491 de conturi, ceea ce a dus la o scurgere totală de 11%. Motivul pentru care numărul de parole sparte și scurgeri de cont variază foarte mult este că setările Office tind să determine oamenii să folosească parole comune. Dacă un atacator determină că o parolă generică este utilizată în mediu, toți utilizatorii cu aceeași parolă vor fi, de asemenea, amenințați. U (W3) dddd
Deși atacurile hibride sau atacurile bazate pe reguli (de exemplu) pot sparge mai multe dintre aceste parole mai repede, structura parolelor de atac ne permite să acoperim mai mult spațiu cheie. Această metodă este un următor pas eficient dacă atacul Faster se dovedește a fi incapabil să distrugă cu succes hash-ul țintă.De asemenea, este important să ne amintim că acest exemplu a fost făcut pe un CPU destul de mediocru, iar efectuarea aceluiași atac pe un GPU puternic poate reduce acest timp la câteva secunde. Prin urmare, momentul exact nu este la fel de important ca implementarea eficientă a teoriei. best64
Analiza statistică ne ajută să atacăm structurile criptografice comune în general; Cu toate acestea, există instrumente care pot ajuta la localizarea unei anumite aplicații. Instrumente precum CeWL pot prelua cuvinte de pe pagini web și pot fi folosite pentru a genera liste de cuvinte sau dicționare dedicate companiilor. Funcționează deoarece companiile tind să folosească parole legate de industria, compania sau locul de muncă. În plus, deoarece am stabilit că parolele comune sunt populare în mediul de lucru, este posibil să se folosească și parole deja sparte ca bază pentru alte parole, care ar putea fi similare. De exemplu, dacă descoperim că „ "este parola unui utilizator, este posibil să punem „" într-o nouă listă de cuvinte, să o punem într-un set de reguli și apoi să descoperim că altcineva are parola „ ". Acest concept de utilizare a cuvintelor de bază pentru spargere (cum ar fi ' ') și modificări cu caracterele din jur este foarte eficient în spargerea valorilor hash dumpate din mediul întreprinderii, ceea ce poate fi urmărit până la conceptul de reutilizare a parolelor. Conform testelor de penetrare pe care le-am efectuat, aceasta este cea mai potrivită pentru a sparge ultimele 20% de hash-uri nesparse. AcmeCorp1234AcmeCorpAcmeCorp@2015AcmeCorp
De asemenea, este important să tăiați dicționarul astfel încât toate parolele ghicite să corespundă cerințelor stabilite de aplicație, astfel încât să nu pierdeți timpul ghicind parole care nu pot fi ghicite din cauza lungimii sau a compoziției caracterelor.
Pornind de la cel mai rapid atac, acoperind cel mai mic spațiu de cheie (atacul standard al dicționarului) până la cel mai lent și cel mai mare spațiu de cheie (forța brută pură) este progresul cel mai ideal pentru a lua în considerare timpul alocat atacului. Prin urmare, atacatorii ar trebui să implementeze o abordare standard care să țină cont de acest lucru. Dacă contul pe care atacatorul dorește să-l compromită este finalizat în prima fază, atunci este posibil să nu existe niciun motiv pentru a continua cu alte atacuri; Cu toate acestea, în multe cazuri, un simplu atac de dicționar poate să nu fie suficient dacă există un cont țintă sau atacatorul dorește pur și simplu să distrugă cât mai multe conturi posibil și, prin urmare, poate fi necesar un atac hibrid cu structuri statistice și un atac cu forță brută țintită. Prin urmare, stabilirea metodelor este esențială pentru un crack de succes, care poate include metodele menționate mai sus, precum și unele procese automatizate. Instrumentele recente, cum ar fi PRINCE, pot ajuta la spargerea parolelor. Este important să dezvoltați o bandă de instrumente, cum ar fi PRINCE încercați în metode, dar înțelegerea caracteristicilor din spatele instrumentelor, în loc să vă bazați în întregime pe ele, va face crack-ul mai eficient.
Prin analiza cu aceste parole se pot identifica cele mai populare structuri având în vedere nivelul de complexitate dorit. Prin urmare, dezvoltatorii ar trebui să implementeze unele controale pentru a împiedica utilizatorii să utilizeze unele dintre aceste structuri foarte populare pentru a aplatiza curba graficului anterior. Cu toate acestea, problema cu această idee este că, fără o structură simplă, utilizatorii pot avea dificultăți în a-și aminti parolele. Recomand să utilizați un manager de parole care necesită autentificare dublă. Aceste aplicații vor genera și stoca toate parolele pentru dvs., astfel încât memoria nu este o problemă. Parolele pe care le generează sunt aleatorii din punct de vedere structural și pot fi utilizate atâta timp cât aplicația le permite. După cum am menționat mai devreme, criptarea parolelor este o altă metodă foarte eficientă de a încetini perspectivele unui atacator.În cele din urmă, implementarea unei strategii în birou care să ajute utilizatorii să înțeleagă pericolele partajării sau reutilizării parolelor este un pas de succes în direcția corectă, chiar dacă utilizatorii nu respectă întotdeauna. Deși este foarte probabil ca acestea să nu respecte tot timpul, aceasta este o măsură eficientă de control.
Spargerea parolei poate fi un concept vag. Pe măsură ce dificultatea de cracare crește, sunt necesare atacuri vizate bazate pe eficiență și ar trebui stabilite metode individuale de cracare. Nu merită să investești bani pentru a crește în cele din urmă viteza de generare a hash-ului. Prin urmare, utilizarea statisticilor și a instrumentelor ca mijloc de atac pentru a implementa o metodă și un proces simplificat poate facilita spargerea parolei. Dezvoltatorii pot dezvolta controale pentru a face față acestei situații, iar utilizatorii pot folosi un manager de parole securizat pentru a minimiza eficacitatea acestor atacuri; Cu toate acestea, astfel de implementări nu sunt încă foarte populare. În prezent, atacurile statistice împotriva parolelor sunt eficiente atât în ceea ce privește numărul de spargeri, cât și eficiența conexiunii de timp. Gândiți-vă la propria parolă și întrebați-vă cât de repede pot fi sparte în funcție de structura parolei și de controalele din biroul dvs. care ar putea determina un atacator să invadeze contul unui utilizator.