ike-scan
Scanner et fingerprinter IKE/IPSec VPN. Découvre et identifie les hôtes IKE (Internet Key Exchange) utilisés dans les implémentations VPN IPSec, en identifiant le vendeur, le mode et les transforms supportés. IKE/IPSec VPN scanner and fingerprinter. Discovers and fingerprints IKE (Internet Key Exchange) hosts used in IPSec VPN implementations, identifying vendor, mode, and supported transforms.
↗ https://github.com/royhills/ike-scanOverview
ike-scan discovers IPSec VPN gateways and fingerprints them by analyzing IKE handshake responses. It identifies the VPN vendor, supported encryption algorithms, authentication methods, and whether aggressive mode is enabled — which can leak the preshared key hash.
Basic Usage
Scan a single host
ike-scan 10.10.10.1
Scan multiple hosts
ike-scan 10.10.10.1 10.10.10.2 192.168.1.1
Scan with aggressive mode (may reveal PSK hash)
ike-scan --aggressive -M 10.10.10.1
Show transform payloads
ike-scan -M 10.10.10.1
Discovery and Fingerprinting
Verbose output — full transform details
ike-scan -v 10.10.10.1
Identify VPN vendor from fingerprint
ike-scan --showbackoff --multiline 10.10.10.1
Test specific transforms
ike-scan --trans=5,2,1,2 10.10.10.1
→ (Enc=3DES, Hash=SHA1, Auth=PSK, DH=2)
ike-scan --trans=1,1,1,1 10.10.10.1 # DES, MD5, PSK, DH1
ike-scan --trans=5,2,1,2 10.10.10.1 # 3DES, SHA1, PSK, DH2
ike-scan --trans=7/256,2,1,2 10.10.10.1 # AES-256, SHA1, PSK, DH2
Aggressive Mode PSK Capture
Aggressive mode with ID — captures PSK hash
ike-scan --aggressive -M --id=vpn-user 10.10.10.1
# Try common group names
ike-scan --aggressive -M --id=vpn 10.10.10.1
ike-scan --aggressive -M --id=cisco 10.10.10.1
ike-scan --aggressive -M --id=default 10.10.10.1
The PSK hash from aggressive mode can be cracked with ikecrack or psk-crack
psk-crack -d /usr/share/wordlists/rockyou.txt ike-hash.txt
Subnet Scanning
# Scan a /24 for IKE hosts
for i in $(seq 1 254); do
ike-scan -q 10.10.10.$i &
done | grep "1 returned"
Better: use a file of targets
ike-scan -f targets.txt
Filter for hosts that respond
ike-scan 10.10.10.0/24 2>/dev/null | grep "1 returned handshake"
Options Reference
-M Multi-line output (show all transforms)
--aggressive Use IKE aggressive mode
--id=NAME Identity for aggressive mode
--trans=T Specify transform (enc,hash,auth,dh)
--showbackoff Show backoff fingerprinting
--sport=PORT Source port (default: 500)
--dport=PORT Destination port (default: 500)
-v Verbose
-f FILE Read targets from file
Tips
- If main mode returns nothing, try aggressive mode — some VPNs only support one
- Aggressive mode PSK hashes are crackable offline — very valuable finding
- Vendor fingerprinting helps identify exploitable VPN implementations (Cisco, Checkpoint, etc.)
- Port 500/UDP for IKEv1, 4500/UDP for NAT-T — scan both
- Failed transforms in main mode indicate the supported transform list
Help / Man page
ike-scan [options] host [host...]
-M Multi-line output
--aggressive Use aggressive mode
--id=ID IKE identity for aggressive mode
--trans=T Transform: enc,hash,auth,dh
--sport=N Source UDP port (default: 500)
--dport=N Destination UDP port (default: 500)
--showbackoff Fingerprint by backoff
-v Verbose
-d Debug
-f FILE Read hosts from file
Vue d’ensemble
ike-scan découvre les passerelles VPN IPSec et les identifie en analysant les réponses du handshake IKE. Il identifie le vendeur du VPN, les algorithmes de chiffrement supportés, les méthodes d’authentification, et si le mode agressif est activé (ce qui peut divulguer le hash de la clé pré-partagée).
Utilisation de base
# Scanner un seul hôte
ike-scan 10.10.10.1
# Scanner plusieurs hôtes
ike-scan 10.10.10.1 10.10.10.2 192.168.1.1
# Scanner en mode agressif (peut révéler le hash PSK)
ike-scan --aggressive -M 10.10.10.1
# Afficher les transform payloads
ike-scan -M 10.10.10.1
Découverte et fingerprinting
# Sortie verbeuse : détails complets des transforms
ike-scan -v 10.10.10.1
# Identifier le vendeur VPN à partir du fingerprint
ike-scan --showbackoff --multiline 10.10.10.1
# Tester des transforms spécifiques
ike-scan --trans=5,2,1,2 10.10.10.1
→ (Enc=3DES, Hash=SHA1, Auth=PSK, DH=2)
ike-scan --trans=1,1,1,1 10.10.10.1 # DES, MD5, PSK, DH1
ike-scan --trans=5,2,1,2 10.10.10.1 # 3DES, SHA1, PSK, DH2
ike-scan --trans=7/256,2,1,2 10.10.10.1 # AES-256, SHA1, PSK, DH2
Capture de PSK en mode agressif
# Mode agressif avec ID : capture le hash PSK
ike-scan --aggressive -M --id=vpn-user 10.10.10.1
# Essayer des noms de groupe courants
ike-scan --aggressive -M --id=vpn 10.10.10.1
ike-scan --aggressive -M --id=cisco 10.10.10.1
ike-scan --aggressive -M --id=default 10.10.10.1
# Le hash PSK issu du mode agressif peut être cassé avec ikecrack ou psk-crack
psk-crack -d /usr/share/wordlists/rockyou.txt ike-hash.txt
Scan de sous-réseau
# Scanner un /24 à la recherche d'hôtes IKE
for i in $(seq 1 254); do
ike-scan -q 10.10.10.$i &
done | grep "1 returned"
# Mieux : utiliser un fichier de cibles
ike-scan -f targets.txt
# Filtrer les hôtes qui répondent
ike-scan 10.10.10.0/24 2>/dev/null | grep "1 returned handshake"
Référence des options
-M Multi-line output (show all transforms)
--aggressive Use IKE aggressive mode
--id=NAME Identity for aggressive mode
--trans=T Specify transform (enc,hash,auth,dh)
--showbackoff Show backoff fingerprinting
--sport=PORT Source port (default: 500)
--dport=PORT Destination port (default: 500)
-v Verbose
-f FILE Read targets from file
Conseils
- Si le mode principal ne renvoie rien, essayer le mode agressif : certains VPN ne supportent qu’un seul mode
- Les hashs PSK du mode agressif sont cassables hors ligne : une découverte très précieuse
- Le fingerprinting du vendeur aide à identifier les implémentations VPN exploitables (Cisco, Checkpoint, etc.)
- Port 500/UDP pour IKEv1, 4500/UDP pour le NAT-T : scanner les deux
- Les transforms échoués en mode principal indiquent la liste des transforms supportés
Aide / Page de manuel
ike-scan [options] host [host...]
-M Multi-line output
--aggressive Use aggressive mode
--id=ID IKE identity for aggressive mode
--trans=T Transform: enc,hash,auth,dh
--sport=N Source UDP port (default: 500)
--dport=N Destination UDP port (default: 500)
--showbackoff Fingerprint by backoff
-v Verbose
-d Debug
-f FILE Read hosts from file