Kako razbiti lozinke

Kratka napomena - ovaj članak govori o teoriji kako provaliti lozinke. Razumijevanje načina na koji cyber kriminalci izvršavaju napade izuzetno je važno za razumijevanje načina zaštite sustava od takvih vrsta napada.

Pokušaj hakiranja sustava koji nije u vašem posjedu vjerojatno je nezakonit u vašoj nadležnosti (plus hakiranje vlastitih sustava može [i često] krši jamstvo za taj proizvod).

Krenimo s osnovama. Što je napad grubom silom?

Ova vrsta napada uključuje opetovano pokušavanje prijave kao korisnika isprobavanjem svih mogućih kombinacija slova, brojeva i znakova (pomoću automatiziranih alata).

To se može učiniti bilo na mreži (dakle u stvarnom vremenu, kontinuiranim isprobavanjem različitih kombinacija korisničkog imena / lozinke na računima kao što su društveni mediji ili web stranice banaka) ili izvan mreže (na primjer ako ste dobili skup raspršenih lozinki i pokušavate provaliti njih offline).

Izvanmrežno nije uvijek moguće (može biti teško dobiti skup raspršenih lozinki), ali je puno manje bučno. To je zato što će sigurnosni tim vjerojatno primijetiti mnogo, mnogo neuspjelih računa za prijavu s istog računa, ali ako lozinku možete razbiti izvan mreže, nećete imati evidenciju neuspjelih pokušaja prijave.

To je relativno lako s kratkom lozinkom. Duljom lozinkom postaje eksponencijalno teže zbog velikog broja mogućnosti.

Na primjer, ako znate da netko koristi lozinku dugu 5 znakova, koja se sastoji samo od malih slova, ukupan broj mogućih lozinki je 26 ^ 5 (26 mogućih slova za odabir za prvo slovo, 26 mogućih izbora za drugo pismo itd.), ili 11.881.376 mogućih kombinacija.

Ali ako netko koristi lozinku od 11 znakova, samo malim slovima, ukupan broj mogućih lozinki je 26 ^ 11 ili 3,670,344,486,987,776 mogućih lozinki.

Kada dodate velikim slovima, posebne znakove i brojeve, to postaje još teže i dugotrajno. Što je više mogućih lozinki, to je teže nekome se uspješno prijaviti napadom grube sile.

Kako se zaštititi

Od ove se vrste napada može obraniti na nekoliko različitih načina. Prvo, možete koristiti dovoljno dugačke, složene lozinke (najmanje 15 znakova). Također možete koristiti jedinstvene lozinke za svaki račun (upotrijebite upravitelj lozinki!) Kako biste smanjili opasnost od kršenja podataka.

Sigurnosni tim može zaključati račun nakon određenog broja neuspjelih pokušaja prijave. Također mogu prisiliti sekundarnu metodu provjere kao što je Captcha ili upotrijebiti dvofaktorsku provjeru autentičnosti (2FA) koja zahtijeva drugi kôd (SMS ili e-poštu, temeljenu na aplikaciji ili hardverski ključ).

Evo članka o tome kako izvršiti napad grubom silom.

Kako možete brže razbiti lozinke?

Napad rječnika uključuje pokušaj višestruke prijave pokušajem niza kombinacija uključenih u unaprijed sastavljeni 'rječnik' ili popis kombinacija.

To je obično brže od napada grubom silom jer su kombinacije slova i brojeva već izračunate, štede vam vrijeme i računarsku snagu.

Ali ako je lozinka dovoljno složena (na primjer 1098324ukjbfnsdfsnej) i ne pojavi se u 'rječniku' (unaprijed sastavljeni popis kombinacija iz kojih radite), napad neće uspjeti.

Često je uspješan jer, često ljudi kada biraju lozinke, odaberu uobičajene riječi ili varijacije tih riječi (na primjer, "lozinka" ili "p @ SSword").

Haker bi također mogao upotrijebiti ovu vrstu napada kada zna ili pogodi dio lozinke (na primjer, ime psa, dječji rođendani ili godišnjica - informacije koje haker može pronaći na stranicama društvenih mreža ili drugim izvorima otvorenog koda).

Slične mjere zaštite onima koje su gore opisane od napada grubom silom mogu spriječiti da ove vrste napada budu uspješne.

Što ako već imate popis raspršenih lozinki?

Lozinke se pohranjuju u datoteku / etc / shadow za Linux i C: \ Windows \ System32 \ config datoteku za Windows (koje nisu dostupne dok se operativni sustav podiže).

Ako ste uspjeli doći do ove datoteke ili ako ste hash lozinke dobili na drugačiji način, poput njuškanja prometa na mreži, možete pokušati probiti lozinku 'offline'.

Iako gornji napadi zahtijevaju višestruko pokušavanje prijave, ako imate popis raspršenih lozinki, možete ih pokušati razbiti na vašem računalu, bez isključivanja upozorenja generiranih ponovljenim neuspjelim pokušajima prijave. Tada se pokušate prijaviti samo jednom, nakon što ste uspješno provalili lozinku (i stoga nema neuspjelog pokušaja prijave).

Možete koristiti napade grubom silom ili napade rječnikom protiv hash datoteka i mogu biti uspješni, ovisno o snazi ​​hasha.

Čekaj malo - što je raspršivanje?

