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-scan

Overview

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