O scurtă notă – acest articol este despre teoria modului de a sparge parolele. Înțelegerea modului în care infractorii cibernetici execută atacurile este extrem de importantă pentru înțelegerea modului de securizare a sistemelor împotriva acestor tipuri de atacuri.

Încercarea de piratare a unui sistem pe care nu îl dețineți este probabil ilegală în jurisdicția dvs. (plus piratarea propriilor sisteme poate [and often does] încălcați orice garanție pentru acel produs).

Să începem cu elementele de bază. Ce este un atac de forță brută?

Acest tip de atac implică în mod repetat încercarea de a vă conecta ca utilizator, încercând fiecare combinație posibilă de litere, numere și caractere (folosind instrumente automate).

Acest lucru se poate face fie online (deci în timp real, încercând continuu diferite combinații de nume de utilizator / parolă pe conturi precum rețelele sociale sau site-uri bancare), fie offline (de exemplu, dacă ați obținut un set de parole hash și încercați să spargeți le offline).

Offline nu este întotdeauna posibil (poate fi dificil să obțineți un set de parole hash), dar este mult mai puțin zgomotos. Acest lucru se datorează faptului că o echipă de securitate va observa probabil multe, multe conturi de conectare eșuate din același cont, dar dacă puteți sparge parola offline, nu veți avea o înregistrare a încercărilor de conectare eșuate.

Acest lucru este relativ ușor cu o parolă scurtă. Devine exponențial mai dificil cu o parolă mai lungă din cauza numărului mare de posibilități.

De exemplu, dacă știți că cineva folosește o parolă lungă de 5 caractere, compusă doar din litere mici, numărul total de parole posibile este de 26 ^ 5 (26 de litere posibile din prima literă, 26 de opțiuni posibile pentru a doua scrisoare etc.) sau 11.881.376 combinații posibile.

Dar dacă cineva folosește o parolă de 11 caractere, doar din litere mici, numărul total de parole posibile este de 26 ^ 11 sau 3.670.344.486.987.776 parole posibile.

Când adăugați litere mari, caractere speciale și numere, acest lucru devine și mai dificil și consumă mult timp pentru a sparge. Cu cât există mai multe parole posibile, cu atât este mai greu pentru cineva să se conecteze cu succes printr-un atac de forță brută.

Cum să te protejezi

Acest tip de atac poate fi apărat în două moduri diferite. În primul rând, puteți utiliza parole suficient de lungi și complexe (cel puțin 15 caractere). De asemenea, puteți utiliza parole unice pentru fiecare cont (utilizați un manager de parole!) Pentru a reduce pericolul cauzat de încălcarea datelor.

O echipă de securitate poate bloca un cont după un anumit număr de încercări de conectare eșuate. De asemenea, pot forța o metodă secundară de verificare, cum ar fi Captcha, sau pot utiliza autentificarea cu 2 factori (2FA) care necesită un al doilea cod (SMS sau e-mail, bazat pe aplicație sau pe cheie hardware).

Iată un articol despre cum să execute un atac de forță brută.

Cum puteți sparge parolele mai repede?

Un atac de dicționar implică încercarea de a vă conecta în mod repetat încercând un număr de combinații incluse într-un „dicționar” precompilat sau o listă de combinații.

Acest lucru este de obicei mai rapid decât un atac de forță brută, deoarece combinațiile de litere și cifre au fost deja calculate, economisindu-vă timp și putere de calcul.

Dar dacă parola este suficient de complexă (de exemplu 1098324ukjbfnsdfsnej) și nu apare în „dicționar” (lista precompilată de combinații din care lucrați), atacul nu va funcționa.

Are frecvent succes deoarece, adesea atunci când oamenii aleg parole, aleg cuvinte obișnuite sau variații ale acelor cuvinte (de exemplu, „parolă” sau „p @ SSword”).

Un hacker ar putea folosi și acest tip de atac atunci când știe sau ghicesc o parte a parolei (de exemplu, numele unui câine, zilele de naștere ale copiilor sau o aniversare – informații pe care un hacker le poate găsi pe paginile de socializare sau alte resurse open source).

Măsuri de protecție similare cu cele descrise mai sus împotriva atacurilor cu forță brută pot împiedica aceste tipuri de atacuri să aibă succes.

Ce se întâmplă dacă aveți deja o listă de parole hash?

Parolele sunt stocate în fișierul / etc / shadow pentru Linux și fișierul C: Windows System32 config pentru Windows (care nu sunt disponibile în timp ce sistemul de operare este pornit).

Dacă ați reușit să obțineți acest fișier sau dacă ați obținut un hash de parolă într-un mod diferit, cum ar fi adulmecarea traficului în rețea, puteți încerca să spargeți parola „offline”.

În timp ce atacurile de mai sus necesită încercarea repetată de autentificare, dacă aveți o listă de parole hash, puteți încerca să le spargeți pe mașina dvs., fără a dezactiva alertele generate de încercări repetate de autentificare nereușite. Apoi, încercați să vă conectați o singură dată, după ce ați spart cu succes parola (și, prin urmare, nu există nicio încercare de autentificare eșuată).

Puteți utiliza atacuri cu forță brută sau atacuri de dicționar împotriva fișierelor hash și pot avea succes în funcție de cât de puternic este hash-ul.

Așteaptă un minut – ce este hashing?

