500/udp - Pentesting IPsec/IKE VPN
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
IPsec je široko prepoznat kao glavna tehnologija za obezbeđivanje komunikacija između mreža (LAN-to-LAN) i od udaljenih korisnika do mrežnog prolaza (udaljeni pristup), služeći kao osnovna infrastruktura za rešenja VPN za preduzeća.
Usmeravanje bezbednosne asocijacije (SA) između dva mesta upravlja IKE, koji funkcioniše pod okriljem ISAKMP, protokola dizajniranog za autentifikaciju i razmenu ključeva. Ovaj proces se odvija u nekoliko faza:
Faza 1: Stvara se siguran kanal između dva krajnja tačke. To se postiže korišćenjem Pre-Shared Ključa (PSK) ili sertifikata, koristeći ili glavni režim, koji uključuje tri para poruka, ili agresivni režim.
Faza 1.5: Iako nije obavezna, ova faza, poznata kao Faza proširene autentifikacije, verifikuje identitet korisnika koji pokušava da se poveže zahtevajući korisničko ime i lozinku.
Faza 2: Ova faza je posvećena pregovorima o parametrima za obezbeđivanje podataka sa ESP i AH. Omogućava korišćenje algoritama različitih od onih u Fazi 1 kako bi se osigurala Perfect Forward Secrecy (PFS), poboljšavajući bezbednost.
Podrazumevani port: 500/udp
IPSec konfiguracija može biti pripremljena da prihvati samo jednu ili nekoliko transformacija. Transformacija je kombinacija vrednosti. Svaka transformacija sadrži niz atributa kao što su DES ili 3DES kao algoritam enkripcije, SHA ili MD5 kao algoritam integriteta, pre-shared key kao tip autentifikacije, Diffie-Hellman 1 ili 2 kao algoritam distribucije ključeva i 28800 sekundi kao vreme trajanja.
Dakle, prva stvar koju treba da uradite je da pronađete validnu transformaciju, kako bi server mogao da komunicira sa vama. Da biste to uradili, možete koristiti alat ike-scan. Po defaultu, Ike-scan radi u glavnom režimu i šalje paket ka gateway-u sa ISAKMP header-om i jednim predlogom sa osam transformacija unutar njega.
U zavisnosti od odgovora, možete dobiti neke informacije o krajnjoj tački:
Kao što možete videti u prethodnom odgovoru, postoji polje pod nazivom AUTH sa vrednošću PSK. To znači da je VPN konfigurisan koristeći prethodno podeljeni ključ (i to je zaista dobro za pentestera). Vrednost poslednje linije je takođe veoma važna:
0 vraćen handshake; 0 vraćen notify: To znači da cilj nije IPsec gateway.
1 vraćen handshake; 0 vraćen notify: To znači da je cilj konfigurisan za IPsec i spreman je da izvrši IKE pregovaranje, i jedan ili više transformacija koje ste predložili su prihvatljive (važa transformacija će biti prikazana u izlazu).
0 vraćen handshake; 1 vraćen notify: VPN gateway-i odgovaraju sa notify porukom kada nijedna od transformacija nije prihvatljiva (iako neki gateway-i to ne rade, u tom slučaju treba pokušati dalju analizu i revidirani predlog).
Dakle, u ovom slučaju već imamo važeću transformaciju, ali ako ste u 3. slučaju, onda treba da brute-force-ujete malo da pronađete važeću transformaciju:
Prvo što treba da uradite je da kreirate sve moguće transformacije:
I zatim izvršite brute-force na svakom koristeći ike-scan (ovo može potrajati nekoliko minuta):
Ako brute-force nije uspeo, možda server odgovara bez rukovanja čak i na važeće transformacije. Tada možete pokušati isti brute-force, ali koristeći agresivni režim:
Nadamo se da će važeća transformacija biti vraćena. Možete pokušati istu napad koristeći iker.py. Takođe možete pokušati da brute force-ujete transformacije sa ikeforce:
U DH grupi: 14 = 2048-bit MODP i 15 = 3072-bit
2 = HMAC-SHA = SHA1 (u ovom slučaju). Format --trans
je $Enc,$Hash,$Auth,$DH
Cisco ukazuje da se izbegava korišćenje DH grupa 1 i 2 jer nisu dovoljno jake. Stručnjaci veruju da zemlje sa mnogo resursa lako mogu da provale enkripciju podataka koji koriste ove slabe grupe. To se radi korišćenjem posebne metode koja ih priprema da brzo razbiju kodove. Iako postavljanje ove metode košta mnogo novca, omogućava ovim moćnim zemljama da čitaju enkriptovane podatke u realnom vremenu ako koriste grupu koja nije jaka (kao što je 1,024-bit ili manja).
Zatim, možete koristiti ike-scan da pokušate da otkrijete dobavljača uređaja. Alat šalje inicijalni predlog i prestaje da ponavlja. Zatim će analizirati razliku u vremenu između primljenih poruka sa servera i odgovarajućeg obrasca odgovora, pentester može uspešno da identifikuje dobavljača VPN prolaza. Štaviše, neki VPN serveri će koristiti opcioni Vendor ID (VID) payload sa IKE.
Specifikujte važeću transformaciju ako je potrebno (koristeći --trans)
Ako IKE otkrije koji je dobavljač, odštampace to:
Ovo se takođe može postići sa nmap skriptom ike-version
Da biste bili u mogućnosti da uhvatite hash, potrebna vam je važeća transformacija koja podržava Agresivni režim i ispravan ID (ime grupe). Verovatno nećete znati važeće ime grupe, pa ćete morati da ga brute-forcujete. Da biste to uradili, preporučujem vam 2 metode:
Prvo pokušajte da pošaljete zahtev sa lažnim ID-jem pokušavajući da prikupite hash ("-P"):
Ako nema hash-a, onda verovatno ova metoda brute-forcing-a će raditi. Ako se neki hash vrati, to znači da će lažni hash biti poslat za lažni ID, tako da ova metoda neće biti pouzdana za brute-force ID. Na primer, lažni hash bi mogao biti vraćen (to se dešava u modernim verzijama):
Ali ako, kao što sam rekao, nema hash-a, onda bi trebalo da pokušate da brute-force-ujete uobičajena imena grupa koristeći ike-scan.
Ovaj skript će pokušati da brute-force-uje moguće ID-e i vratiće ID-e gde je vraćen validan handshake (to će biti validno ime grupe).
Ako ste otkrili specifičnu transformaciju, dodajte je u ike-scan komandu. A ako ste otkrili nekoliko transformacija, slobodno dodajte novu petlju da ih sve isprobate (trebalo bi da ih isprobate sve dok jedna od njih ne radi ispravno).
Možete koristiti rečnik ikeforce ili onaj u seclists sa uobičajenim imenima grupa da ih brute-force-ujete:
Or use this dict (is a combination of the other 2 dicts without repetitions):
iker.py takođe koristi ike-scan za bruteforce mogućih imena grupa. Prati svoju metodu da pronađe važeći ID na osnovu izlaza ike-scan.
ikeforce.py je alat koji se može koristiti za bruteforce ID-eva takođe. Ovaj alat će pokušati da iskoristi različite ranjivosti koje bi mogle biti korišćene da razlikuju važeći i nevažeći ID (mogu imati lažne pozitivne i lažne negativne rezultate, zato preferiram da koristim metodu ike-scan ako je moguće).
Podrazumevano ikeforce će na početku poslati neke nasumične id-ove da proveri ponašanje servera i odredi taktiku koja će se koristiti.
Prva metoda je da se bruteforce imena grupa tako što se traži informacija Dead Peer Detection DPD Cisco sistema (ove informacije server ponovo šalje samo ako je ime grupe tačno).
Druga metoda koja je dostupna je da proverava broj odgovora poslatih na svaki pokušaj jer se ponekad šalje više paketa kada se koristi tačan id.
Treća metoda se sastoji u traženju "INVALID-ID-INFORMATION" kao odgovor na neispravan ID.
Na kraju, ako server ne odgovara na provere, ikeforce će pokušati da bruteforce-uje server i proveri da li kada se pošalje tačan id server odgovara nekim paketom. Očigledno, cilj bruteforce-a id-a je da se dobije PSK kada imate važeći id. Zatim, sa id i PSK moraćete da bruteforce-ujete XAUTH (ako je omogućen).
Ako ste otkrili specifičnu transformaciju, dodajte je u ikeforce komandu. A ako ste otkrili nekoliko transformacija, slobodno dodajte novu petlju da ih sve isprobate (trebalo bi da ih isprobate sve dok jedna od njih ne funkcioniše ispravno).
(From the book Network Security Assessment: Know Your Network): Takođe je moguće dobiti važeće korisničke nazive presretanjem veze između VPN klijenta i servera, jer je prvi paket agresivnog moda koji sadrži ID klijenta poslat u čistom obliku.
Na kraju, ako ste pronašli važeću transformaciju i ime grupe i ako je agresivni mod dozvoljen, onda možete vrlo lako uhvatiti hash koji se može probiti:
Hash će biti sačuvan unutar hash.txt.
Možete koristiti psk-crack, john (koristeći ikescan2john.py) i hashcat da crack-ujete hash:
Agresivni način IKE u kombinaciji sa Pre-Shared Key (PSK) se često koristi za grupnu autentifikaciju. Ova metoda je pojačana sa XAuth (Proširena autentifikacija), koja služi da uvede dodatni sloj autentifikacije korisnika. Takva autentifikacija obično koristi usluge kao što su Microsoft Active Directory, RADIUS, ili slični sistemi.
Prelazak na IKEv2 donosi značajnu promenu gde se EAP (Proširivi protokol autentifikacije) koristi umesto XAuth za autentifikaciju korisnika. Ova promena naglašava evoluciju u praksama autentifikacije unutar sigurnih komunikacionih protokola.
Tako možete uhvatiti podatke o prijavljivanju koristeći fiked i videti da li postoji neki podrazumevani korisnički naziv (Morate preusmeriti IKE saobraćaj na fiked
za snimanje, što se može uraditi uz pomoć ARP spoofinga, više informacija). Fiked će delovati kao VPN krajnja tačka i uhvatiće XAuth kredencijale:
Takođe, koristeći IPSec pokušajte da izvršite MitM napad i blokirate sav saobraćaj ka portu 500, ako IPSec tunel ne može da se uspostavi, možda će saobraćaj biti poslat u čistom obliku.
Da biste brute-forcovali XAUTH (kada znate važeće ime grupe id i psk) možete koristiti korisničko ime ili listu korisničkih imena i listu lozinki:
Na ovaj način, ikeforce će pokušati da se poveže koristeći svaku kombinaciju korisničkog imena:lozinke.
Ako ste pronašli jednu ili više validnih transformacija, jednostavno ih koristite kao u prethodnim koracima.
U Kali, VPNC se koristi za uspostavljanje IPsec tunela. Profili moraju biti smešteni u direktorijumu /etc/vpnc/
. Možete pokrenuti ove profile koristeći komandu vpnc.
Sledeće komande i konfiguracije ilustruju proces postavljanja VPN veze sa VPNC:
U ovoj konfiguraciji:
Zamenite [VPN_GATEWAY_IP]
sa stvarnom IP adresom VPN prolaza.
Zamenite [VPN_CONNECTION_ID]
sa identifikatorom za VPN vezu.
Zamenite [VPN_GROUP_SECRET]
sa grupnom tajnom VPN-a.
Zamenite [VPN_USERNAME]
i [VPN_PASSWORD]
sa autentifikacionim podacima za VPN.
[PID]
simbolizuje ID procesa koji će biti dodeljen kada vpnc
inicira.
Osigurajte da se koriste stvarne, sigurne vrednosti za zamenu mesta kada konfigurišete VPN.
Network Security Assessment 3rd Edition
port:500 IKE
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)