35D4FFEF6EF231D998C6046764BB935D

Prepoznati ovu poruku? Kaže "Bok, moje ime je Megan"

7DBDA24A2D10DAF98F23B95CFAF1D3AB

Ovo je prvi odlomak ovog članka. Da, izgleda kao besmislica, ali zapravo je 'hash'.

Hash funkcija omogućuje računalu unos niza (neke kombinacije slova, brojeva i simbola), uzimanje tog niza, njegovo miješanje i iznošenje niza fiksne duljine. Zbog toga su obje gornje žice iste duljine, iako su ulazi žica bili vrlo različite duljine.

Hash-ovi se mogu stvoriti iz gotovo bilo kojeg digitalnog sadržaja. U osnovi se sav digitalni sadržaj može svesti na binarni ili na niz 0 i 1. Stoga se sav digitalni sadržaj (slike, dokumenti itd.) Može raspršiti.

Postoji mnogo različitih funkcija raspršivanja, od kojih su neke sigurnije od drugih. Gornja raspršivanja generirana su s MD5 (MD je kratica za "Message Digest"). Različite se funkcije razlikuju i po duljini heša koji proizvode.

Isti sadržaj u istoj hash funkciji uvijek će proizvesti isti hash. Međutim, čak i mala promjena u potpunosti će promijeniti hash. Na primjer,

2FF5E24F6735B7564CAE7020B41C80F1

Je li hash za "Bok, moje ime je Megan" Samo pisanje velikih slova M u Megan potpuno je promijenilo hash odozgo.

Hash-ovi su također jednosmjerne funkcije (što znači da ih nije moguće poništiti). To znači da se hashovi (jedinstveni i jednosmjerni) mogu koristiti kao vrsta digitalnog otiska prsta za sadržaj.

Koji je primjer kako se koriste hashovi?

Hashovi se mogu koristiti kao potvrda da poruka nije promijenjena.

Na primjer, kada pošaljete e-poštu, možete hashirati cijelu e-poštu i poslati i hash. Tada primatelj može pokrenuti primljenu poruku kroz istu funkciju raspršivanja kako bi provjerio je li poruka promijenjena tijekom prijenosa. Ako se dva hasha podudaraju, poruka nije promijenjena. Ako se ne podudaraju, poruka je promijenjena.

Također, lozinke se obično raspršuju kad se pohrane. Kada korisnik unese lozinku, računalo izračunava vrijednost raspršivanja i uspoređuje je s pohranjenom vrijednosti raspršivanja. Na taj način računalo ne pohranjuje lozinke u otvorenom tekstu (tako ih neki dosadni haker ne može ukrasti!).

Ako je netko u mogućnosti ukrasti datoteku zaporke, podaci su beskorisni jer se funkcija ne može poništiti (iako postoje načini, poput duginih tablica, da se utvrdi koji otvoreni tekst stvara poznati hash).

U čemu je problem s hashovima?

Ako hash može uzeti podatke bilo koje duljine ili sadržaja, postoje neograničene mogućnosti za podatke koji se mogu raspršiti.

Budući da hash pretvara ovaj tekst u sadržaj fiksne duljine (na primjer, 32 znaka), postoji konačan broj kombinacija za hash. To je vrlo vrlo velik broj mogućnosti, ali ne beskonačan.

Na kraju će dva različita skupa podataka dati istu hash vrijednost. To se naziva sudarom.

Ako imate jedan hash i pokušavate proći kroz svaku moguću vrijednost otvorenog teksta kako biste pronašli otvoreni tekst koji odgovara vašem hashu, to će biti vrlo dug, vrlo težak postupak.

Međutim, što ako vas nije briga koja se dva hasha sudaraju?

To se u matematici naziva 'rođendanskim problemom'. U razredu od 23 učenika vjerojatnost da netko ima rođendan određenog dana iznosi oko 7%, ali vjerojatnost da bilo koje dvije osobe dijele isti rođendan iznosi oko 50%.

Ista vrsta analize može se primijeniti na hash funkcije kako bi se pronašla bilo koja dva heša koja se podudaraju (umjesto određenog hasha koji odgovara drugom).

Da biste to izbjegli, možete koristiti duže hash funkcije kao što je SHA3, gdje je mogućnost sudara manja.

Možete pokušati generirati vlastite hash funkcije za SHA3 ovdje i MD5 ovdje.  

Možete pokušati grubo raspršiti silu, ali to traje jako dugo. Brži način za to je korištenje unaprijed izračunatih duginih tablica (koje su slične rječničkim napadima).

Čini se da je stvarno lako biti hakiran. Trebam li biti zabrinut?

Najvažnije što trebate upamtiti kod hakiranja je da nitko ne želi raditi više posla nego što mora. Na primjer, brutalno forsiranje hashova može biti izuzetno dugotrajno i teško. Ako postoji lakši način za dobivanje lozinke, vjerojatno će to prvo pokušati podli glumac.

To znači da je omogućavanje osnovnih praksi o kibernetskoj sigurnosti vjerojatno najlakši način za sprečavanje hakiranja. Zapravo je Microsoft nedavno izvijestio da će samo omogućavanje 2FA blokirati 99,9% automatiziranih napada.

Dodatno čitanje:

Popularni alati za razbijanje lozinki