简介
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=<fn> 或 -f <fn>
从指定文件读取主机名或地址,而不是从命令行读取。每行一个名称或 IP 地址。使用“-”表示标准输入。
ike-scan --file hosts.txt
4. --sport=<p> 或 -s <p>
将 UDP 源端口设置为 <p>,默认值为 500,0=随机。
某些 IKE 实现要求客户端使用 UDP 源端口 500,并且不会与其他端口通信。
请注意,通常需要超级用户权限才能使用 1024 以下的非零源端口。此外,系统上只有一个进程可以一次绑定到给定的源端口。使用 --nat-t 选项会将默认源端口更改为 4500
ike-scan --file hosts.txt -s 500
5. --dport=<p> 或 -d <p>
将 UDP 目标端口设置为 <p>,默认值为 500。 UDP 端口 500 是为 ISAKMP 分配的端口号,这是大多数(如果不是全部)IKE 实现使用的端口。使用 --nat-t 选项可将默认目标端口更改为 4500
ike-scan --file hosts.txt -d 500
6. --retry=<n> 或 -r <n>
将每个主机的总尝试次数设置为 <n>,默认值为 3。
ike-scan --file hosts.txt --retry 5
7. --timeout=<n> 或 -t <n>
将每个主机的初始超时设置为 <n> 毫秒,默认值为 500。此超时适用于发送到每个主机的第一个数据包。后续超时将乘以使用 --backoff 设置的退避因子。
ike-scan --file hosts.txt --timeout 600
8. --bandwidth=<n> 或 -B <n>
将所需的出站带宽设置为 <n>,默认值为 56000 默认情况下,该值以比特/秒为单位。如果在值后附加“K”,则单位为千比特/秒;如果在值后附加“M”,则单位为兆比特/秒。“K”和“M”后缀表示十进制,而不是二进制,倍数。因此 64K 是 64000,而不是 65536。
ike-scan --file hosts.txt --bandwidth 56000
9. --interval=<n> 或 -i <n>
将最小数据包间隔设置为 <n> 毫秒。数据包间隔不会小于此数字。默认情况下,指定的间隔以毫秒为单位。如果在值后附加“u”,则间隔以微秒为单位,如果附加“s”,则间隔以秒为单位。如果您想要使用给定的带宽,则更简单的方法是使用 --bandwidth 选项。您不能同时指定 --interval 和 --bandwidth,因为它们只是更改相同基础变量的不同方式。
ike-scan --file hosts.txt --interval 10
10. --backoff=<b> 或 -b <b>
将超时退避因子设置为 <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=<s> 或 -l <s>
将 IKE 生存期设置为 <s> 秒,默认值为 28800。
RFC 2407 指定 28800 作为默认值,但某些实现可能需要不同的值。
如果您将其指定为十进制整数,例如 86400,则该属性将使用 4 字节值。
如果您将其指定为十六进制数,例如 0xFF,则该属性将使用适当的大小值(此示例中为一个字节)。
如果您指定字符串“none”,则根本不会添加任何生存期属性。
您可以将此选项与 --trans 选项结合使用多次,以生成具有不同生命周期的多个转换负载。每个 --trans 选项都将使用先前指定的生命周期值。
ike-scan --file hosts.txt --verbose --lifetime 28800
15. --lifesize=<s> 或 -z <s>
将 IKE 生存期设置为 <s> 千字节,默认值为 0。如果您将其指定为十进制整数,例如 86400,则属性将使用 4 字节值。如果您将其指定为十六进制数,例如 0xFF,则属性将使用适当的大小值(此示例中为一个字节)。您可以将此选项与 --trans 选项结合使用多次,以生成具有不同生命大小的多个转换负载。每个 --trans 选项都将使用先前指定的生命大小值。
ike-scan --file hosts.txt --verbose --lifesize 100
16. --auth=<n> 或 -m <n>
将身份验证方法设置为 <n>,默认值为 1 (PSK)。RFC 定义的值为 1 到 5。请参阅 RFC 2409 附录 A。检查点混合模式为 64221。GSS(Windows“Kerberos”)为 65001。XAUTH 使用 65001 到 65010。这不适用于 IKEv2。
ike-scan --file hosts.txt --verbose --auth 2
17. --version 或 -V
显示程序版本并退出。
ike-scan -V
18. --vendor=<v> 或 -e <v>
将供应商 ID 字符串设置为十六进制值 <v>。您可以多次使用此选项来发送多个供应商 ID 有效负载。
ike-scan --file hosts.txt --verbose --vendor 39
19. --trans=<t> 或 -a <t>
使用自定义转换 <t> 而不是默认设置。您可以多次使用此选项来发送任意数量的自定义转换。有两种方法可以指定转换:新方法,指定属性/值对;旧方法,指定固定属性列表的值。对于新方法,转换 <t> 指定为 (attr=value, attr=value, ...),其中“attr”是属性编号,“value”是分配给该属性的值。您可以指定任意数量的属性/值对。有关属性和值的详细信息,请参阅 RFC 2409 附录 A。请注意,括号对于某些 shell 来说是特殊的,因此您可能需要将它们括起来,例如 --trans="(1=1,2=2,3=3,4=4)"。例如,--trans=(1=1,2=2,3=1,4=2) 指定 Enc=3DES-CBC、Hash=SHA1、Auth=shared key、DH Group=2;--trans=(1=7,14=128,2=1,3=3,4=5) 指定 Enc=AES/128、
Hash=MD5、Auth=RSA sig、DH Group=5。对于旧方法,transform <t> 指定为 enc[/len],hash,auth,group。
其中,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[=<n>] 或 -o[<n>]
显示退避指纹表。显示退避表以对远程主机上的 IKE 实现进行指纹识别。可选参数指定在收到最后一个数据包后等待的时间(以秒为单位),默认值为 60。如果您使用选项的缩写形式 (-o),则该值必须紧跟选项字母,且不带空格,例如 -o25 而不是 -o 25。
ike-scan --file hosts.txt --verbose -o60
21. --fuzz=<n> 或 -u <n>
将模式匹配模糊设置为 <n> 毫秒,默认值为 500。这将设置观察到的退避时间与退避模式文件中的参考时间之间的最大可接受差异。较大的值允许更高的方差,但也会增加误报的风险。模式文件中的任何每个模式条目模糊测试规范都将覆盖此处设置的值。
ike-scan --file hosts.txt --verbose --fuzz=500
22. --patterns=<f> 或 -p <f>
使用 IKE 退避模式文件 <f>,默认值为 /usr/local/share/ike-scan/ike-backoff-patterns。这指定了包含 IKE 退避模式的文件的名称。此文件仅在指定 --showbackoff 时使用。
ike-scan --verbose -o60 -p /usr/local/share/ike-scan/ike-backoff-patterns 192.168.174.132
23. --vidpatterns=<f> 或 -I <f>
使用供应商 ID 模式文件 <f>,默认值为 /usr/local/share/ike-scan/ike-vendor-ids。这指定了包含供应商 ID 模式的文件的名称。这些模式用于供应商 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=<id> 或 -n <id>
使用 <id> 作为标识值。此选项仅适用于激进模式。<id> 可以指定为字符串,例如 --id=test 或以“0x”开头的十六进制值,例如 --id=0xdeadbeef。
ike-scan --file hosts.txt --verbose --id=0xdeadbeef
26. --idtype=<n> 或 -y <n>
使用标识类型 <n>。默认值为 3 (ID_USER_FQDN)。此选项仅适用于激进模式。有关标识类型的详细信息,请参阅 RFC 2407 4.6.2。
ike-scan --file=hosts.txt --verbose --idtype=3
27. --dhgroup=<n> 或 -g <n>
使用 Diffie Hellman 组 <n>。默认值为 2。此选项仅适用于积极模式和 IKEv2。对于这两种模式,它用于确定密钥交换有效负载的大小。如果您将积极模式与自定义转换结合使用,则通常需要使用 --dhgroup 选项,除非您使用的是默认 DH 组。可接受的值是 1、2、5、14、15、16、17、18(仅限 MODP)19、20、21。
ike-scan --file=hosts.txt --verbose --dhgroup=2
28. --gssid=<n> 或 -G <n>
使用 GSS ID <n>,其中 <n> 是十六进制字符串。这将使用 draft-ietf-ipsec-isakmp-gss-auth-07.txt 中指定的转换属性类型 16384,尽管已观察到 Windows-2000 也使用 32001。对于 Windows 2000,您需要使用 --auth=65001 来指定 Kerberos (GSS) 身份验证。
ike-scan --file=hosts.txt --verbose --gssid=39
29. --random 或 -R
随机化主机列表。此选项将随机化主机列表中主机的顺序,因此 IKE 探测将以随机顺序发送到主机。它使用 Knuth 洗牌算法。
ike-scan --file=hosts.txt --verbose --random
30. --tcp[=<n>] 或 -T[<n>]
使用 TCP 传输而不是 UDP。这允许您测试运行 IKE over TCP 的主机。您通常不需要此选项,因为绝大多数 IPsec 系统仅支持 IKE over UDP。可选值 <n> 指定 IKE over TCP 的类型。目前有两个可能的值:
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=<n> 或 -O <n>
将 TCP 连接超时设置为 <n> 秒(默认值 = 10)。这仅适用于 TCP 传输模式。
ike-scan --file=hosts.txt --verbose --tcptimeout=10
32. --pskcrack[=<f>] 或 -P[<f>]
破解激进模式预共享密钥。此选项输出激进模式预共享密钥 (PSK) 参数,以便使用 ike-scan 提供的“psk-crack”程序进行离线破解。您可以选择指定文件名 <f>,
将 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=<n> 或 -c <n>
将 nonce 长度设置为 <n> 字节。默认值 = 20 此选项控制在激进模式或 IKEv2 请求中发送的 nonce 有效负载的长度。通常无需使用此选项,除非您想减小 nonce 大小以加快预共享密钥破解速度,或者想查看特定服务器如何处理不同长度的 nonce 有效负载。RFC 2409 规定 nonce 有效负载的长度必须介于 8 到 256 字节之间,但 ike-scan 不强制执行此。指定较大的 nonce 长度将增加 ike-scan 发送的数据包的大小。非常大的 nonce 长度可能导致碎片化,或超过最大 IP 数据包大小。此选项仅适用于 IKE 激进模式。
ike-scan --file=hosts.txt --verbose --noncelen=20
35. --headerlen=<n> 或 -L <n>
将 ISAKMP 标头的长度设置为 <n> 字节。您可以使用此选项手动指定用于 ISAKMP 标头长度的值。默认情况下,ike-scan 将填写正确的值。使用此选项手动指定不正确的长度。<n> 可以指定为“+n”,将长度设置为比应有的长度多 n 个字节,“-n”将其设置为少 n 个字节,或“n”将其设置为正好是字节。
将标头长度更改为不正确的值有时会中断 VPN 服务器。
ike-scan --file=hosts.txt --verbose --headerlen=8
36. --mbz=<n> 或 -Z <n>
使用值 <n> 作为保留 (MBZ) 字段,默认值为 0。
指定此选项会使传出数据包不符合 RFC 标准,并且仅应在您想要查看 VPN 服务器如何响应无效数据包时使用。 <n> 的值应在 0-255 范围内。
ike-scan --file=hosts.txt --verbose --mbz=128
37. --headerver=<n> 或 -E <n>
指定 ISAKMP 标头版本。默认值为 0x10 (16),对应于 v1.0。指定非默认值将使传出数据包不符合 RFC,并且仅应在您想要查看 VPN 服务器如何对奇怪版本做出反应时使用。该值应在 0-255 范围内。
ike-scan --file=hosts.txt --verbose --headerver=255
38. --certreq=<c> 或 -C <c>
添加证书请求负载 <c>。<c> 应指定为十六进制值。十六进制值的第一个字节将被解释为证书类型;其余字节为证书颁发机构,如 RFC 2408 3.10 中所述。证书类型在 RFC 2408 第 3.9 节中列出。 RFC 2048 规定“证书请求有效负载必须在交换期间的任何时候被接受”
ike-scan --file=hosts.txt --verbose --certreq=59
39. --doi=<d> 或 -D <d>
将 SA DOI 设置为 <d>,默认值为 1 (IPsec)。通常情况下,除非您想查看 VPN 服务器如何响应非标准 DOI,否则您不会想要更改此设置。
ike-scan --file=hosts.txt --verbose --doi=1
40. --situation=<s> 或 -S <s>
将 SA 情况设置为 <d>,默认值为 1。情况的含义取决于 DOI,并在相应的 DOI 文档中详细说明。对于 IPsec DOI,默认情况 1 代表 SIT_IDENTITY_ONLY。通常情况下,除非您想查看 VPN 服务器如何响应非标准情况,否则您不会想要更改此设置。
ike-scan --file=hosts.txt --verbose --situation=1
41. --protocol=<p> 或 -j <p>
将提议协议 ID 设置为 <p>,默认为 1。提议协议 ID 的含义取决于 DOI,并在相应的 DOI 文档中详细说明。对于 IPsec DOI,默认提议协议 ID 1 代表 PROTO_ISAKMP。通常,您不会想要更改此设置,除非您想查看 VPN 服务器如何响应非标准协议 ID。
ike-scan --file=hosts.txt --verbose --protocol=1
42. --transid=<t> 或 -k <t>
将转换 ID 设置为 <t>,默认值为 1。转换 ID 的含义取决于 DOI,并在相应的 DOI 文档中详细说明。对于 IPsec DOI,默认转换 ID 1 表示 KEY_IKE。除非您想查看 VPN 服务器如何响应非标准转换 ID,否则您通常不会想要更改此设置。
ike-scan --file=hosts.txt --verbose --transid=1
43. --spisize=<n>
将提议 SPI 大小设置为 <n>。默认值为 0,如果非零,则将向提议有效负载添加指定大小的随机 SPI。默认值为零表示没有 SPI。
ike-scan --file=hosts.txt --verbose --spisize=0
44. --hdrflags=<n>
将 ISAKMP 标头标志设置为 <n>。默认值 = 0 标志的详细说明见 RFC 2408 第 3.1 节
ike-scan --file=hosts.txt --verbose --hdrflags=0
45. --hdrmsgid=<n>
将 ISAKMP 标头消息 ID 设置为 <n>。默认值 = 0 对于 IKE 阶段 1,此 ID 应为零。
ike-scan --file=hosts.txt --verbose --hdrmsgid=0
46. --cookie=<n>
将 ISAKMP 发起方 cookie 设置为 <n> cookie 值应以十六进制指定。默认情况下,cookie 是自动生成的,并且具有唯一值。如果指定此选项,则只能指定单个目标,因为 ike-scan 需要唯一的 cookie 值来匹配响应数据包。
ike-scan --verbose --cookie=64 192.168.174.132
47. --exchange=<n>
将交换类型设置为 <n> 此选项允许您将 ISAKMP 标头中的交换类型更改为任意值。
请注意,ike-scan 仅支持主模式和积极模式(分别为值 2 和 4)。指定其他值将更改 ISAKMP 标头中的交换类型值,但不会调整其他有效载荷。交换类型在 RFC 2408 第 3.1 节中定义。
ike-scan --file=hosts.txt --verbose --exchange=2
48. --nextpayload=<n>
将 ISAKMP 标头中的下一个有效载荷设置为 <n>。通常,下一个有效载荷会自动设置为正确的值。
ike-scan --file=hosts.txt --verbose --nextpayload=64
49. --randomseed=<n>
使用 <n> 为伪随机数生成器设定种子。此选项使用指定的数字为 PRNG 设定种子,如果您想要确保数据包数据在包含具有随机数据(例如密钥交换或随机数)的有效载荷时完全可重复,则此选项非常有用。默认情况下,PRNG 的种子是不可预测的值。
ike-scan --file=hosts.txt --verbose --randomseed=128
50. --timestamp
显示已接收数据包的时间戳。此选项将导致显示每个已接收数据包的时间戳。
ike-scan --file=hosts.txt --verbose --timestamp
51. --sourceip=<s>
将传出数据包的源 IP 地址设置为 <s>。此选项将导致传出的 IKE 数据包具有指定的源 IP 地址。该地址可以是点分四路格式的 IP 地址,也可以是字符串“random”,它将对发送的每个数据包使用不同的随机源地址。如果使用此选项,则不会收到任何数据包。此选项需要原始套接字支持,并且您需要超级用户权限才能使用此选项,即使您指定了高源端口。此选项不适用于所有操作系统。
ike-scan --file=hosts.txt --verbose --sourceip=192.168.174.132
52. --bindip=<s>
设置要绑定到的 IP 地址。
此选项使传出的 IKE 数据包源自 <s>,并且此地址还将用于接收来自目标的响应。
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=<n>
将 ISAKMP 响应者 cookie 设置为 <n>。这会将响应者 cookie 设置为指定的十六进制值。默认情况下,响应者 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
<psk-parameters-file> 是一个文件,其中包含预共享密钥破解过程的参数,格式由 ike-scan 使用 --pskcrack (-P) 选项生成。此文件可以包含一个或多个条目。对于多个条目,每个条目必须位于单独的行上。
该程序可以破解基于 MD5 或 SHA1 的哈希值。哈希值的类型由哈希值的长度自动确定(MD5 为 16 个字节,SHA1 为 20 个字节)。<psk-parameters-file> 中的每个条目都单独处理,因此可以破解 MD5 和 SHA1 哈希值的混合。
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=<f> 或 -d <f>
将字典文件设置为 <f>。默认值为 /usr/local/share/ike-scan/psk-crack-dictionary。
psk-crack -d /usr/share/ike-scan/psk-crack-dictionary psk-parameters.txt
5. --norteluser=<u> 或 -u <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=<n> 或 -B <n>
选择暴力破解最多 <n> 个字符。
psk-crack --bruteforce=8 psk-parameters.txt
7. --charset=<s> 或 -c <s>
将暴力破解字符集设置为 <s> 默认为“0123456789abcdefghijklmnopqrstuvwxyz”
psk-crack --charset=0123456789abcdefghijklmnopqrstuvwxyz psk-parameters.txt
总结
ike-scan 是一款强大的 IKE 协议扫描工具,可用于识别 VPN 设备、枚举 IKE 配置并进行 PSK 破解。通过合理配置和使用该工具,安全研究人员可以有效评估 IPsec VPN 的安全性,并发现潜在的漏洞与配置问题。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。