Rainbow Tables: Najgora noćna mora vaše lozinke

Nemojte dozvoliti njihovom glupom imenu da te zavara, ove stvari su strašne.

Dok možda mislite na Rainbow Tables kao eklektičnog živopisnog nameštaja, to nisu o kojima ćemo razgovarati. Rainbow Tables o kojima pričamo koriste se za pucanje lozinki i predstavljaju još jedan alat u sve većem arsenalu hakera .

Koji su ti džinovi Rainbow? Kako bi se nešto sa tako slatkim i mračnim imenom moglo tako štetiti?

Osnovni koncept iza Rainbow stolova

Ja sam loš momak koji je upravo priključio palc na server ili radnu stanicu, ponovo ga pokrenuo i pokrenuo program koji kopira datoteku sigurnosne baze podataka koja sadrži korisnička imena i lozinke na moj uređaj za paljenje.

Lozinke u datoteci su šifrovane tako da ih ne mogu čitati. Moraću da probam lozinke u datoteci (ili barem administratorsku lozinku), tako da ih mogu koristiti za pristup sistemu.

Koje su opcije za pucanje lozinki? Mogu pokušati da koristim program puknute lozinke brute-sile kao što je John the Ripper, koji se nalazi u datoteci lozinke, pokušavajući da iterativno pogodi svaku moguću kombinaciju lozinke. Druga opcija je učitavanje rječnika za pucanje lozinke koja sadrži stotine hiljada najčešće korišćenih lozinki i vidi da li dobija bilo kakve pogodke. Ove metode mogu trajati nedelje, meseci ili čak i godine ako su lozinke dovoljno jake.

Kada se lozinka "pokuša" protiv sistema, ona se "ished" koristeći šifrovanje tako da stvarna lozinka nikada ne bude poslata u jasan tekst preko linije veze. Ovo sprečava prisluškivanje prisluškivača lozinke. Haša lozinke obično izgleda kao gomila smeća i obično je druga dužina od originalne lozinke. Vaša lozinka može biti "shitzu", ali haša vaše lozinke izgleda nešto poput "7378347eedbfdd761619451949225ec1".

Da bi se verifikovao korisnik, sistem preuzima vrijednost hash-a stvorenu funkcijom hashing-a na klijentskom računaru i upoređuje ga vrijednošću hash-a sačuvane u tablici na serveru. Ako se haše poklapaju, onda je korisnik autentifikovan i odobren.

Hašenje lozinke je funkcija 1-način, što znači da ne možete dešifrirati heš da vidite šta je jasan tekst lozinke. Ne postoji ključ za dešifrovanje heš-a kada se kreira. Ako ne želite "prsten dekodera" ne postoji.

Programi pokvarenja lozinki rade na sličan način u procesu prijavljivanja. Program pokvarenja počinje uzimanjem lozinki sa čistim tekstom, pokrećući ih kroz algoritam heš, kao što je MD5, a zatim upoređuje hašni izlaz sa hašom u ukradenoj datoteki lozinke. Ako pronađe utakmicu onda je program probudio lozinku. Kao što smo već rekli, ovaj proces može potrajati veoma dugo.

Unesite Rainbow Tables

Rainbow Tables su uglavnom ogromni skupovi pretpostavljenih tablica popunjenih hešovitim vrijednostima koje se unapred podudaraju sa mogućim lozinkama čistog teksta. Rainbow Tables suštinski dozvoljavaju hakersima da preokrenu funkciju hashinga da bi se utvrdilo koja lozinka za običan tekst može biti. Moguće je da dvije različite lozinke rezultiraju istim hešom, tako da nije važno saznati koja je izvorna lozinka, samo dok ona ima isti heš. Lozinka sa čistim tekstom možda nije čak ista lozinka koju je kreirao korisnik, ali sve dok se haš odgovara, onda nije bitno šta je izvorna lozinka.

Upotreba Rainbow Tables omogućuje da se lozinki razbiju za vrlo kratko vreme u poređenju sa metodama brutalne sile, međutim, kompromis je da je potrebno mnogo prostora za skladištenje (ponekad Terabajtova) da drže tabelu Rainbow-a, Čuvanje ovih dana je obilno i jeftino, tako da ovaj obrt nije toliko veliki posao kao pre deset godina kada vožnje terabita nisu bile nešto što biste mogli da pokupite na lokalnom Best Buy-u.

Hakeri mogu kupiti prethodno izračunane Rainbow Tables za pucanje lozinki ranjivih operativnih sistema kao što su Windows XP, Vista, Windows 7 i aplikacije koje koriste MD5 i SHA1 kao mehanizam šifriranja lozinki (mnogi programeri web aplikacija i dalje koriste ove algoritme hašiša).

Kako se zaštititi protiv napada na lozinke zasnovane na Rainbow tabli

Voleo bih da je bolji savet za ovo za sve. Želeli bismo da kažemo da će vam jača lozinka pomoći, ali to zapravo nije tačno, jer to nije slabost lozinke koja je problem, već je slabost povezana sa funkcijom ishiranja koja se koristi za šifriranje lozinke.

Najbolji savet koji možemo da pružimo korisnicima je da se držite dalje od web aplikacija koje ograničavaju dužinu lozinke na kratak broj znakova. Ovo je jasan znak ranjivih rutina za potvrdu identiteta starih škola. Proširena dužina lozinke i složenost mogu malo pomoći, ali nije zagarantovan oblik zaštite. Što duže bude vaša lozinka, to bi trebalo da bude veći od Rainbow Tables-a, ali haker sa velikim brojem resursa to i dalje može postići.

Naš savet o tome kako se braniti protiv Rainbow Tables-a zaista je namenjen programerima aplikacija i sistemskim administratorima. Oni su na liniji fronta kada se radi o zaštiti korisnika od ove vrste napada.

Evo nekih saveta za programera o odbrani od napada Rainbow Table:

  1. Nemojte koristiti MD5 ili SHA1 u svojoj šifri šifre. MD5 i SHA1 su zastarjeli algoritmi hajhinga za lozinke i većina tablica duge koja se koristi za razbijanje lozinki su izgrađene da cilju aplikacije i sisteme koji koriste ove metode hašiša. Razmotrite korišćenje više modernih metoda hašiša kao što je SHA2.
  2. Koristite kriptografiju "Salt" u svojoj šifri rutini. Dodavanje kriptografske soli vašoj šifri šifriranja će pomoći odbrani od upotrebe Rainbow Tables-a koje se koriste za razbijanje lozinki u vašoj aplikaciji. Da biste videli neke primere kodiranja kako da koristite kriptografsku solju za pomoć "Rainbow-Proof" vašoj aplikaciji, molimo vas da pogledate sajt WebMasters By Design koji ima odličan članak o ovoj temi.

Ako želite da vidite kako hakeri vrše napad na lozinku koristeći Rainbow Tables, možete pročitati ovaj izvanredan članak o tome kako da koristite ove tehnike da biste povratili sopstvene lozinke.