iker is a Python tool to analyse the security of the key exchange phase in IPsec based VPNs.
Key features
- Discover VPN services running
- Fingerprint based on vendor IDs (VID)
- Guess implementation basing on responses analysis (backoff)
- Enumerate supported transforms in Main Mode
- Check for Aggressive Mode
- Enumerate supported transforms in this Aggressive Mode
- Enumerate valid client/group IDs in Aggressive Mode
- Allow for rate limiting
- Analyse results to list actual issues
- Export results in 2 different formats
- Load IPs from command line or text files
- Determine support for IKEv2
Overview
iker scans and analyses the Internet Key Exchange (IKE) protocol, identifying common misconfigurations in VPN concentrators. It is based on ike-scan.
It discovers and try to fingerprint the VPNs in a first step. Later, it tries to enumerates valid transforms in Main Mode and in Aggressive Mode if it is supported. Finally, it will try to enumerate group IDs if a dictionary was provided.
iker implements two ways of enumerating valid group IDs:
- Cisco IPSec VPN Implementation Group Name Enumeration Vulnerability
- Responses analysis
Once all the tests have been launched, iker analyses the results and generates a report with the issues found.
Requirements
In addition, the following Python packages are used (they usually are included with normal Python installations):
- subprocess
- argparse
Installation
Download iker from the link below and uncompress it.
Usage
$ sudo python iker.py -h
iker v. 1.0
The ike-scan based script which checks for security flaws in IPsec-based VPNs.
by Julio Gomez ( jgo@portcullis-security.com )
usage: iker.py [-h] [-v] [-d DELAY] [-i INPUT] [-o OUTPUT] [-x XML]
[--encalgs ENCALGS] [--hashalgs HASHALGS]
[--authmethods AUTHMETHODS] [--dhgroups DHGROUPS] [--fullalgs]
[--ikepath IKEPATH] [-c CLIENTIDS]
[target]
positional arguments:
target The IP address or the network (CIDR notation) to scan.
optional arguments:
-h, --help show this help message and exit
-v, --verbose Be verbose.
-d DELAY, --delay DELAY
Delay between requests (in milliseconds). Default: 0
(No delay).
-i INPUT, --input INPUT
An input file with an IP address/network per line.
-o OUTPUT, --output OUTPUT
An output file to store the results.
-x XML, --xml XML An output file to store the results in XML format.
Default: output.xml
--encalgs ENCALGS The encryption algorithms to check. Default: DES,
3DES, AES/128, AES/192 and AES/256. Example:
--encalgs="1 5 7/128 7/192 7/256"
--hashalgs HASHALGS The hash algorithms to check. Default: MD5 and SHA1.
Example: --hashalgs="1 2"
--authmethods AUTHMETHODS
The authorization methods to check. Default: Pre-
Shared Key, RSA Signatures, Hybrid Mode and XAUTH.
Example: --authmethods="1 3 64221 65001"
--dhgroups DHGROUPS The Diffie-Hellman groups to check. Default: MODP 768,
MODP 1024 and MODP 1536. Example: --dhgroups="1 2 5"
--fullalgs Equivalent to: --encalgs="1 2 3 4 5 6 7/128 7/192
7/256 8" --hashalgs="1 2 3 4 5 6" --authmethods="1 2 3
4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003
65004 65005 65006 65007 65008 65009 65010"
--dhgroups="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18"
--ikepath IKEPATH The FULL ike-scan path if it is not in the PATH
variable and/or the name changed.
-c CLIENTIDS, --clientids CLIENTIDS
A file (dictionary) with a client ID per line to
enumerate valid client IDs in Aggressive Mode.
Default: unset - This test is not launched by default.
Examples
Loading the hosts/ranges to scan from a text file and saving the results into a text and an XML file:
$ sudo python iker.py -i ips.txt -o output.txt -x output.xml -v
iker v. 1.0
The ike-scan based script which checks for security flaws in IPsec-based VPNs.
by Julio Gomez ( jgo@portcullis-security.com )
Starting iker (https://labs.portcullis.co.uk/tools/) at Mon, 20 Jan 2014 14:34:15 +0000
[*] Discovering IKE services, please wait...
10.0.0.2 Notify message 14 (NO-PROPOSAL-CHOSEN)
HDR=(CKY-R=0000000000000000, msgid=f904f872)
[*] Trying to fingerprint the devices. This proccess is going to take a while (1-5 minutes per IP). Be patient...
[*] The device 10.0.0.2 could not been fingerprinted because no transform is known.
[*] Looking for accepted transforms at 10.0.0.2
[*] Transform found: Enc=3DES Hash=MD5 Auth=RSA_Sig Group=2:modp1024 LifeType=Seconds LifeDuration(4)=0x00007080
[*] Vendor ID identified for IP 10.0.0.2 with transform Enc=3DES Hash=MD5 Auth=RSA_Sig Group=2:modp1024 LifeType=Seconds LifeDuration(4)=0x00007080: Firewall-1 NGX
[*] Trying to fingerprint the devices (again). This proccess is going to take a while (1-5 minutes per IP). Be patient...
[*] Implementation guessed for IP 10.0.0.2: Firewall-1 4.1/NG/NGX
...
Specifying the encryption algorithms to check for supported transforms:
$ sudo python iker.py --encalgs "1 2 3 4 5 6 7/128 7/192 7/256 8" 10.0.2.2 [...]
Specifying that all the encryption algorithms, the hashing algorithms, the authentication methods and the DH groups must be checked:
$ sudo python iker.py --fullalgs 10.0.2.2 [...]



