Wireshark WPA 4向握手


13

从此Wiki页面

WPA和WPA2使用从EAPOL握手派生的密钥来加密流量。除非您要解密的会话存在所有四个握手数据包,否则Wireshark将无法解密流量。您可以使用显示过滤器eapol在捕获中定位EAPOL数据包。

我注意到解密也适用于(1、2、4),但不适用于(1、2、3)。据我所知,前两个数据包就足够了,至少对于单播流量而言。有人可以解释一下Wireshark的处理方式吗,换句话说,鉴于第四个数据包只是一个确认,为什么只使用前一个序列?另外,是否可以保证(1、2、3、4)工作时(1、2、4)总是工作?

测试用例

这是压缩的握手(1、2、4)和一个加密的ARP数据包(SSID :SSID,密码:)password,其base64编码为:

H4sICEarjU8AA2hhbmRzaGFrZS5jYXAAu3J400ImBhYGGPj / n4GhHkhfXNHr37KQgWEqAwQzMAgx
6HkAKbFWzgUMhxgZGDiYrjIwKGUqcW5g4Ldd3rcFQn5IXbWKGaiso4 + RmSH + H0MngwLUZMarj4Rn
S8vInf5yfO7mgrMyr9g / Jpa9XVbRdaxH58v1fO3vDCQDkCNv7mFgWMsAwXBHMoEceQ3kSMZbDFDn
ITk1gBnJkeX / GDkRjmyccfus4BKl75HC2cnW1eXrjExNf66uYz + VGLl + snrF7j2EnHQy3JjDKPb9
3fOd9zT0TmofYZC4K8YQ8IkR6JaAT0zIJMjxtWaMmCEMdvwNnI5PYEYJYSTHM5EegqhggYbFhgsJ
9gJXy42PMx9JzYKEcFkcG0MJULYE2ZEGrZwHIMnASwc1GSw4mmH1JCCNQYEF7C7tjasVT + 0 / J3LP
gie59HFL + 5RDIdmZ8rGMEldN5s668eb / tp8vQ + 7OrT9jPj / B7425QIGJI3Pft72dLxav8BefvcGU
7 + kfABxJX + SjAgAA

解码:

$ base64 -d | gunzip > handshake.cap

运行tshark以查看其是否正确解密了ARP数据包:

$ tshark -r handshake.cap -o wlan.enable_decryption:TRUE -o wlan.wep_key1:wpa-pwd:password:SSID

它应该打印:

  1 0.000000 D-Link_a7:8e:b4-> HonHaiPr_22:09:b0 EAPOL密钥
  2 0.006997 HonHaiPr_22:09:b0-> D-Link_a7:8e:b4 EAPOL密钥
  3 0.038137 HonHaiPr_22:09:b0-> D-Link_a7:8e:b4 EAPOL密钥
  4 0.376050 ZyxelCom_68:3a:e4-> HonHaiPr_22:09:b0 ARP 192.168.1.1位于00:a0:c5:68:3a:e4

它不能..它必须被解密,因为它具有全部四个,或者您已连接到wifi网络并且正在解密数据包
Paul

我(显然)是在谈论以RFMON模式捕获的数据包。
cYrus

@Paul:我已经编辑了问题;你可以回复吗?
cYrus

我希望我能。如果您遵循EAPOL顺序,则客户端仅在第一个数据包之后才具有PTK(传递了anonce)。AP在第二个数据包之后(即发)知道了PTK。如果您观察到这两个,并且知道MAC,您当然会做以及ssid + psk,那么这应该就是您所需要的。第三个数据包只是用于广播和多播的GTK,第四个数据包只是一个ACK。如果要解密单播(即arp-reply),那么前两个数据包就足够了。我忍不住想念我,因为一切都说你需要全部四个。
保罗

您对此有进一步的了解吗?
保罗

Answers:


1

EAPOL交换也用于更新临时密钥。新密钥在发送方4/4后安装在请求方上,并在收到4/4 [1]时在身份验证方上安装。如果Wireshark必须正确处理密钥更新,则它只能在读取帧中的4/4数据包后才使用密钥,因为在密钥更新期间数据包可能仍在流动(即使由于缓冲而导致它们不应该流过)

对于第一个4WHS,可能不需要等待4/4,但是完全可以理解,他们只是懒于实现它。3/4仍然是必需的,因为它包含组密​​钥(即使您对它们不感兴趣,但是知道您不会看到来自AP或您没有其4WHS一部分的客户端的ARP请求)和管理密钥。您也可以跳过3/4,但是您无法确认交换成功,因为3/4用于验证身份验证器是否知道PMK。

[1]请注意,在当前方案中,如果丢失了4/4消息,则请求者开始使用新密钥,并且验证者仍使用旧密钥,并且重新发送用旧密钥加密的3/4将无济于事。在最新的802.11 2012标准中,此问题以及WPA2的许多其他问题已通过并行保持两个密钥来解决。


1

在步骤1和2中交换了构造PTK所需的所有信息。这足以解密单播流量。

没有第3步,您将没有GTK,因此无法解密多播/广播。

解密捕获的流量实际上并不需要步骤4,但是如果没有步骤4,则客户端/ AP将不会开始使用加密。Wireshark可能会在尝试解密数据之前取消此操作。


0

好吧,很明显,WireShark文档是错误的。:-)

这里查看文档:

  • 在EAPOL 1和EAPOL 2之后,双方都知道将用于解密流量的临时密钥。
  • 第三条消息证明双方都知道了临时密钥,并指示身份验证器(基站)已准备好开始使用临时密钥。
  • 第四个消息触发从EAPOL之前设置的PMK切换到EAPOL中派生的临时密钥

因此,这很有意义。WireShark不需要任何消息3。它知道消息1和2之后的密钥,但是它等待开始使用它们解密流量,直到收到消息4。

不能保证生活中的任何事情,特别是自由软件的行为,但是可以肯定的是,WireShark不需要提供消息3来解密会话。


在我看来,第4个数据包也不是必须的 -它只是为了等待它。
保罗

@Paul,这有点像说“暂停”后不需要 “继续”。
Old Pro

@OldPro,我不确定等待4°是一个好主意,捕获的数据包往往会丢失,尤其是在空中旅行时。
cYrus

@cYrus,等待4是必不可少的,因为必须同时更改两侧的加密密钥。如果客户端未收到4,则不知道基数已收到3。如果客户端未收到4,则它将再次发送3(触发重新发送4),直到收到4或放弃尝试。创建连接。
旧版专业版

@OldPro:我不是在谈论协议。双方都可以接收所有数据包,但是被动捕获流量的实体可能会丢弃或不捕获它们。
cYrus

0

这并不能解释原因,但是无论如何都要引用airdecap-ng 文档

WPA/WPA2 Requirements

The capture file must contain a valid four-way handshake. For this purpose having (packets 2 and 3) or (packets 3 and 4) will work correctly. In fact, you don't truly need all four handshake packets. 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.