35D4FFEF6EF231D998C6046764BB935D

Recunoașteți acest mesaj? Scrie „Bună, numele meu este megan”

7DBDA24A2D10DAF98F23B95CFAF1D3AB

Acesta este primul paragraf al acestui articol. Da, pare o prostie, dar este de fapt un „hash”.

O funcție hash permite unui computer să introducă un șir (o combinație de litere, cifre și simboluri), să ia acel șir, să-l amestece și să scoată un șir de lungime fixă. De aceea ambele șiruri de mai sus au aceeași lungime, chiar dacă intrările șirurilor au fost de lungimi foarte diferite.

Hash-urile pot fi create din aproape orice conținut digital. Practic tot conținutul digital poate fi redus la binar sau la o serie de 0 și 1. Prin urmare, tot conținutul digital (imagini, documente etc.) poate fi hash.

Există multe funcții de hash diferite, dintre care unele sunt mai sigure decât altele. Hash-urile de mai sus au fost generate cu MD5 (MD înseamnă „Message Digest”). Diferite funcții diferă, de asemenea, prin lungimea hashului pe care îl produc.

Același conținut din aceeași funcție hash va produce întotdeauna același hash. Cu toate acestea, chiar și o mică modificare va schimba complet hashul. De exemplu,

2FF5E24F6735B7564CAE7020B41C80F1

Este hashul pentru „Bună, numele meu este Megan” Doar cu majuscule M în Megan s-a schimbat complet hashul de sus.

Hash-urile sunt, de asemenea, funcții unidirecționale (ceea ce înseamnă că nu pot fi inversate). Aceasta înseamnă că hashurile (unice și unidirecționale) pot fi utilizate ca tip de amprentă digitală pentru conținut.

Care este un exemplu de utilizare a hashurilor?

Hash-urile pot fi utilizate ca verificare a faptului că un mesaj nu a fost modificat.

De exemplu, atunci când trimiteți un e-mail, puteți hash întregul e-mail și puteți trimite și hash-ul. Apoi destinatarul poate rula mesajul primit prin aceeași funcție hash pentru a verifica dacă mesajul a fost modificat în tranzit. Dacă cele două hashuri se potrivesc, mesajul nu a fost modificat. Dacă nu se potrivesc, mesajul a fost modificat.

De asemenea, parolele sunt de obicei hash când sunt stocate. Când un utilizator introduce parola, computerul calculează valoarea hash și o compară cu valoarea hash stocată. În acest fel computerul nu stochează parolele în text simplu (deci un hacker nebun nu le poate fura!).

Dacă cineva poate fura fișierul de parolă, datele sunt inutile, deoarece funcția nu poate fi inversată (deși există modalități, cum ar fi tabelele curcubeu, de a afla ce text clar creează hash-ul cunoscut).

Care este problema cu hashurile?

Dacă un hash poate lua date de orice lungime sau conținut, există posibilități nelimitate pentru date care pot fi hash.

Deoarece un hash convertește acest text într-un conținut cu lungime fixă ​​(de exemplu, 32 de caractere), există un număr finit de combinații pentru un hash. Este un număr foarte foarte mare de posibilități, dar nu infinit.

În cele din urmă, două seturi diferite de date vor produce aceeași valoare hash. Aceasta se numește coliziune.

Dacă aveți un hash și încercați să parcurgeți fiecare valoare posibilă de text simplu pentru a găsi textul care se potrivește cu hash-ul dvs., va fi un proces foarte lung, foarte dificil.

Cu toate acestea, ce se întâmplă dacă nu vă pasă care două hashuri se ciocnesc?

Aceasta se numește „problema zilei de naștere‘ în matematică. Într-o clasă de 23 de elevi, probabilitatea ca cineva să aibă ziua de naștere într-o anumită zi este de aproximativ 7%, dar probabilitatea ca oricare două persoane să aibă aceeași zi de naștere este de aproximativ 50%.

Același tip de analiză poate fi aplicat funcțiilor hash pentru a găsi oricare două hashuri care se potrivesc (în loc de un hash specific care se potrivește cu celălalt).

Pentru a evita acest lucru, puteți utiliza funcții hash mai lungi, cum ar fi SHA3, unde posibilitatea coliziunilor este mai mică.

Puteți încerca să generați propriile funcții hash pentru SHA3 aici și MD5 aici.

Puteți încerca să faceți hashuri cu forță brută, dar durează foarte mult. Modul mai rapid de a face acest lucru este să folosiți tabele curcubeu precomputate (care sunt similare cu atacurile din dicționar).

Pare foarte ușor să fii piratat. Ar trebui să fiu îngrijorat?

Cel mai important lucru de reținut despre hacking este că nimeni nu vrea să facă mai multă muncă decât trebuie să facă. De exemplu, hashurile de forțare brută pot fi extrem de consumatoare de timp și dificile. Dacă există o modalitate mai ușoară de a vă obține parola, probabil asta va încerca mai întâi un actor nefast.

Asta înseamnă că activarea celor mai bune practici de securitate cibernetică este probabil cea mai simplă modalitate de a preveni piratarea. De fapt, Microsoft raportat recent faptul că doar activarea 2FA va sfârși prin a bloca 99,9% din atacurile automate.

Cum sa spargeti parolele
https://xkcd.com/538/

Lectură suplimentară:

Instrumente populare de cracare a parolelor