<summary><strong>Impara l'hacking AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
**IPsec** è ampiamente riconosciuto come la tecnologia principale per garantire la sicurezza delle comunicazioni tra reti (LAN-to-LAN) e dagli utenti remoti al gateway di rete (accesso remoto), fungendo da base per le soluzioni VPN aziendali.
L'instaurazione di un'**associazione di sicurezza (SA)** tra due punti è gestita da **IKE**, che opera sotto l'egida di ISAKMP, un protocollo progettato per l'autenticazione e lo scambio di chiavi. Questo processo si svolge in diverse fasi:
- **Fase 1:** Viene creato un canale sicuro tra due endpoint. Ciò viene realizzato tramite l'uso di una chiave pre-condivisa (PSK) o certificati, impiegando il main mode, che coinvolge tre coppie di messaggi, o la **modalità aggressiva**.
- **Fase 1.5:** Anche se non obbligatoria, questa fase, nota come Fase di Autenticazione Estesa, verifica l'identità dell'utente che cerca di connettersi richiedendo un nome utente e una password.
- **Fase 2:** Questa fase è dedicata alla negoziazione dei parametri per la sicurezza dei dati con **ESP** e **AH**. Consente l'uso di algoritmi diversi da quelli della Fase 1 per garantire la **Perfect Forward Secrecy (PFS)**, migliorando la sicurezza.
La configurazione IPSec può essere preparata solo per accettare una o poche trasformazioni. Una trasformazione è una combinazione di valori. **Ogni trasformazione** contiene un numero di attributi come DES o 3DES come algoritmo di **crittografia**, SHA o MD5 come algoritmo di **integrità**, una chiave pre-condivisa come tipo di **autenticazione**, Diffie-Hellman 1 o 2 come algoritmo di **distribuzione delle chiavi** e 28800 secondi come **durata**.
Quindi, la prima cosa che devi fare è **trovare una trasformazione valida**, in modo che il server possa comunicare con te. Per farlo, puoi utilizzare lo strumento **ike-scan**. Di default, Ike-scan funziona in modalità principale e invia un pacchetto al gateway con un'intestazione ISAKMP e una singola proposta con **otto trasformazioni al suo interno**.
Come puoi vedere nella risposta precedente, c'è un campo chiamato **AUTH** con il valore **PSK**. Ciò significa che la vpn è configurata utilizzando una chiave precondivisa (e questo è davvero buono per un pentester).\
* _0 handshake restituito; 0 notifica restituita:_ Questo significa che il target **non è un gateway IPsec**.
* _**1 handshake restituito; 0 notifica restituita:**_ Questo significa che il **target è configurato per IPsec ed è disposto a eseguire la negoziazione IKE, e uno o più dei trasformazioni che hai proposto sono accettabili** (una trasformazione valida verrà mostrata nell'output).
* _0 handshake restituito; 1 notifica restituita:_ I gateway VPN rispondono con un messaggio di notifica quando **nessuna delle trasformazioni è accettabile** (anche se alcuni gateway non lo fanno, in tal caso è necessario provare un'analisi ulteriore e una proposta rivista).
Quindi, in questo caso abbiamo già una trasformazione valida, ma se ti trovi nel terzo caso, allora è necessario **forzare un po' per trovare una trasformazione valida:**
Se il brute-force non ha funzionato, forse il server sta rispondendo senza handshake anche alle trasformazioni valide. Quindi, potresti provare lo stesso brute-force ma utilizzando la modalità aggressiva:
Cisco indica di evitare l'uso dei gruppi DH 1 e 2 perché non sono abbastanza robusti. Gli esperti ritengono che **paesi con moltissime risorse possono facilmente decifrare** i dati che utilizzano questi gruppi deboli. Ciò avviene utilizzando un metodo speciale che li prepara a decifrare rapidamente i codici. Anche se costa molto denaro configurare questo metodo, consente a questi potenti paesi di leggere i dati crittografati in tempo reale se utilizzano un gruppo non robusto (come 1.024 bit o inferiore).
Successivamente, è possibile utilizzare ike-scan per cercare di **scoprire il produttore** del dispositivo. Lo strumento invia una proposta iniziale e smette di ripetere. Successivamente, **analizzerà** la **differenza di tempo** tra i **messaggi** ricevuti dal server e il modello di risposta corrispondente, consentendo al pentester di identificare con successo il produttore del gateway VPN. Inoltre, alcuni server VPN utilizzeranno il payload opzionale **Vendor ID (VID) con IKE**.
Per poter acquisire l'hash è necessario disporre di una trasformazione valida che supporti la modalità Aggressiva e l'ID corretto (nome del gruppo). Probabilmente non si conoscerà il nome del gruppo valido, quindi sarà necessario forzarlo.\
Se **nessun hash viene restituito**, probabilmente questo metodo di forza bruta funzionerà. **Se viene restituito qualche hash, significa che verrà inviato un hash falso per un ID falso, quindi questo metodo non sarà affidabile** per forzare l'ID. Ad esempio, potrebbe essere restituito un hash falso (questo accade nelle versioni moderne):
Questo script **proverà a forzare possibili ID** e restituirà gli ID in cui viene restituito un handshake valido (questo sarà un nome di gruppo valido).
Se hai scoperto una trasformazione specifica, aggiungila al comando ike-scan. E se hai scoperto diverse trasformazioni, sentiti libero di aggiungere un nuovo ciclo per provarle tutte (dovresti provarle tutte finché una di esse funziona correttamente).
Puoi utilizzare il [dizionario di ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) o [quello in seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) di nomi di gruppi comuni per forzarli:
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) utilizza anche **ike-scan** per forzare possibili nomi di gruppo. Segue il proprio metodo per **trovare un ID valido basato sull'output di ike-scan**.
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) è uno strumento che può essere utilizzato anche per **forzare gli ID**. Questo strumento cercherà di **sfruttare diverse vulnerabilità** che potrebbero essere utilizzate per **distinguere tra un ID valido e non valido** (potrebbero esserci falsi positivi e falsi negativi, ecco perché preferisco utilizzare il metodo ike-scan se possibile).
Per impostazione predefinita, **ikeforce** invierà all'inizio alcuni ID casuali per verificare il comportamento del server e determinare la tattica da utilizzare.
* Il **primo metodo** consiste nel forzare i nomi dei gruppi **ricercando** le informazioni **Dead Peer Detection DPD** dei sistemi Cisco (queste informazioni vengono riprodotte solo dal server se il nome del gruppo è corretto).
* Il **secondo metodo** disponibile è **controllare il numero di risposte inviate per ogni tentativo** perché a volte vengono inviati più pacchetti quando viene utilizzato l'ID corretto.
* Infine, se il server non risponde a nulla ai controlli, **ikeforce** cercherà di forzare il server e verificare se quando viene inviato l'ID corretto il server risponde con qualche pacchetto.\
Ovviamente, l'obiettivo di forzare l'ID è ottenere il **PSK** quando si dispone di un ID valido. Quindi, con **ID** e **PSK** dovrai forzare anche l'XAUTH (se abilitato).
Se hai scoperto una trasformazione specifica, aggiungila al comando ikeforce. E se hai scoperto diverse trasformazioni, sentiti libero di aggiungere un nuovo ciclo per provarle tutte (dovresti provarle tutte fino a quando una di esse funziona correttamente).
(Dal libro **Valutazione della sicurezza di rete: Conosci la tua rete**): È anche possibile ottenere nomi utente validi sniffando la connessione tra il client VPN e il server, poiché il primo pacchetto della modalità aggressiva contenente l'ID del client viene inviato in chiaro
Infine, se hai trovato una **trasformazione valida** e il **nome del gruppo** e se la **modalità aggressiva è consentita**, allora puoi facilmente acquisire l'hash craccabile:
**La modalità IKE aggressiva** combinata con una **Chiave Pre-Condivisa (PSK)** è comunemente impiegata per scopi di **autenticazione di gruppo**. Questo metodo è potenziato da **XAuth (Autenticazione Estesa)**, che serve a introdurre uno strato aggiuntivo di **autenticazione dell'utente**. Tale autenticazione di solito sfrutta servizi come **Microsoft Active Directory**, **RADIUS**, o sistemi comparabili.
Passando a **IKEv2**, si osserva un cambiamento significativo in cui **EAP (Protocollo di Autenticazione Estensibile)** viene utilizzato al posto di **XAuth** allo scopo di autenticare gli utenti. Questo cambiamento sottolinea un'evoluzione nelle pratiche di autenticazione all'interno dei protocolli di comunicazione sicuri.
In questo modo è possibile catturare i dati del login utilizzando _fiked_ e verificare se ci sono nomi utente predefiniti (È necessario reindirizzare il traffico IKE a `fiked` per lo sniffing, che può essere fatto con l'aiuto del ARP spoofing, [ulteriori informazioni](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked agirà come un endpoint VPN e catturerà le credenziali XAuth:
Inoltre, utilizzando IPSec, prova a effettuare un attacco MitM e blocca tutto il traffico alla porta 500. Se il tunnel IPSec non può essere stabilito, è possibile che il traffico venga inviato in chiaro.
Per forzare **XAUTH** (quando si conosce un nome di gruppo valido **id** e il **psk**), è possibile utilizzare un nome utente o un elenco di nomi utente e un elenco di password:
In Kali, **VPNC** è utilizzato per stabilire tunnel IPsec. I **profili** devono essere situati nella directory `/etc/vpnc/`. È possibile avviare questi profili utilizzando il comando _**vpnc**_.
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**