FakeIKEd, or fiked for short, is a fake IKE daemon supporting just enough of the standards and Cisco extensions to attack commonly found insecure Cisco PSK+XAUTH VPN setups in what could be described as a semi MitM attack. Fiked can impersonate a VPN gateway’s IKE responder in order to capture XAUTH login credentials; it doesn’t currently do the client part of full MitM.
Fiked is partially based on vpnc and uses libgcrypt and optionally libnet.
Fiked supports IKEv1 in aggressive mode, using pre-shared keys and XAUTH. Supported algorithms are DES, 3DES, AES-128, AES-192, AES-256; MD5, SHA1; and DH groups 1, 2 and 5. IKE main mode is not supported.
The Attack
Basically, if you know the pre-shared key, also known as shared secret or group password, you can play Man in the Middle, impersonate the VPN gateway in IKE phase 1, and learn XAUTH user credentials in phase 2.
This attack is not new. It has been known for a long time that IKE using PSK with XAUTH is insecure, and this is not the first actual implementation of the attack.
To successfully demonstrate an attack on a VPN site, you need to know the shared secret, and you must be able to intercept the IKE traffic between the clients and the VPN gateway.
There are several ways to find out the shared secret, including being a legitimate user, grabbing it from some Cisco config file, using ike-crack, or layer 8 hackery.
There are also several ways to redirect the IKE traffic to your running fiked instance, including ARP spoofing, 802.11 hostap, or layer 1 hackery.
Usage
1 2 3 4 5 6 7 8 9 10 11 12 |
Usage: fiked [-rdqhV] -g gw -k id:psk [-k ..] [-u user] [-l file] [-L file] -r use raw socket: forge ip src addr to match <gateway> (disables -u) -d detach from tty and run as a daemon (implies -q) -q be quiet, don't write anything to stdout -h print help and exit -V print version and exit -g gw VPN gateway address to impersonate -k i:k pre-shared key aka. group password, shared secret, prefixed with its group/key id (first -k sets default) -u user drop privileges; setuid() to unprivileged user -l file append results to credential log file -L file verbous logging to file instead of stdout |
See the README file and fiked(1) manpage for more details.
Fiked builds and runs on FreeBSD, OpenBSD and Linux, and probably other BSD variants too. MacOS X is reported not to work.
You can download FakeIKEd here:
Or read more here.
Jeff Price says
Now this is cool. Good Job.