Password spraying — što je i zašto radi
Password spraying je online napad: napadač ima poznatu lozinku, ali ne zna koji korisnik je koristi. Ista lozinka se isprobava protiv više korisnika — polako, redom — da se izbjegne account lockout.
Tipovi napada na lozinke — usporedba
Online vs offline napad
- Online: radi s živim autentifikacijskim sustavom — ograničen brzinom i lockoutom, 1-2 pokušaja/sekundi
- Offline: direktan napad na ukradene hasheve — nema lockout, milijarde pokušaja/sekundi
- Password spraying je uvijek online napad
- Dictionary i brute force su offline napadi (JtR radi na hashevima)
Scenarij iz laba
- Cilj: SMB share
//10.1.16.2/HRna MS10 mkdir /mnt/HR— mount point za sharecat users.txt— pregled poznatih korisnika- Poznate lozinke:
abc123,123456,Pa$$w0rd - Ručni pokušaj:
mount //10.1.16.2/HR /mnt/HR -o username=pat
Hydra — automatiziran spraying
Kreiranje liste lozinki
echo abc123 > pass.txt— kreira datoteku (zamjenjuje)echo 123456 >> pass.txt— dodaje (>> = append, ne zamjena!)echo 'Pa$$w0rd' >> pass.txt— jednostruki navodnici zbog $ znaka!cat pass.txt— provjeri sadržaj
hydra-wizard parametri
- Service: smb
- Target: 10.1.16.2
- Username: users.txt
- Password: pass.txt
- Rezultat: jaime i admin koriste Pa$$w0rd
Verifikacija: mount //10.1.16.2/HR /mnt/HR -o username=jaime → Pa$$w0rd
'Pa$$w0rd' s jednostrukim navodnicima pri echo naredbi — bez toga, ljuska interpretira $ kao varijablu i password se ne upiše ispravno. Bez ispravno upisane lozinke, hydra napad neće uspjeti.
John the Ripper — dictionary napad
Dictionary attack je offline napad — radi na ukradenim hashevima bez kontakta s autentifikacijskim sustavom. JtR hashira svaku lozinku iz liste i uspoređuje s ciljanim hashem. Ako nema exact match u rječniku — lozinka ostaje necrackana.
Naredbe
cat ms10-hashes.txt— pregled hasheva (RID 500 = admin, RID 501 = Guest)ls -lSr /usr/share/seclists/Passwords— lista rječnika (sort po veličini)john --format=NT --wordlist=/usr/share/seclists/Passwords/xato-net-10-million-passwords.txt ms10-hashes.txt- Rezultat: 12 lozinki crackano za nekoliko sekundi
Prikaz rezultata
john --show --format=NT ms10-hashes.txt— prikaz crackanih (lozinka između username i RID)john --show=left --format=NT ms10-hashes.txt— prikaz NECRACKANIHjohn --show --format=NT ms10-hashes.txt > dict-cracked.txt— spremiless dict-cracked.txt— pregled (SPACE=sljedeća, b=natrag, q=izlaz)
Napomena: --show i --show=left mogu se razlikovati u broju — blank lozinke se računaju kao 2 uspjeha kod --show ali samo 1 kod --show=left.
John the Ripper — brute force napad
Brute force testira sve moguće kombinacije znakova. JtR naziva ovaj mode incremental. Defaultni charset: 95 printabilnih ASCII znakova (pozicije 32-127). Max duljina: 13 znakova.
Naredbe
rm ~/.john/john.pot— briši povijest crackanog (čisti slate za novi test)john --format=NT --incremental ms10-hashes.txt— brute force- SPACE — status (postotak, ETA, pokušaji/s)
john --format=NT --incremental --max-length=6 ...— ograniči na max 6 znakovajohn --format=NT --incremental --max-length=7 ...— max 7: ETA je tjedni unaprijed- max-length=8+: JtR ne izračunava ETA (godinama)
JtR incremental modovi
- ASCII — 95 printabilnih znakova (default)
- Alnum — 62 alfanumerička znaka
- Alpha — 52 slova
- LowerNum — mala slova + brojevi (36)
- UpperNum — velika slova + brojevi (36)
- Digits — samo znamenke
Svaki dodatan znak množi prostor sa 95 → eksponencijalni rast trajanja.
Active Directory password policy
Stare vrijednosti (prije laba)
- LockoutThreshold: 0 (nema lockout!)
- MinPasswordLength: 7
- MaxPasswordAge: 42 dana
- LockoutDuration: 00:15:00
- ComplexityEnabled: True
- MinPasswordAge: 3 dana
Nove vrijednosti (preporučene po NIST SP 800-63B)
- LockoutThreshold: 3 (zaključaj nakon 3 pokušaja)
- LockoutDuration: 00:15:00
- MinPasswordLength: 12
- MaxPasswordAge: 365 dana
- MinPasswordAge: 3 dana
- LockoutObservationWindow: 00:15:00
PowerShell naredbe za promjenu politike
Import-Module ActiveDirectoryGet-ADDefaultDomainPasswordPolicySet-ADDefaultDomainPasswordPolicy -Identity structureality -LockoutThreshold 3Set-ADDefaultDomainPasswordPolicy -Identity structureality -MaxPasswordAge 365.00:00:00Set-ADDefaultDomainPasswordPolicy -Identity structureality -MinPasswordLength 12
Format vremena: D:H:M:S.F (Days:Hours:Minutes:Seconds.Fractions). Npr. 3 dana = 3.00:00:00.
Prisilna promjena svih lozinki: Get-ADUser -Filter * | Set-ADUser -ChangePasswordAtLogon $True
- Password spraying = 1 lozinka, mnogi korisnici → izbjegava account lockout (online napad)
- Dictionary attack i brute force = offline napadi na hasheve (nema lockout, milijarde/s)
- Dictionary attack može pronaći lozinku SAMO ako je u rječniku (exact match)
- JtR brute force mode =
--incremental(95 ASCII znakova po defaultu) --show=leftprikazuje NECRACKANE (ostale);--showprikazuje crackane- MinPasswordLength je najvažniji parametar — svaki dodatan znak = ×95 više vremena za brute force
- NIST SP 800-63B — referentni dokument za preporuke password politike
>= zamjena datoteke;>>= dodavanje na kraj (append)
Kviz — 15 pitanja
1. Zašto password spraying napad pokušava samo 1-2 lozinke po korisničkom računu, pa prelazi na sljedeći?
2. Koji alat se koristio za automatiziran password spraying napad na SMB share u labu?
3. Hydra password spraying napad otkrio je koji par korisnika koristi Pa$$w0rd?
4. Zašto se koriste jednostruki navodnici pri echo 'Pa$$w0rd' >> pass.txt?
5. Dictionary napad s John the Riperom cracka 12 NTLM hasheva za nekoliko sekundi. Zašto je napad tako brz?
6. Koji John the Ripper parametar specificira format hasha za Windows NTLM lozinke?
7. U čemu je temeljna razlika između dictionary attacka i brute force attacka?
8. Koliko printabilnih ASCII znakova koristi John the Ripper u incremental (brute force) modu po defaultu?
9. Što JtR naredba rm ~/.john/john.pot radi i zašto se koristi u labu?
10. Koja John the Ripper naredba prikazuje lozinke koje JOŠ NISU crackane?
11. Koji PowerShell cmdlet prikazuje trenutnu password politiku Active Directory domene?
12. Koji parametar AD password politike ima NAJVEĆI utjecaj na otpornost lozinke prema brute force napadu?
13. Nakon promjene MinPasswordLength na 12 u AD politici — što se događa s postojećim lozinkama koje imaju manje od 12 znakova?
14. Originalna AD politika u labu imala je LockoutThreshold = 0. Što to znači u praksi?
15. Koji od sljedećih faktora povećavaju otpornost lozinke prema brute force napadu? (Odaberi 2)