导言
无线网络的弊端在于你总是无法看到所面对的问题。在无线网络中,建立连接并不像连接有线网络那样简单,物理安全也没有阻止未经授权人员进入设备室那样容易,甚至在接入点总方向的小问题都可能让你崩溃。也就是说,保护无线网络安全将成为未来安全行业的挑战。
在这篇文章中,我们将探讨解决利用数据包分析无线安全问题的实用技巧,首先我们将展示正确连接无线网络数据包的方法,收集到正确数据后,我们将探讨不同的分析技术,包括分析WEP/WPA认证、过滤加密流量以及寻找恶意接入点等。
捕获无线数据包
从数据包来看,无线网络与有线网络在很多方面都具有相似之处,无线网络仍然使用TCP/IP进行数据通信,并遵守与有线主机同样的有关网络的法律。这两种网络平台的主要区别出现在OSI模型的较低层,无线网络是通过在空中发送数据来通信,而不是通过数据线来发送数据。无线数据通信的媒介是共享的媒介,也正是因为这种特殊性,在物理和数据链接层必须进行特殊处理以确保不会发生数据冲突并且数据能够正确传输。这些服务由802.11标准的不同机制来提供。
这涉及到排除无线网络故障的问题,因为必须捕获两层802.11信息才能支持故障排除。为了做到这一点,你必须能够将无线网络接口卡(WNIC)接入到特殊模式,也就是监视器模式。监视器模式市一中特殊的驱动程序设置,限制了无线网络接口卡发送数据的能力,让无线网络接口卡只能被动地听取选定的频道。
在Linux操作系统,我们可以很简单地将无线网络接口卡转变为监视器模式,但是大部分Windows驱动程序都不允许这个功能。因此,我们需要一块特殊的硬件来实现模式转换。这块硬件被成为AirPcap,由CACE技术公司所制作。AirPcap设备本质上是一个无线网络接口卡,主要用于Windows操作系统和Wireshark数据包捕获工具中的监视器模式。使用这个设备,你可以从你想要收听的无线频道捕获两层802.11信息。
图1: AirPcap配置屏幕可以允许你配置你想要侦听的频道
802.11数据包结构
无线数据包和有线数据包的主要区别在于802.11表头的增加,这是一个第二层表头,包含关于数据包和传输媒介的额外信息。主要有三种类型的802.11数据包:数据、管理和控制。
管理 - 这些数据包用于建立第二层主机间的连接,一些重要的管理数据包子类型报告身份验证数据包、关联数据包和Beacon数据包。
控制 - 控制数据包允许对管理数据包和数据数据包的传递,并于拥塞管理有关。常见子类型包括请求到发送和清除到发送数据包。
数据 - 这些数据包包含实际数据,并且是能够从无线网络转发到有线网络的唯一数据包类型。
探讨每种802.11数据包子类型有点偏离本文主题,下面我们再将重点放在安全方面的无线网络问题。
寻找恶意接入点
IT资产的物理安全是安全领域最常被忽视的问题。而在这个方面,最常见的疏漏之一就是将未经授权设备增加到网络上。在有线网络世界,未经授权的路由器可能会导致拒绝服务攻击。虽然有线网络世界未经授权设备会造成严重后果,但恶意无线接入点(WAP)的影响则更大,因为恶意无线接入点可能会允许设备外的人员获取到网络的访问权限,就像他们可以随意走进来,将笔记本连接到网络中一样。
幸运的是,检测恶意无线接入点可以以相当简单的方式实现。为了实现这一点,你必须首先从网络广播范围内的几个区域捕获无线流量。然后,有几个不同的过滤器可以用于确定是否存在恶意接入点以及客户端是否与恶意接入点通信。
最简单的方法之一就是知道已知合法接入点的MAC地址,使用这个信息,你可以输入过滤器!wlan.bssid == 00:11:88:6b:68:30,将你实际的接入点MAC地址取代上述的样本地址。这样做将会向你展示所有发送到或者发送自所有接入点的无线流量,而不是指定接入点。如果你在这个区域有一个以上的接入点,你可以使用OR (||)运算符来结合这些过滤器。在这种情况下,你可以使用类似!wlan.bssid == 00:11:88:6b:68:30 || !wlan.bssid == 00:11:ff:a1:a4:22来过滤出两个已知合法接入点。
这种方法通常可以找出接入点,但如果你想更加深入地找到实际连接到恶意无线接入点的移动工作站呢?其中一个方法就是过滤重新关联请求。这样的话,你可以将前面的过滤器与wlac.fc.type_subtype eq 0和wlac.fc.type_subtype eq 2结合。第一个过滤器将会显示所有关联请求,第二个将会显示重新关联请求。必要情况下,你可以使用AND (&&)运算符将前面的过滤器与其中任一个过滤器结合。
最后,你可以再进一步确定在移动客户端和恶意无线接入点之间是否有任何实际数据传输。你可以通过过滤器 wlan.fc.type eq 2以及前面的排除已知合法接入点的过滤器对所有在非合法接入点通信的数据包进行过滤。
过滤未加密流量
当数据包通过空气传输时,保护数据包不被泄漏的唯一办法就是部署某种类型的加密技术。这通常是通过在现代系统中部署WPA或WPA2来实现的。当然,经常审查无线网络和确保没有无线客户端以未加密模式传递数据也是很好的安全做法。但是数据包泄漏还是可能发生,例如当WAP被错误配置,存在恶意WAP或者两个无线客户端可以直接以特殊模式通信时。
在无线网络中寻找未加密数据需要使用另一种过滤器。在这种情况下,我们可以使用wlan.fc.protected == 0过滤器来找到所有包含未加密数据的数据包。现在,如果你使用这个过滤器会发现它会返回一些意想不到的结果。802.11控制和管理框架没有加密,因为只为WAP和无线客户端执行管理功能。在这种情况下,我们必须增加wlan.fc.type eq 2来延展过滤器,这将能够确保过滤器只显示未加密数据数据包。最终的过滤器形式应该是wlan.fc.protected == 0 && wlan.fc.type eq 2。
分析WEP和WPA身份验证
最开始保护无线网络传输数据的首选方法是WEP(有效等效保密)。WEP曾经叱咤风云,直到在它的加密密钥管理中发现几个漏洞。正因为此,新标准才应运而生,包括WPA和WPA2标准,虽然WPA及其更安全版本WPA2也存在问题,但它们要比WEP安全得多。
能够区别WEP和WPA是非常实用的技能,如果你能够做到这一点,你将能够发现网络中应该是WPA的WEP身份验证。除此之外,你还将能够分析失败验证尝试。
WEP身份验证
WEP身份验证是通过使用挑战/响应机制来运作的。当客户端试图连接到WAP时,WAP就会出现挑战文本。该挑战被获知后,客户端就会获取该文本,使用客户端提供的WEP进行加密,然后将产生的字符串传回WAP。
一旦WAP验证了响应文本的正确性,它就会向客户端传回一个信息,告知它身份验证过程已经完成。过滤器找到成功认证答复是wlan_mgt.fixed.status_code == 0x0000。
图2: WAP告诉客户端身份验证过程已经成功
如果身份验证没有成功的话,WAP将会发出一条信息表示“收到包含身份验证序列的身份验证框架,交易序列号错误”。
图3:WAP告诉客户端身份验证过程失败
过滤器获取失败通知数据包:wlan_mgt.fixed.status_code == 0x000e.
WPA身份验证
WPA身份验证也是使用挑战/响应机制,但是运作方式完全不同。在数据包级别,WPA身份验证使用EAPOL来执行它的挑战/响应。你可以使用简单的过滤器EAPOL来找到这些数据包。在成功的身份验证中,你通常可以看到四个EAPOL数据包,分别代表两个挑战和响应,包含四个完整的数据包。每个挑战和响应都可以在数据包内使用Replay Counter值来搭配。
图4: Replay Counter字段用来为挑战和响应配对
当WPA验证失败时,你将需要更多的EAPOL数据包,挑战/响应被尝试更多次。如果这个过程最终失败的话,你应该会看到取消验证数据包。
图5: WPA验证失败后,客户端取消验证
有两种过滤失效WPA验证的方法,第一种就是使用EAPOL过滤器,计算WAP和无线客户端间传输的数据包数量。另外一个方法就是使用wlan.fc.type_subtype == 0x0c过滤器取消验证数据包。这将会返回很多与失败验证不相关的多余结果,因此为了验证数据包与此相关,你将需要深入挖掘,并创建另一个围绕WAP和无线客户端间所有数据包的过滤器。
结论
在本文中,我们探讨了一些基本无线网络数据包捕获具体问题,并展示了无线安全中不同数据包分析应用。无线网络、无线安全和数据包分析是非常广泛的话题,希望本文能够有助于大家进一步深入研究这个领域。