ike-scan:发现并指纹识别 IKE 主机(IPsec VPN 服务器)!全参数详细教程!Kali Linux教程!黑客教程!
简介
ike-scan 发现 IKE 主机,还可以使用重传退避模式对它们进行指纹识别。
ike-scan 执行两项操作:
1) 发现:确定哪些主机正在运行 IKE。这是通过显示响应 ike-scan 发送的 IKE 请求的主机来完成的。
2) 指纹识别:确定主机正在使用哪种 IKE 实现。有几种方法可以做到这一点:(a) 退避指纹识别 - 记录来自目标主机的 IKE 响应数据包的时间,并将观察到的重传退避模式与已知模式进行比较;(b) 供应商 ID 指纹识别 - 将特定于供应商的供应商 ID 与已知供应商 ID 模式进行匹配;(c) 专有通知消息代码。
重传退避指纹识别概念在 UDP 退避指纹识别论文中有更详细的讨论,该论文应包含在 ike-scan 工具包中,文件为 udp-backoff-fingerprinting-pa‐ per.txt。
该程序将 IKE 阶段 1 请求发送到指定主机并显示收到的任何响应。它使用退避处理重试和重新传输以应对数据包丢失。它还限制了出站 IKE 数据包使用的带宽量。
IKE 是 Internet 密钥交换协议,是 IPsec 使用的密钥交换和身份验证机制。几乎所有现代 VPN 系统都实现了 IPsec,绝大多数 IPsec VPN 使用 IKE 进行密钥交换。
阶段 1 有两种模式:主模式和积极模式。ike-scan 支持主模式和积极模式,默认情况下使用主模式。
RFC 2409 (IKE) 第 5 节规定必须实现主模式,因此所有 IKE 实现都应该支持主模式。
可以将目标主机指定为 IP 地址或主机名。您还可以将目标指定为 IPnetwork/bits(例如 192.168.1.0/24)以指定给定网络中的所有主机(包括网络和广播地址),或 IPstart-IPend(例如 192.168.1.3-192.168.1.27)以指定包含范围内的所有主机,或 IPnetwork:NetMask(例如 192.168.1.0:255.255.255.0)以指定给定网络和掩码中的所有主机。
安装
源码安装
通过以下命令克隆源码。建议请先挂好代理进行克隆项目。
git clone https://github.com/royhills/ike-scan.git
进入目录并查看。
cd ike-scan/
ls
生成可行的./configure文件
autoreconf --install
生成 Makefile
./configure
使用 make 进行编译
make
验证一切都按预期工作
make check
安装
sudo make install
输入以下命令,如果出现这个界面就说明安装成功了。
ike-scan -h
APT包管理器安装
Kali Linux 默认已经安装好 ike-scan 工具了。也可以通过以下命令进行安装
sudo apt install ike-scan
使用
1. --help 或 -h
显示此使用信息并退出。
ike-scan -h
2. 常规使用
语法:ike-scan [options] [hosts...]
ike-scan 192.168.174.132
3. --file= 或 -f
从指定文件读取主机名或地址,而不是从命令行读取。每行一个名称或 IP 地址。使用“-”表示标准输入。
ike-scan --file hosts.txt
4. --sport=
或 -s
将 UDP 源端口设置为
,默认值为 500,0=随机。
某些 IKE 实现要求客户端使用 UDP 源端口 500,并且不会与其他端口通信。
请注意,通常需要超级用户权限才能使用 1024 以下的非零源端口。此外,系统上只有一个进程可以一次绑定到给定的源端口。使用 --nat-t 选项会将默认源端口更改为 4500
ike-scan --file hosts.txt -s 500
5. --dport=
或 -d
将 UDP 目标端口设置为
,默认值为 500。 UDP 端口 500 是为 ISAKMP 分配的端口号,这是大多数(如果不是全部)IKE 实现使用的端口。使用 --nat-t 选项可将默认目标端口更改为 4500
ike-scan --file hosts.txt -d 500
6. --retry= 或 -r
将每个主机的总尝试次数设置为
ike-scan --file hosts.txt --retry 5
7. --timeout= 或 -t
将每个主机的初始超时设置为
ike-scan --file hosts.txt --timeout 600
8. --bandwidth= 或 -B
将所需的出站带宽设置为
ike-scan --file hosts.txt --bandwidth 56000
9. --interval= 或 -i
将最小数据包间隔设置为
ike-scan --file hosts.txt --interval 10
10. --backoff= 或 -b
将超时退避因子设置为 ,默认值为 1.50。每次超时后,每个主机的超时都会乘以此因子。
因此,如果重试次数为 3,初始每个主机超时为 500 毫秒,退避因子为 1.5,则第一次超时将为 500 毫秒,第二次超时为 750 毫秒,第三次超时为 1125 毫秒。
ike-scan --file hosts.txt --backoff 1.50
11. --verbose 或 -v
显示详细进度消息。
使用多次可获得更好的效果:
1 - 显示每次扫描完成的时间以及收到包含无效 cookie 的数据包的时间。
2 - 显示发送和接收的每个数据包以及主机从列表中删除的时间。
3 - 在扫描开始前显示主机、供应商 ID 和退避列表。
ike-scan --file hosts.txt --verbose
12. --quiet 或 -q
不解码返回的数据包。这样会打印较少的协议信息,因此输出行会更短。
ike-scan --file hosts.txt --verbose -q
13. --multiline 或 -M
将有效载荷解码拆分为多行。使用此选项,每个有效载荷的解码都会打印在以 TAB 开头的单独行上。此选项使输出更易于阅读,尤其是在存在许多有效载荷的情况下。
ike-scan --file hosts.txt --verbose --multiline
14. --lifetime= 或 -l <s>
将 IKE 生存期设置为 秒,默认值为 28800。
RFC 2407 指定 28800 作为默认值,但某些实现可能需要不同的值。
如果您将其指定为十进制整数,例如 86400,则该属性将使用 4 字节值。
如果您将其指定为十六进制数,例如 0xFF,则该属性将使用适当的大小值(此示例中为一个字节)。
如果您指定字符串“none”,则根本不会添加任何生存期属性。
您可以将此选项与 --trans 选项结合使用多次,以生成具有不同生命周期的多个转换负载。每个 --trans 选项都将使用先前指定的生命周期值。
ike-scan --file hosts.txt --verbose --lifetime 28800
15. --lifesize= 或 -z
将 IKE 生存期设置为 千字节,默认值为 0。如果您将其指定为十进制整数,例如 86400,则属性将使用 4 字节值。如果您将其指定为十六进制数,例如 0xFF,则属性将使用适当的大小值(此示例中为一个字节)。您可以将此选项与 --trans 选项结合使用多次,以生成具有不同生命大小的多个转换负载。每个 --trans 选项都将使用先前指定的生命大小值。
ike-scan --file hosts.txt --verbose --lifesize 100
16. --auth= 或 -m
将身份验证方法设置为
ike-scan --file hosts.txt --verbose --auth 2
17. --version 或 -V
显示程序版本并退出。
ike-scan -V
18. --vendor= 或 -e
将供应商 ID 字符串设置为十六进制值
ike-scan --file hosts.txt --verbose --vendor 39
19. --trans= 或 -a
使用自定义转换
Hash=MD5、Auth=RSA sig、DH Group=5。对于旧方法,transform
其中,enc 是加密算法,len 是可变长度密码的密钥长度,hash 是哈希算法,group 是 DH 组。例如,--trans=5,2,1,2 指定 Enc=3DES-CBC、Hash=SHA1、Auth=shared key、DH Group=2;
--trans=7/256,1,1,5 指定 Enc=AES-256、Hash=MD5、Auth=shared key、DH Group=5。IKEv2 尚不支持此选项。
ike-scan --file hosts.txt --verbose --trans="(1=1,2=2,3=3,4=4)"
20. --showbackoff[=] 或 -o[]
显示退避指纹表。显示退避表以对远程主机上的 IKE 实现进行指纹识别。可选参数指定在收到最后一个数据包后等待的时间(以秒为单位),默认值为 60。如果您使用选项的缩写形式 (-o),则该值必须紧跟选项字母,且不带空格,例如 -o25 而不是 -o 25。
ike-scan --file hosts.txt --verbose -o60
21. --fuzz= 或 -u
将模式匹配模糊设置为
ike-scan --file hosts.txt --verbose --fuzz=500
22. --patterns= 或 -p
使用 IKE 退避模式文件
ike-scan --verbose -o60 -p /usr/local/share/ike-scan/ike-backoff-patterns 192.168.174.132
23. --vidpatterns= 或 -I
使用供应商 ID 模式文件
ike-scan --verbose --vidpatterns /usr/local/share/ike-scan/ike-vendor-ids 192.168.174.132
24. --aggressive 或 -A
使用 IKE 积极模式(默认为主模式)
如果指定 --aggressive,则还可以指定 --dhgroup、--id 和 --idtype。如果使用带有 --trans 选项的积极模式的自定义转换,请注意所有转换都应具有相同的 DH 组,并且这应与 --dhgroup 指定的组匹配,或者如果未使用 --dhgroup,则与默认值匹配。
ike-scan --file hosts.txt --verbose --aggressive
25. --id= 或 -n
使用
ike-scan --file hosts.txt --verbose --id=0xdeadbeef
26. --idtype= 或 -y
使用标识类型
ike-scan --file=hosts.txt --verbose --idtype=3
27. --dhgroup= 或 -g
使用 Diffie Hellman 组
ike-scan --file=hosts.txt --verbose --dhgroup=2
28. --gssid= 或 -G
使用 GSS ID
ike-scan --file=hosts.txt --verbose --gssid=39
29. --random 或 -R
随机化主机列表。此选项将随机化主机列表中主机的顺序,因此 IKE 探测将以随机顺序发送到主机。它使用 Knuth 洗牌算法。
ike-scan --file=hosts.txt --verbose --random
30. --tcp[=] 或 -T[]
使用 TCP 传输而不是 UDP。这允许您测试运行 IKE over TCP 的主机。您通常不需要此选项,因为绝大多数 IPsec 系统仅支持 IKE over UDP。可选值
1 = Checkpoint 使用的 RAW IKE over TCP(默认);
2 = Cisco 使用的封装 IKE over TCP。
如果您使用选项的缩写形式 (-T),则该值必须紧跟选项字母且不带空格,例如 -T2 而不是 -T 2。
如果使用此选项,您只能指定单个目标主机。
ike-scan --verbose -T2 192.168.174.132
31. --tcptimeout= 或 -O
将 TCP 连接超时设置为
ike-scan --file=hosts.txt --verbose --tcptimeout=10
32. --pskcrack[=] 或 -P[]
破解激进模式预共享密钥。此选项输出激进模式预共享密钥 (PSK) 参数,以便使用 ike-scan 提供的“psk-crack”程序进行离线破解。您可以选择指定文件名
将 PSK 参数写入其中。如果您不指定文件名,则 PSK 参数将写入标准输出。如果您使用选项的缩写形式 (-P),则值必须紧跟选项字母,且不带空格,例如 -Pfile 而不是 -P file。如果使用此选项,您只能指定单个目标主机。此选项仅适用于 IKE 激进模式。
ike-scan --verbose --pskcrack 192.168.174.132
33. --nodns 或 -N
不使用 DNS 解析名称。如果使用此选项,
则所有主机都必须指定为 IP 地址。
ike-scan --file=hosts.txt --verbose --nodns
34. --noncelen= 或 -c
将 nonce 长度设置为
ike-scan --file=hosts.txt --verbose --noncelen=20
35. --headerlen= 或 -L
将 ISAKMP 标头的长度设置为
将标头长度更改为不正确的值有时会中断 VPN 服务器。
ike-scan --file=hosts.txt --verbose --headerlen=8
36. --mbz= 或 -Z
使用值
指定此选项会使传出数据包不符合 RFC 标准,并且仅应在您想要查看 VPN 服务器如何响应无效数据包时使用。
ike-scan --file=hosts.txt --verbose --mbz=128
37. --headerver= 或 -E
指定 ISAKMP 标头版本。默认值为 0x10 (16),对应于 v1.0。指定非默认值将使传出数据包不符合 RFC,并且仅应在您想要查看 VPN 服务器如何对奇怪版本做出反应时使用。该值应在 0-255 范围内。
ike-scan --file=hosts.txt --verbose --headerver=255
38. --certreq= 或 -C
添加证书请求负载
ike-scan --file=hosts.txt --verbose --certreq=59
39. --doi= 或 -D
将 SA DOI 设置为
ike-scan --file=hosts.txt --verbose --doi=1
40. --situation= 或 -S
将 SA 情况设置为
ike-scan --file=hosts.txt --verbose --situation=1
41. --protocol=
或 -j
将提议协议 ID 设置为
,默认为 1。提议协议 ID 的含义取决于 DOI,并在相应的 DOI 文档中详细说明。对于 IPsec DOI,默认提议协议 ID 1 代表 PROTO_ISAKMP。通常,您不会想要更改此设置,除非您想查看 VPN 服务器如何响应非标准协议 ID。
ike-scan --file=hosts.txt --verbose --protocol=1
42. --transid= 或 -k
将转换 ID 设置为
ike-scan --file=hosts.txt --verbose --transid=1
43. --spisize=
将提议 SPI 大小设置为
ike-scan --file=hosts.txt --verbose --spisize=0
44. --hdrflags=
将 ISAKMP 标头标志设置为
ike-scan --file=hosts.txt --verbose --hdrflags=0
45. --hdrmsgid=
将 ISAKMP 标头消息 ID 设置为
ike-scan --file=hosts.txt --verbose --hdrmsgid=0
46. --cookie=
将 ISAKMP 发起方 cookie 设置为
ike-scan --verbose --cookie=64 192.168.174.132
47. --exchange=
将交换类型设置为
请注意,ike-scan 仅支持主模式和积极模式(分别为值 2 和 4)。指定其他值将更改 ISAKMP 标头中的交换类型值,但不会调整其他有效载荷。交换类型在 RFC 2408 第 3.1 节中定义。
ike-scan --file=hosts.txt --verbose --exchange=2
48. --nextpayload=
将 ISAKMP 标头中的下一个有效载荷设置为
ike-scan --file=hosts.txt --verbose --nextpayload=64
49. --randomseed=
使用
ike-scan --file=hosts.txt --verbose --randomseed=128
50. --timestamp
显示已接收数据包的时间戳。此选项将导致显示每个已接收数据包的时间戳。
ike-scan --file=hosts.txt --verbose --timestamp
51. --sourceip=
将传出数据包的源 IP 地址设置为 。此选项将导致传出的 IKE 数据包具有指定的源 IP 地址。该地址可以是点分四路格式的 IP 地址,也可以是字符串“random”,它将对发送的每个数据包使用不同的随机源地址。如果使用此选项,则不会收到任何数据包。此选项需要原始套接字支持,并且您需要超级用户权限才能使用此选项,即使您指定了高源端口。此选项不适用于所有操作系统。
ike-scan --file=hosts.txt --verbose --sourceip=192.168.174.132
52. --bindip=
设置要绑定到的 IP 地址。
此选项使传出的 IKE 数据包源自 ,并且此地址还将用于接收来自目标的响应。
ike-scan --verbose --bindip=192.168.174.145 192.168.174.132
53. --shownum
显示已接收数据包的主机号。这将在 IP 地址之前显示响应主机的序数主机号。当向同一目标 IP 发送许多数据包时,它可以很有用,以查看是否有任何探测被忽略。
ike-scan --file=hosts.txt --verbose --shownum
54. --nat-t
使用 RFC 3947 NAT-Traversal 封装。此选项将非 ESP 标记添加到传出数据包的开头,并将其从接收的数据包中删除,如 RFC 3947 中所述。它还将默认源端口更改为 4500,将默认目标端口更改为 4500,这些是 NAT-T IKE 的端口。这些端口号可以使用 --sport 和 --dport 选项更改,前提是它们在 --nat-t 选项之后使用。
ike-scan --file=hosts.txt --verbose --nat-t
55. --rcookie=
将 ISAKMP 响应者 cookie 设置为
ike-scan --file=hosts.txt --verbose --rcookie=89
56. --ikev2 或 -2
使用 IKE 版本 2 这会导致传出数据包使用 RFC 4306 中定义的 IKEv2 格式,而不是默认的 IKEv1 格式。无论是否使用此选项,任何返回的数据包都会根据其有效负载自动解码为 IKE 或 IKEv2。--ikev2 选项目前处于实验阶段。它尚未经过广泛测试,并且仅支持发送默认提议。
ike-scan --file=hosts.txt --verbose --ikev2
文件
/usr/local/share/ike-scan/ike-backoff-patterns
UDP 退避模式列表。指定 --showbackoff 选项时使用。
/usr/local/share/ike-scan/ike-vendor-ids
已知供应商 ID 模式列表。
psk-crack
该程序可以破解基于 MD5 或 SHA1 的哈希值。哈希值的类型由哈希值的长度自动确定(MD5 为 16 个字节,SHA1 为 20 个字节)。
psk-crack 还可以破解 Nortel Contivity / VPN 路由器系统使用的专有哈希格式。破解 Nortel 格式哈希时,
您需要使用 --norteluser (-u) 选项指定要破解的哈希的用户名。破解 Nortel 格式哈希时,您一次只能破解一个哈希。
默认情况下,psk-crack 将使用默认字典执行字典破解。可以使用 --dictionary (-d) 选项更改字典,或者可以使用 --bruteforce (-B) 选项选择暴力破解。
psk-crack 尝试破解 IKE 激进模式预共享密钥,这些密钥之前已使用带有 --pskcrack 选项的 ike-scan 收集。
psk-crack 可以以两种不同的模式运行:
1) 字典破解模式:这是默认模式,其中 psk-crack 依次尝试字典文件中的每个候选单词,直到找到匹配项,或者字典中的所有单词都已尝试。
2) 暴力破解模式:在此模式下,psk-crack 尝试指定字符集的所有可能组合,直到给定长度。
1. --help 或 -h
显示此使用信息并退出。
psk-crack -h
2. --version 或 -V
显示程序版本并退出。
psk-crack -V
3. --verbose 或 -v
显示详细进度消息。使用多次可增加详细程度。
psk-crack -v psk-parameters.txt
4. --dictionary= 或 -d
将字典文件设置为
psk-crack -d /usr/share/ike-scan/psk-crack-dictionary psk-parameters.txt
5. --norteluser= 或 -u
指定用于 Nortel Contivity PSK 破解的用户名。
在 Nortel Contivity / VPN 路由器系统上破解预共享密钥时需要此选项。这些系统使用专有方法计算包含用户名哈希的哈希。
此选项仅在破解 Nortel 格式哈希时才需要,不应用于标准格式哈希。
使用此选项时,psk 参数文件中的所有 PSK 条目都假定为使用提供的用户名的 Nortel 格式。目前无法在一次 psk-crack 运行中破解 Nortel 和标准格式 PSK 条目的混合,或具有不同用户名的 Nortel 条目。
psk-crack --norteluser=admin psk-parameters.txt
6. --bruteforce= 或 -B
选择暴力破解最多
psk-crack --bruteforce=8 psk-parameters.txt
7. --charset= 或 -c
将暴力破解字符集设置为 默认为“0123456789abcdefghijklmnopqrstuvwxyz”
psk-crack --charset=0123456789abcdefghijklmnopqrstuvwxyz psk-parameters.txt
总结
ike-scan 是一款强大的 IKE 协议扫描工具,可用于识别 VPN 设备、枚举 IKE 配置并进行 PSK 破解。通过合理配置和使用该工具,安全研究人员可以有效评估 IPsec VPN 的安全性,并发现潜在的漏洞与配置问题。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。