802.11无线网络安全基础知识

2019 年 3 月 20 日 计算机与网络安全

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

微信群回复公众号:微信群QQ群460500587


微信公众号:计算机与网络安全

ID:Computer-network

本文主要介绍802.11协议,其目的是帮助您在工作中选择正确的802.11设备,对802.11网络的工作原理有一个基本的了解。


一、802.11标准简介


802.11标准定义的是一个数据链路层(link-layer)的无线协议,该标准由“美国电气和电子工程师协会”(Institute of Electrical and Electronics Engineers,IEEE)负责管理。许多人在听到802.11时,首先会想到Wi-Fi技术,实际上二者并不等同。Wi-Fi标准是802.11标准的一个子集,而且Wi-Fi标准是由“Wi-Fi联盟”(Wi-Fi Alliance)负责管理。因为802.11标准过于复杂,其标准的更新流程非常耗时间(具体的更新操作由IEEE下的一个委员会负责),所以几乎所有的主流无线设备制造商都觉得,他们需要一个小但灵活的组织来管理更合适,这样当他们通过市场的努力,需要进行技术推进时,该组织能在供应商之间进行维持、协调工作。Wi-Fi联盟由此产生。


在一个给定的功能集合上,Wi-Fi联盟可以确保所有具有Wi-Fi认证标志的产品都能一起工作。这样一来,如果802.11协议中出现任何两义性的概念时,Wi-Fi联盟会定义其中一项作为“正确的项”(right thing),然后要求所有Wi-Fi认证的产品按照“正确的项”去做。该联盟还允许供应商实现一些“草案标准”(指未经过批准的标准)的重要子集。草案标准中,最著名的例子就是“Wi-Fi保护访问”(Wi-Fi Protected Access,WPA)或叫作“802.11n草案标准”。


1、基础知识


大多数人都知道,802.11是通过“AP接入点”(AP,Access Point)将无线设备接入有线网络,但当设备处于ad-hoc模式或独立基本服务集(Independent Basic Service Set,IBSS)模式时,802.11可以在没有接入点的前提下使用。因为ad-hoc网络本身就是一个开放的无线网络,所以一般我们并不关注无线安全,而当设备处于ad-hoc模式时,802.11协议中,各项技术细节改变很大,这里并不涉及ad-hoc模式。除非另有规定,否则这里所包含内容都是指802.11运行在“无线接入点”模式(Infrastructure Mode,即有AP的模式)。


802.11标准将所有的通信数据包分为三种类别:数据数据包、管理数据包、控制数据包,这些不同类别被统称为通信数据包类型(packet type)。数据数据包的作用是负载更高层次的数据(如IP数据包)。管理数据包可能是攻击者最感兴趣的通信数据包,因为它控制网络的管理功能。控制数据包得名于“介质访问控制”(Media Access Control,MAC),用来干预访问共享介质。


任何给定通信数据包的类型都有许多不同的子类型。例如,信标帧(Beacons)和解除认证(Deauthentication)的通信数据包都是管理数据包的子类型,请求发送(Request to Send,RTS)和清除发送(Clear to Send,CTS)的通信数据包都是控制数据包的子类型。


2、802.11通信包的地址


与以太网的数据包有源地址、目的地址这两个地址不同的是,大多数802.11通信包有三个地址:源地址、目的地址和“基本服务集标识”(Basic Service Set ID,BSSID)。这个“基本服务集标识”项就是唯一标识某个AP接入点,以及该AP接入点所关联站点的集合,采用AP接入点的无线接口使用相同的MAC地址。这三个地址告诉通信数据包到哪去、谁发送的、经过哪个AP点。


然而,并不是所有的通信数据包都有三个地址。例如“确认帧”(Acknowledgment frame)就不是这样,这是因为减少发送“控制帧”的开销非常重要,所以此类帧结构的bit位的个数也能减就减,一般保持最低的位数。另外,美国电气和电子工程师协会也使用不同的术语来描述“控制帧”的地址,如用“接收地址”(receiver address)来代替“目的地址”(destination address),用“发送地址”(transmitter address)来代替“源地址”(source address)。


图1显示的是通过Wireshark截包软件截获的一个典型的数据包。

图1  Wireshark软件截获的数据包

不要被Wireshark所定义的“接收地址”(即图1的Receiver)和“发送地址”(即图1的Transmitter)所迷惑。所有的802.11数据包都有三个地址(目的地址、源地址、“基本服务集标识”),而不是五个(目的地址、源地址、接收地址、发送地址、“基本服务集标识”)。Wireshark也开始允许将“源地址”作为“发送地址”,“目的地址”作为“接收地址”。这样可以使在各个工作控制帧和数据帧之间的过滤器(filter)有一个兼容的层。


3、802.11安全启蒙


在保护802.11网络成员中,有两个非常不同的加密技术:“有线等效保密协议”(Wired Equivalency Protocol,WEP)和“Wi-Fi保护访问”(Wi-Fi Protected Access,WPA)。其中的“有线等效保密协议”是早期版本,是一个相当脆弱的标准;“Wi-Fi保护访问”则更现代和有弹性。“有线等效保密协议”的网络一般使用静态的40位或104位公开密钥,事先参加传输的每一个客户端都知道所使用的密钥。密钥用于初始化一个基于RC4加密算法的流密码,恰恰这个RC4加密方式吸引了很多攻击者的兴趣,并实施了对“有线等效保密协议”的攻击。而“Wi-Fi保护访问”协议可以配置两个差距迥异的模式,即“预共享密钥”(Pre-Shared Key,PSK)模式和企业模式。下面分别对二者进行简要说明。


(1)WPA的预共享密钥模式


“Wi-Fi保护访问下的预共享密钥”(WPA Pre-Shared Key,WPA-PSK)的工作方法和“有线等效保密协议”相似,都需要连接方提供密钥才能访问无线网络,不过,二者的相似点也仅限于此。图2显示了“Wi-Fi保护访问下的预共享密钥”的认证过程,这一过程被称为“四次握手”(four-way handshake)。

图2  一次成功的“四次握手”过程

“预共享的密钥”PSK(即密码)可以是8~63之间任意长度的可打印的ASCII码字符。使用“Wi-Fi保护访问”的加密算法依赖于“成对主密钥”(Pairwise Master Key,PMK),该PMK是由“预共享密钥”和“服务集标识”计算生成的。一旦客户端获得了PMK,客户端就会与AP接入点开始协商一个新的、临时的密钥,该密钥称为“成对临时密钥”(Pairwise Transient Key,PTK)。这些成对临时密钥PTK在每次客户端进行连接的时候被动态创建,在之后每次连接的时候进行定期更换。从编程的角度来看,PTK的生成可以看成是由5个参数组成的函数,其参数有:“成对主密钥”,一个随机数字(由AP接入点提供,称为A-nonce),另一个随机数(由客户端提供,称为S-nonce),以及客户端与AP接入点各自的MAC地址。PTK的生成之所以需要这么多的变量,究其原因是为了使每次创建的PTK值都独一无二,不会重复。


AP接入点通过在认证交换时检查“信息完整性检查码”(Message Integrity Code,MIC)字段,来验证客户端是否真的有“成对主密钥”。“信息完整性检查码”是一个数据包的加密散列函数(hash function),该函数是由PTK和PMK混合而成,主要用于防止篡改和核实客户端具有这个主密钥。如果“信息完整性检查码”是不正确的,这就意味着“临时密钥”和“成对主密钥”是不正确的,因为“临时密钥”是从“成对主密钥”中推算出来的。


攻击“Wi-Fi保护访问”算法时,我们最感兴趣的当然是还原正确的“成对主密钥”。如果网络设置在“预共享密钥”模式下,则允许你“读取”所有其他客户端所传输的数据包中所包含的“成对主密钥”,并验证自己是否成功。当然,这里的“读取”实际上就是嗅探监听,要使用一些手段才行。


同传统的“有线等效保密协议”部署一样,“Wi-Fi保护访问下的预共享密钥”也有很多类似的使用案例,但即使如此,“Wi-Fi保护访问下的预共享密钥”仍然也仅能用于家庭或小型办公室环境中。由于“预共享密钥”的使用需要连接到网络,所以主密钥是一个全网共享的数据,这意味着在一个使用“Wi-Fi保护访问下的预共享密钥”加密网络的大公司中,有员工离开公司,或该公司的一个网络设备被盗,这就意味着“成对主密钥”被公开。要想系统不受攻击,则整个网络必须重新配置一个新的“成对主密钥”。在“Wi-Fi保护访问”的算法中,与上述预共享密钥模式相反,“WPA企业模式”并不需要全网使用同一个“成对主密钥”,而是可以提供多个单独认证,这意味着对可以连接到无线网络的客户端有更大的控制权,因此在大多数大型企业中被广泛使用。


一花多名:WPA,WPA2,802.11i和802.11-2007。


前面已提出了“Wi-Fi保护访问”WPA。如前所述,WPA是Wi-Fi的通信标准,而Wi-Fi属于“Wi-Fi联盟”,802.11属于“美国电气和电子工程师协会”,所以,“Wi-Fi保护访问”是802.11i的子集,但在802.11i未被批准前,WPA也还只是一个由Wi-Fi联盟创造的临时解决办法。在802.11i被批准以后,“Wi-Fi保护访问”就被合并到最新的802.11标准中了。从技术上讲,大多数路由器和客户端,除了实现802.11i的功能之外,还实现了802.11-2007标准中增强的安全性功能,因此,如果我们不拘泥于版本之间的细节差异,可以把802.11-2007啰嗦地解释为“对于以前称为“Wi-Fi保护访问”或称为802.11i的加密标准,802.11-2007是其改进版”,这里将继续使用“Wi-Fi保护访问”WPA这一术语。


(2)WPA的企业模式


在一个基于WPA认证的网络中,一旦我们证实了该网络是运行在“WPA企业模式”下,那么网络中每个用户每次主动连接时,“成对主密钥”都会被动态地创建。也就是说,即使我们拿到了该用户的PMK,也只能模仿这一个用户的指定连接。


在“WPA企业模式”中,“成对主密钥”是在“认证服务器”(authentication server)上产生,然后下发到客户端的。AP接入点和认证服务器是通过一个称为RADIUS的协议(Remote Authentication Dial In User Service,远程用户拨号认证协议)进行对话的。认证服务器和客户端的信息交流使用AP接入点作为其中继节点。当认证服务器做出最终决定接受或拒绝客户端用户时,AP接入点则会忠实地听从认证服务器的决定,实施同样的接受或拒绝操作。因为AP接入点只是充当一个中继节点,所以在客户端通过认证服务器的认证之前,它只是认真地将客户端的认证传给认证服务器,而只有客户端通过认证后,AP接入点才开始传送客户端正常的数据包。


如果认证成功,客户端和认证服务器都将获得相同的“成对主密钥”。“成对主密钥”如何创建的细节根据验证类型的不同而有所不同,但重要的是,它是一个加密的强随机数,两端都可以计算。然后,验证服务器就告诉AP接入点,可以允许用户建立连接了,但同时让用户在向AP接入点建立连接的时候发送该“成对主密钥”,以便AP接入点识别。因为这时的“成对主密钥”是动态创建的,每个用户的“成对主密钥”一般是不同的,所以AP接入点必须记住哪个“成对主密钥”对应哪个客户端用户。一旦所有AP接入点和所有客户端都有“成对主密钥”,那么各AP接入点和各客户端之间就可以像图2中所显示的一样,进行连接时所需的“四次握手”操作。这一过程用于确认客户端用户和AP接入点都有正确的“成对主密钥”,并能正常通信。图3显示了基于企业模式的整个认证过程。

图3  基于企业模式的“Wi-Fi保护访问”认证

(3)EAP和802.1X


您可能注意到图3中许多通信的数据包前有EAP标识。EAP表示“扩展认证协议”(Extensible Authentication Protocol)。EAP基本上是一种携带任意其他认证协议的协议,所以可以说是一种认证的“元协议”(meta-protocol)。EAP允许设备(如AP接入点)忽略具体的认证协议细节。


IEEE 802.1x协议的设计本来是为了在有线局域网上认证用户的。借助EAP,802.1X就可以实现认证,而“Wi-Fi保护访问”又使用802.1X。当客户端向AP发送认证包时,双方使用了“局域网上的EAP协议”(EAP over LAN,简称EAPOL),该协议也是802.1X协议组中规定的一个标准协议。当AP和认证服务器进行通信时,又会在RADIUS协议的数据包外再包上一个EAP的认证数据包。


在“WPA企业模式”下,所有的AP接入点所做的事情,就是在客户端和认证服务器(例如RADIUS服务器)之间来回传送EAP信息。并且,AP接入点其实所期待的,也就是RADIUS服务器及时地让它知道是否允许某个用户进入本系统中。而是否允许进入,是通过寻找“EAP成功”的消息,或者是“EAP失败”的消息来判断的。


正如您可能已经猜到的那样,还真有几个不同的认证技术是基于EAP实现的。比如其中最受欢迎的:“基于传输层安全的扩展认证协议”EAP-TLS(certificate-based authentication,基于证书的认证协议)和“受保护的扩展认证协议”(Protected Extensible Authentication Protocol,PEAP)。


一般而言,理解802.1X在哪里结束,EAP/EAPOL在哪里开始,以及RADIUS服务器在哪里开始起作用并不重要。重要的是必须知道,当使用企业模式进行认证时,客户端和认证服务器互相传送特定格式的认证数据包。所以,AP接入点必须来回地代理双方互通的信息,直到认证服务器告诉AP接入点是停止还是允许客户端访问。图4显示了各个数据包的协议栈,如前所述,由于每次认证数据包都由多层协议共同完成,各层协议各司其职,完成所负责的功能。对于在以太网中实施802.1X端口安全管理的网络管理员来说,这个图看起来应该很熟悉。如果将一个基于802.1x的软硬件交换机替换掉图中的AP接入点,效果是完全相同的。

图4  各数据包的协议栈

二、“服务发现”的基本知识


在攻击一个无线网络之前,你需要找到一个无线网络,这需要借助扫描类(也称服务发现类)的工具。有相当多各式各样的工具都可以满足我们对这一功能的需要,只是这些工具都可以归于两大类:“被动式”(passive)或“主动式”(active)服务发现工具。被动式服务发现工具的原理是在一个给定信道(channel)上,监听无线信号的任意数据包,进而通过分析这些数据包来确定哪些客户端正和AP接入点进行通信。主动式服务发现工具的原理更基础,它们向目标主机主动发送希望得到回应的“探测请求”(probe request)数据包。在攻击任何无线网络之前,了解和选择顺手的工具都是一个重要的步骤。发现无线网络,首先应该了解主动和被动扫描的基础知识。


1、主动式扫描


实现主动扫描的工具,都会周期性地发出一些探测类的请求数据包。每当客户端需要进行网络查找操作的时候,客户端就会使用这样的探测类请求数据包。例如,客户端需要查找一个指定网络的时候,可能发送有针对性的“探测请求”数据包:“网络X,你在那边吗?”,如图5所示。或者客户端需要查找都有哪些网络的时候,他们也会通过广播的方式发送另一种“探测请求”数据包:“喂,有人吗?”,如图6所示。“探测请求”本身是802.11标准规范的两项技术之一,作用既是用来让客户端寻找一个要关联的网络,也是用来让客户端通过使用信标去找到所有的网络。

图5  一个探测请求数据包实例(注意其中SSID参数是个广播地址)

AP接入点每1/10秒发出一次信标数据包。每个数据包包含相同的信息集合,这些信息集合将出现在探测回复数据包中,其内容包括主机名、主机地址、所支持的速率等。因为这些数据包通常可以被任何接收者轻而易举地接收到,所以大多数主动的扫描器也同样可以接收这些数据包并进行处理,然而,事实并非总是如此。通常情况下,主动扫描器可以从网上拿到信标数据包,但并不都是这样,拿不到的情况不仅取决于所使用的扫描器本身,还包括控制无线网卡的驱动程序。主动扫描器的主要缺点是程序界面上除了能看到“探测请求”(和可能的信标)的数据包之外,看不到其他所有的无线通信内容。

图6  一个典型的广播探测请求数据包

大多数操作系统都是在寻找要连接的网络的时候才采用主动扫描,并且它们都是周期性地做这个操作,如果客户端用户请求一个更新操作的内容时,操作系统也会做这样的操作。对操作系统来说,两个操作的不同之处在于,前者进行寻找操作时,操作系统发的是广播探测请求数据包;而后者发送的是定向的“探测请求”数据包。在Windows XP操作系统,并在打了SP2(Service Pack 2)之前,客户端通常向所有它们想连接的主机SSID发送定向探测请求数据包,所有的这些AP接入点都保存在“用户的网络偏爱列表”(user’s preferred network list)中。Windows XP SP2之后,操作系统在设计上改进了扫描技术,变成了只在需要的时候,向需要连接的AP接入点发送定向探测数据请求数据包。


大多数主动扫描的工具永远只能找到那些“操作系统能通过主动扫描方式找到的网络”(换句话说,这些扫描工具的能力不会比所用操作系统的能力更强,只能找到那些出现在操作系统的可用网络名单里的网络),从这一点来说,主动式扫描工具与被动式扫描工具相比,主动式扫描被挤到一个非常不利的地位。

嗅探器、搜寻器、扫描器。与无线攻击工具相关的术语有点令人难以应付。对“搜寻器”(Stumbler)和“扫描器”(Scanner)来说,绝大多数主动式扫描的工具都称为“搜寻器”,而绝大多数被动式扫描的工具被称为“扫描器”,使用“扫描器”略多于“搜寻器”。而对“搜寻器”和“嗅探器”(Sniffer)来说,“搜寻器”即使从技术上看不能算是扫描器,但“搜寻器”仍然被认为是一个“扫描工具”,而“嗅探器”是网络监测工具,虽然与所有网络都息息相关,但与无线网络并没有必然的相关性,它只是一个简单的网络工具,可以显示网卡接口所能看到的所有数据包。另外,“嗅探器”也是一个应用程序的常见名称,鉴于它的数据都来源于协议的低层,所以如果处于低层的无线的驱动程序或网卡不向“嗅探器”提供数据包,那“嗅探器”就什么也做不了。


2、被动式扫描(监测模式)


被动式扫描工具产生的效果要比主动式扫描工具产生的效果好很多。被动式扫描工具自身不发送数据包。相反,它们收听给定信道上的所有数据包,然后分析这些数据包,进而看看下一步做什么。这些工具能更好地查看周围的整个网络。不过,要想达到这种效果,所用的无线网卡必须支持一种功能,即一种被称为“监测模式”(monitor mode)的功能。


把一个无线网卡置于“监测模式”类似于把一个正常的有线以太网卡置为“混杂模式”(promiscuous mode),在这两种情况下,都可以看到所有通过“线缆”(或信道)的所有数据包。不过,一个关键区别是,当把有线网卡置为“混杂模式”时,只能看到所接入的网络上的所有通信。而在无线网卡上就不是这种情况了,以我们最常使用的Wi-Fi为例,Wi-Fi使用2.4GHz波段范围的频率,而这个频段是“免授权的”,任何单位都可以共享地使用这个频段,这就意味着,同一信道内可以有多个重叠的网络。在这一共享频段的前提下,如果您和您的邻居共享同一信道,当把您的网卡置于“监测模式”,想看看“您的网络”中会发生什么时,您在看到自己网络上所有通信数据包的同时,也会看到邻居的网络上所有通信的数据包。


无线网卡和有线网卡的另一个关键区别是:以太网卡上的“混杂模式”是一个标准功能,而某一泛指的无线网卡是否具有“监测模式”则不能草率地得出“肯定就有”的结论。要想让一块无线网卡支持“监测模式”,并能好好工作,需要同时满足两个必要条件。首先,网卡上的主芯片必须支持这种模式。其次,正在使用的驱动程序也必须同样支持监测模式。显然,对于想成为无线网络方面的黑客的人来说,选择一个支持“监测模式”的网卡(甚至要考虑在多个操作系统上的驱动程序都支持这一功能)是重要的第一步。


一个关于被动式扫描器如何工作的简介,很可能就可以帮助我们消除隐藏在扫描器背后的“魔力”。任何被动扫描工具的基本结构都是一致且简单的。首先,将无线网卡置于“监测模式”,如果用户已经这么做了,则跳过本步骤。然后,扫描器的程序内部进入一个循环运行状态,该循环不停地从网卡读取数据包,并对其进行分析,当有新的信息的时候,同时刷新用户的显示界面。


例如,当扫描器看到一个数据包,包中信息包含一个新的“基本服务集标识”,就会更新显示用户界面。当出现一个数据包可以关联一个“服务集标识”SSID(即网络名称)到该“基本服务集标识”上时,它也会更新其显示界面,并将其网络名称加上去。而当扫描器看到一个新的信标帧时,只是将新的网络添加到它的名单中。所以,从这里来看,被动式扫描工具与主动式扫描工具一样,也是对数据进行分析,只是主动式扫描工具发出探测请求后,接收和分析的是对方回复的数据包信息,而被动式扫描工具则自身不发送“探测请求”数据包,只是直接接收对方所发的数据包,进而进行分析。


3、主动扫描应对措施


要规避主动式扫描器的扫描相对简单,但这样做有一个主要缺点,因为主动式扫描器只处理两类数据包(探测回复数据包和信标数据包),所以一个AP接入点,要想避开主动式扫描器的扫描,必须分别使用两种不同的技术来进行有效地躲避。


第一种技术是对广播类的“服务集标识”的“探测请求”不予回复,当然,如果AP接入点看到一个“探测请求”不是广播类的,而是指向自己(即探测请求数据包中,已经包含本AP接入点的“服务集标识”),就做出反应,对其进行回复。因为如果是这种情况发生,就说明对方已经知道您的网络名称,很显然它此时只是在寻求和您进行连接。反之,如果探测请求发送的是广播“服务集标识”请求,这时大可不予理会。


通过上述方式,虽然一个AP接入点没有回复对方广播式的“探测请求”,但信标数据包中仍然包含有自己的“服务集标识”,所以这样做仍然不能叫“隐藏”。也就是说,当一个接入点设定成不回复广播“探测请求”模式,扫描器还将“检查”它在信标数据包里的“服务集标识”,所以如果主动式扫描器接收到信标数据包,同样可以从中获得“服务集标识”。根据无线通信标准,AP接入点必须得在自己的信标数据包里包含“服务集标识”字段,这种操作是强制性的,无法回避。不过也有变通手段,那就是在填“服务集标识”的位置,插入一些空字节代替“服务集标识”。


大多数AP接入点都包括这两项功能。有时这个功能被称为“隐藏模式”(hidden)。还有些AP接入点的供应商只会在设备功能配置界面上简单地提供一个复选框,名称只是草草地标为“允许广播SSID”。因为要避免被扫描到,通常都是“广播探测回复”和“检查信标中的SSID字段”两项,要禁都禁,二者缺一不可。所以一般来说,AP接入点只提供一个禁用开关同时控制两项,因此要想禁用这一功能,只需要取消选择上面的“允许广播SSID”复选框即可。


您可能会认为,或许隐藏AP接入点的最好办法就是完全禁用信标功能。听起来似乎可行,因为如果这样做的话,AP接入点不再向外发送“服务集标识”,各个客户端要连接AP接入点时,直接在探测请求中指明要连的“服务集标识”,那么网络上“服务集标识”出现的唯一机会就是客户端在访问该AP接入点的时候。然而事实上你是不可能完全禁用信标的。对于AP接入点来说,信标数据包的作用不仅仅是宣布自己这个AP接入点网络的存在性,而是有大量的功能要使用信标,如果一个AP接入点在一个固定的时间间隔不发送自己的信标,那么整个网络就会因很多功能无法实现而瘫痪。


还有一点不要忘记,如果主动式扫描器不能拿到一个AP接入点网络的“服务集标识”名称,那么那些合法的客户端也不能。所以网络运行在“隐藏模式”下,意味着使用这个网络的终端用户事先保存了隐藏起来的那些“服务集标识”名称。或者用户客户端虽然没能找到该“服务集标识”网络,但它很确定这里肯定有这个“服务集标识”的AP接入点,才会有人这样设置。特别需要说明的是,在AP接入点隐藏的状态下,客户端用户必须知道他们感兴趣的网络“服务集标识”是什么,并且有办法把这个“服务集标识”名称输入到自己的操作系统中。


将网络设置为“隐藏模式”,意味着客户端需要传送定向“探测请求”数据包。而打开这种模式会引发客户端通过模拟探测功能连接AP接入点,最终导致“客户端攻击”(client-side attack)。


现在讲讲坏的方面。Windows和OS X操作系统的新版本都设置为客户端避免传送定向“探测请求”数据包,除非它们知道它们正在寻找的网络是隐藏的。虽然这一功能被许多供应商广泛采纳,但是很难被推荐并启用,因为启动AP接入点中的“隐藏”功能可能会有管理不善的风险。另一个不足的方面,就是AP接入点处于隐藏的状态时,主动式扫描器确实很难找到你,但对被动式扫描器来说并非如此,事实上,与主动式扫描器相比,被动式扫描器拿到“服务集标识”只是稍微难了一些。在数据交换的时候,您费尽心机地迫使您的客户端传送定向“探测请求”到AP接入点,但那个坐在咖啡店里的攻击者却可以信手拈来地捕获到该请求,并加以利用。总之,网络采用不广播“服务集标识”信息的隐藏方式,对攻击新手来说,攻击变得稍微难了点,对更多熟练的攻击者来说不过是徒增一小步操作而已。


4、被动扫描应对措施


和规避主动扫描器相比,规避被动扫描器则是一个完全不同的问题。无论在一个信道上传送什么样的信息,被动扫描器都可以看到这些信息,不过即使如此,您仍然可以采取一些切实可行的预防措施尽量减少暴露。首先,我们假设网络中已针对主动扫描采取了预防措施,考虑一下,在这些预防已经生效的前提下会发生什么情况,那就是当一个被动扫描器进入一个隐藏的网络中,扫描器将可以看到被审查的信标数据包,并知道在该区域内有个网络,但是,这个网络的“服务集标识”仍然不得而知。


再来看看无线协议的模式,如果您的AP接入点支持多种模式的混合模式,而您又没有老掉牙的802.11b/g模式的客户端,那就请禁掉该AP接入点上的混合模式,进而改选为只按照802.11n的模式,或者更新版本的模式运行,以避免旧模式下漏洞被利用。这时的AP接入点,所传送的所有数据包都理当使用802.11n编码了,然而不幸的是,即使是模式已整体更新,但AP接入点的信标数据包和探测回复数据包仍将采用802.11b编码发送,这种不放弃旧编码格式的想法,对于那些仍然使用802.11b/g模式网卡进行“战争驾驶”的被动扫描黑客来说,无疑是一个好主意。


在无线协议的模式中,另一种选择是把您的网络设置于频段为802.11a模式的5GHz波段。因为大多数无线网络都运行在2.4GHz这个频段上,所以许多“战争驾驶”者并不扫描5GHz的范围。原因有两个,也都很简单:其一是攻击者通常只想买一副天线,这时的首选当然是2.4GHz频段的;其二是支持5GHz范围的网卡要贵很多。


最后,如果您的AP接入点安装的是能够自动调整无线发射功率的智能天线,那么在没有数据通信时,该装置的低发送功率可以大大减少您的信号覆盖范围。当然,即使您这样做了,对于那些离您AP接入点100米之内的,和那些找不到您绝不罢休的人来说,这种方式仍然无法让您达到完全隐身。


5、频谱分析(在数据链路层之下)


测量给定频率上的能量值的工具称为“频谱分析仪”(spectrum analyzer)。独立的频谱分析仪价格数千美元,是由专业工程师使用的,之所以这么贵,是因为这些频谱分析仪可以在很大的跨度范围上进行扫描。然而,802.11只是运行在2.4GHz和5GHz的波段上,所以很多公司看到这一商机,就推出一些低端的频谱仪,这些频谱仪只对这两个范围进行检测,以便对802.11中产生的噪声干扰、信号冲突等问题进行测试。


作为频谱分析领域的原创者,MetaGeek公司推出了一款基于USB“加密狗”(dongle)接口的频谱仪,名叫Wi-Spy。该频谱仪可以与软件应用程序进行数据通信。这样一来,原来位于设备内部的数据分析和用户界面部分,就可以转移到计算机中,以软件应用程序的方式实现,从而降低成本。目前,MetaGeek公司最便宜的产品是名为“Wi-Spy mini”的设备加上名为“inSSIDer office”的软件,售价是200美元,如果想要更专业的设置(其中也包括能对5GHz进行扫描),售价是850美元。


一家名为Oscium的公司也决定进入这个市场。Oscium提供基于硬件的“加密狗”,甚至允许您的iPad或iPhone作为一个频谱分析仪,它的扫描范围是2.4~2.5GHz,还有一个可选的扫描功率表,量程从100MHz~2.7GHz。该装置称为WiPry,既提供引脚为30针的连接器,也提供最新的lightning接口(不过,使用该接口,需要另配适配器)。从Oscium公司挑选入门级的WiPry,其价格比MetaGeek入门级的Wi-Spy低100美元。图7显示的是WiPry扫描到的可视化数据通信界面,扫描的范围是802.11的13信道。也就是在美国法律规定不使用的那个802.11信道。

图7  WiPry扫描到的可视化通信界面

如果您想玩一个2.4GHz的频谱分析仪,您会发现很难找到比WiPry更合适的了。它比Wi-Spy便宜(当然,这里有个假设前提,就是您已经有了一个iPhone手机或类似的其他手机);用户界面反应更灵敏;其移动便捷的优势,使其从形式方面来看更加方便。


6、频谱分析的应对措施


在一个可以对2.4GHz和5GHz进行监测的频谱分析仪面前,要想保护您的网络通信数据不被频谱分析仪看到,唯一的方法就是关掉无线网络,改回到纯线缆的传输方式。虽然说,智能天线好的布局可以起到一定的作用,但事实上,802.11的网络只要在已知频率上发射能量信号,就意味着,即使对于上述这些低级的工具来说,它们都是可见的。


三、硬件与驱动程序


您所要使用的软件工具,同这些支持软件运行的硬件一样重要,所以一提到硬件的选择,世界上最好的无线网卡和芯片组肯定是您的首选。不过,也有例外,那就是如果控制硬件的驱动程序根本就不知道您想要什么,然后把驱动程序做得一塌糊涂,那就另当别论了。


下面介绍一些目前可用的驱动程序和它们所控制的芯片组,以及装有芯片组的网卡。这里着重强调Linux驱动程序是因为这将是当前绝大多数开发中会遇到的。


1、Linux内核简介


在对无线通信提供支持方面,Linux操作系统的内核常常招来相当坏的评价。事情是这样子的,一般来说,老一代芯片组都会为自己提供独立的驱动程序,每个驱动程序自成一体,形成“孤岛设计”,程序本身也不向其他驱动程序共享任何东西,也不需要将其他驱动程序作为自己的先决条件。可是,在Linux内核开发中,驱动程序几乎没有独立性,每个驱动程序都需要与其他的独立单元一起合作才能生效,因此对其的批评声遍布于整个内核开发中,每个人都希望会好起来。


这样做有很大的弊端,既然驱动程序间要相互协作,所以每次要统一编译,如此一来,每个驱动程序都携带约数千行代码,并且每个驱动程序中已实现的功能,又都被其他驱动程序重复实现。如果驱动程序编写者有某种标准化的“应用程序接口”(API)可供驱动程序调用来处理这些问题,那么他们的工作将变得更加容易,并且可以用更少的工作来维护这些核心代码。类似于驱动程序所用的代码,无非是诸如身份验证、系统配置,以及信道选择等几乎所有驱动程序都必然会用到的共同功能。


这种共享的代码库最终被设计出来,称为“802.11堆栈”。Linux开发人员认为实现两次是一个好主意,但也许三次更好,这取决于怎么来计算次数。无论如何,总有一段极度粗制滥造期,编写者希望他们的驱动程序被包括在主驱动树结构中,就写了又写。最后事情尘埃落定,大家也平静下来,在伟大的“802.11堆栈设计战”(802.11 stack war)中,“mac80211驱动框架”脱颖而出,成为赢家,而其他竞争者(特别是ieee80211)被戏称为“折旧”而扔进了大垃圾堆中。


由于现在只有一个标准化的Linux 802.11堆栈,所以许多老掉牙的、与802.11堆栈没有依赖关系的独立驱动程序都被改写,合并到驱动树结构中。不过,为了保持兼容,并不是所有驱动程序都必须符合“802.11堆栈”的要求,这意味着,虽然仍有一些“老爷车”式的历史遗留式的驱动程序(包括那些为特定的无线攻击而进行优化的补丁类驱动程序),那些成绩平平的入侵类驱动程序仍然可以在不做任何修改的情况下,编译到你的内核中。


具体来说,这里所有提到的攻击方式,都是以功能集驱动程序的方式在栈结构实现的,并且全部都添加在上面提到的“mac80211驱动框架”树状结构中。对于具有特征的攻击方式中,凡是在未打补丁的“mac80211驱动框架”的驱动程序找不到的,统统都会在这里明确地告知,类似的驱动程序有ath9k和iwlwifi。这就是说,之后绝大多数的攻击技术,并不需要您做深度挖掘和提供补丁程序之后才能使用,而是在最原始的Linux版本的内核上就可以使用。除非另有说明,否则这里所有的攻击方式,都是运行在没做任何修改的,版本等于或高于3.3.8的内核中。


2、芯片组和Linux驱动程序


每个网卡都需要有芯片。虽然市场上有数百种形状各异的网卡,但其实这些网卡所用的芯片也只是少数的几个,所以大多数的网卡因为使用了同一芯片,而可以使用相同的驱动程序,它们通常情况下也都是这么做的。因为对于驱动程序软件来说,即使不同的网卡,只要使用的是相同芯片,那么软件所看到的都是一致的。唯一真正的区别在于网卡有什么样的功率输出,或天线插孔的类型和可用性。所以,对于从事无线攻击的人员来说,选择购买什么样的网卡,首先要做的是决定要什么样的芯片组。


许多网卡广告宣称支持某些功能,例如支持802.11n和802.11ac。但请务必记住的是,使用这些功能,需要芯片组硬件和驱动程序软件的通力合作才能实现。许多Linux驱动程序在一些尖端技术上,是落后于最先进技术的,对于网络入侵,我们最需要关注的是802.11ac。如果您关心新功能的兼容性问题,一定要仔细检查驱动程序的支持程度。


(1)驱动程序中想要的特定功能


任何无线驱动程序都有两个非常渴望的功能。显然,其中最重要的一个功能是“监测模式”。另一个需要驱动程序一起实现的功能是“数据包注入”(packet injection)。数据包注入是指在一个在线网络中,通过大量发送任意格式数据包,进而影响该网络原有功能的能力。这种能力允许重现网络上的数据通信,加快对“有线等效保密协议”的统计袭击;也允许注入“解除认证数据包”(deauthentication packet),然后借助该数据包,可以将某个在线用户从AP接入点上踢掉,使其与网络断开。


(2)数据包注入


许多年前,借助于Abaddon公司发布的一个名为AirJack的工具,使“数据包注入”功能首次成为可能。AirJack是一个驱动程序,与Prism2芯片组和一套使用该芯片的应用程序一起工作。自AirJack发明以来的这几年,数据包注入的特性已被广泛添加到主流驱动程序中,所以随便找个网卡,基本上没有为了这个功能而去查找提供该功能的补丁程序的必要。


事实上,对“数据包注入”的技术支持已经发展得很好,现在,有两组不同的用户级“应用程序接口”编程库可以使用。应用程序可以通过“应用程序接口”,以一种跨驱动程序的方式完成无线网络中数据包的注入。第一组编写并发布的“应用程序接口”编程库被称为“无线连接的剪断器”(Loss Of Radio Connectivity,LORCON)。这组程序库目前已升级为LORCON2。


另一个支持注入的编程库被称为osdep,由较新版本的Aircrack-ng软件使用。不幸的是,现在有两个库来完成同样的事情,然而,这也许仅仅是程序开源领域里成熟度的一个标志。否则就不会有GNOME和KDE,Alsa和OSS,Wayland、Mir和Xorg等这么多对优秀的开源程序供我们使用。开放源码给我们的最大自由是选择权。如果您忙于选择哪款“窗口管理器”软件,或哪款“电子邮件提醒器”软件,或者想知道为什么某个程序的设计者不再积极地维护他们的某个程序,那么,只要您有时间发电子邮件,您只需要在邮件里问问RMS(Richard Stallman,自由软件基金会的创始人),作为这方面的行家,他会给您推荐你满意的开源软件的。


无论如何,LORCON和osdep都为应用程序开发人员提供了一组方便的“应用程序接口”,使他们的应用程序可以在不依赖特定驱动程序的前提下,发送自己定制的数据包。在mac80211得到广泛支持之前,想实现这样的注入功能是一件很困难的事。现在,大多数用户只须使用带LORCON支持库的“mac80211驱动框架”的驱动程序,即可轻松实现。下面汇总了在Linux操作系统上,支持的802.11数据包注入功能的应用程序中,使用这两个“应用程序接口”编程库的当前状态。另外,osdep和LORCON都分别为不同的驱动程序提供了类似的支持。

3、现代的芯片组和驱动程序


下面介绍的所有芯片组,都有积极地维护着的被合并到mainline版内核的Linux驱动程序,它们也很容易在当今市场上找到。当然,这个无线芯片组和驱动程序的功能列表清单并非详尽无遗。相反,这里只是一组最常见的、对Linux提供相当好的支持的芯片组名单。而那些不提供现代“mac80211驱动框架”下驱动程序的芯片组,还有那些太陈旧,以至于不能完成有效的黑客攻击的芯片组,则都未在列表中列出。


Linux无线网络来说,一般情况下,最大的讽刺是,Linux的内核对802.11n和802.11ac路由提供强大支持的同时,对802.11n和802.11ac客户端的支持程度,则似乎落后于其他平台。至此,有两个内核驱动程序在限制对802.11ac的支持。这两个程序分别是athlOk驱动程序和Intel公司的iwlwifi驱动程序。不幸的是,基于athlOk驱动的外部设备目前非常有限。


(1)Ralink(RT2X00)


Ralink公司(中文名叫“雷凌”)是规模较小的802.11芯片组制造商之一。Ralink公司的软件产品具有极好的程序开源支持,已经使用过的所有该品牌网卡都非常稳定。Ralink是在Linux上提供USB硬件接口的少数几个芯片组制造商之一,另一个制造商是Realtek公司的RTL8187芯片组。


像大多数芯片组一样,Ralink基本上已经有两个驱动程序系列。“历史遗留式”的驱动程序是独立的驱动程序,每个程序针对一个特定的芯片组。这些驱动程序在被广泛使用之前就提供了对黑客来说非常有用的功能,如数据包注入功能。Pedro Larbig收集保存了一组增强型的传统Ralink驱动程序。这些驱动程序可能都是最优化的独立驱动程序,并且都保留了专门针对802.11入侵而做的修改。不过,这些驱动程序也太陈旧了,就像前面所说的,连“历史遗留式”的独立式驱动程序都属于早期产物了,这些驱动程序当然也不例外,现在也当然不值得为要不要使用这些老的驱动程序而争论什么。


较新的Ralink驱动程序被统称为rt2x00。这种驱动程序现在根据“mac80211驱动框架”要求驻留在内核中。虽然这些位于“mac80211驱动框架”结构树中的rt2x00驱动程序并没有针对无线黑客入侵进行多少优化,但它的优点是可以在任何现代分布设备上使用。


(2)Realtek(RTL8187)


虽然这里所说的大部分驱动程序支持许多种网卡和为数不多的芯片组,但是使用RTL8187驱动程序的用户通常记得一种单一的网卡——Alfa网卡(阿尔法)。Alfa卡是一块USB接口的无线网卡,内置Realtek(中文名叫“瑞昱”)公司的RTL8187芯片组。该驱动程序具有和芯片组相同的名称。此驱动程序已被合并到mainline版内核好多年了,并且成绩斐然,令人印象深刻。尽管基于RTL8187芯片组和驱动程序的Alfa网卡多年来一直都是一个简单的选择,但该网卡本身不支持802.11的a、n和ac版本,所以这一缺点限制了程序在新设备上抓取数据包的能力。也就是说,对于数据包注入方面,这款网卡也可以作为排名第二的板卡。同时,这也是能工作在OS X操作系统上最早出现的外置式网卡芯片组和驱动程序。


(3)Atheros芯片组(AR5XXX,AR9XXX系列)


由于可扩展性和高质量开放源码的驱动程序,Atheros(中文名叫“钰硕”)的芯片组多年来一直深受黑客社群的青睐。虽然所有Atheros的802.11芯片组都可以完美地支持Linux操作系统,但基于Atheros的大多数无线网卡都不支持USB接口,而是支持PCMCIA接口。这意味着,随着笔记本电脑逐渐放弃使用PCMCIA总线,对外置基于Atheros无线网卡的接受度已经变得越来越棘手。Atheros生产其大部分芯片都是为嵌入式迷你PCI网卡的,或者是直接将芯片逻辑做到进入SoC中。可悲的是,如果一个Linux驱动程序“同时支持”USB接口和一个不支持USB接口的Atheros无线网卡,那就会变得不伦不类。


如果您足够幸运,有一块内置Atheros芯片的设备(之所以说“设备”,是因为在笔记本电脑中,很少能看到内置Atheros芯片的无线网卡),或者您想将一块迷你PCI卡部署到笔记本电脑或其他嵌入式设备中,那么下面的内容给出了当前驱动程序支持能力的解释。


MadWifi:MadWifi是一款“历史遗留式”的驱动程序,因其稳定性方面的不足而从未被合并到mainline版Linux内核中,如果您坚持想用Madwifi网卡,那么就像卡的名称一样,就等着疯掉吧。这款芯片最好的替代品就是ath5k或ath9k。


ath5k:这款驱动程序是MadWifi的合乎情理的继承者。性能很稳定,足以包含在vanilla版Linux内核中,并且像所有在Linux上的现代无线驱动程序一样,它使用“mac80211驱动框架”的堆栈结构。在许多使用AR5XXX系列芯片组的设备上,ath5k驱动程序都为其提供支持。不过,ath5k不提供对USB的支持,同时也不提供对802.11n标准的支持。


ath9k:作为块头比ath5k大的兄弟,ath9k后来居上,在Linux下的这些芯片组,基于802.11n标准提供了稳定的支持。虽然最初的驱动程序是由Atheros开发的,但现在是开放源码社群在维护它。ath9k同时也为后来的AR54XX各版本芯片组提供支持,除此之外,对AR91XX系列的各个版本,ath9k也同样提供支持。不过,ath9k和ath5k存在相同的不足,那就是ath9k设备也不提供对USB接口的支持。


ath10k:作为块头比ath9k大的兄弟,ath10k同样当仁不让。不过该版本除了增加对802.11ac标准的某种程度的支持之外,其他只是ath5k和ath9k的一个功能合集。


ath9k_htc:ath9k_htc是少数支持基于USB接口的Atheros芯片组的驱动程序。这些芯片组包括AR9271和AR7010。


carl9170:如果您有一个Ubiquiti SR71的USB设备,那么carl9170将是支持这个设备的第3款(注意这里的“第3”,意味着它的评价排名)驱动程序。曾经,carl9170源自并取代了ar9170usb驱动程序,而ar9170usb也曾经巧妙地取代过一款名为otus的驱动程序。如果分不清它们这几代之间的关系,那就难以想象到,同那个稳定的同行兼对手之间,这三代软件分别与ath5k、ath9k、ath10k之间存在一一对应的竞争关系。


(4)Intel公司Pro无线驱动(iwlwifi)


Intel公司的802.11芯片组通常内置在笔记本电脑中,并且与PCIe总线相关联。较新的Intel芯片组是由iwlwifi或iwlagn驱动程序支持的,这些驱动程序都被合并到了最新的Linux内核中。


Intel公司的芯片组通常都有很好的优势,那就是供应商基本上都是买主的坚实后盾。然而,事情都有两面性,在各外置网卡中几乎看不到基于Intel芯片的好卡,究其原因,就是对于Intel公司来说,没有令人信服的理由为了更方便破解支持802.11的驱动程序而加入任何需求。那么,如果您的笔记本电脑上,本来就带有一个集成Intel芯片组的无线网卡总可以吧?事实上,如果您有这样的笔记本电脑,出于测试目的使用这个网卡练练手也许没有问题,但要想当一个资深的黑客,就只能自己想办法,为这个内置的无线网卡接一个外置的天线了。


为什么在监测模式下,看不到基于802.11n或802.11ac标准的数据包呢?


在从事无线入侵黑客的眼里,在监测模式下,看不到基于802.11n或802.11ac标准的数据包,其最大的问题是这两个标准都使用了“多输入多输出”(MIMO)技术。一言以蔽之,就是MIMO允许单个适配器同时发送多个数据包流,这就是为什么能在界面上同时看到802.11n和802.llac所有小天线图标都处于连接状态的主要原因。这就意味着,攻击者要想看到无线网卡所捕获到的全部通信数据包,就也得具备同时接收和重组两路,甚至是三路独立传送的数据包流。对于任何一个流,即使是有一个字节未成功收到,那么您也不得不扔掉与这个字节相关的完整数据包。

4、网卡


既然芯片组和驱动程序已经考虑好了,下面该决定用什么网卡了。记住,内置的无线网卡将提供基本的监测模式和数据包注入支持,这是赔率很高的方案,因为您可能不需要再购买任何其他东西,只需要试一下就知道结果了。这里的目标是编制一张列表,在表格中列出各网卡的重要特征,最后,您会看到一张“推荐网卡”的列表,供您根据列表购买一款自己感兴趣的网卡。


购买无线网卡的过程中,最令人丧气的事,就是做完了所有的调查,也从中找到恰到好处的那一款并购买回家时,发现其实拿到的是一个硬件版本稍有不同,但芯片组却完全迥异的无线网卡。事实上,包装盒里的网卡和您花钱想买的网卡,唯一的相似之处,就是长得都跟包装盒里的网卡的形状一样。


不幸的是,这种情况经常发生,并且束手无策,除非所购买无线网卡的这家店里有无条件退货的规定。一个提供了最全面描述的列表,包括从产品到芯片,以及驱动程序的网站名叫“Linux无线产品”(Linux Wireless)。


(1)发射功率


发射(Transmit,TX)功率当然是指您的网卡可以把数据传送到多远的距离,单位通常是毫瓦(mW)。大多数“客户级”(consumer-level)的无线网卡的发射功率是30毫瓦(+14.8 dBm,单位全称是decibel milliwatts)。“专业级”(professional-grade)的基于Atheros的无线网卡,在UbiquiLi系统中的发射功率是300毫瓦(+24.8dBm)。Alfa的AWUS306H无线网络,目前握有十足的发射功率金牌,据称提供1000毫瓦(+30dBm)的功率。虽然发射功率很重要,但随便指定一张无线网卡,不要忘记它是与灵敏度参数息息相关的。


(2)灵敏度


很多人判断一张无线网卡的优劣,往往只重点关注发射功率,而忽视网卡的灵敏度,这种看法是很肤浅的。假如有一张发射功率很大,但灵敏度很小的网卡,虽然能够将数据发送到很远的距离,但由于发射功率和灵敏度明显不匹配,最终这块网卡有可能无法接收对方的回复。人们经常会忽略灵敏度,是因为无线网卡的广告中,较少会强调这个参数的重要性。如果能找到一个网卡的产品性能参数表,表上应该会列出灵敏度,该值通常也是以dBm为单位的。不过该值一般是负值,并且在测量灵敏度的时候,除去负号后的数字越大,灵敏度越好(如灵敏度为-90dBm的就比灵敏度为-86dBm的要好)。


一般“客户级”的无线网卡的灵敏度的标准值是-80~-90dBm。“专业级”的高端网卡则可能到达-93~-97dBm的灵敏度。


每增加3dBm的变化代表灵敏度加倍,比如信号源和测量的一方正在相向移动;每减少3dBm的变化代表灵敏度减半,比如信号源和测量的一方正在背向移动。


如果发现需要把mW毫瓦转换成dBm,不要害怕。dBm功率恰巧是以10为底的毫瓦功率的对数的10倍。公式是:10×log10(mW)=dBm,或mW=10dBm/10。


例如上面的10×log1030(mW)=14.8dBm,以及30mW=1014.8dBm/10。


(3)天线的支持


决定购买哪种网卡,最后要考虑的一项就是天线对网卡的支持。什么样的天线能够支持您的网卡?您需要先由天线开始考虑吗?如果您的工作职责就是确保公司的无线网络安全,或者是对公司的无线网络安全进行审计,那您一定得想有一个或两个相当好的天线,这样才能精确地测量到您公司的信号泄漏到外边有多远。


目前,您的无线网卡上,通常会有0个、1个或2个天线插孔。如前所述,802.11n卡由于支持“多输入多输出”(MIMO)模式,所以您的网卡至少需要再安装两个外置天线(即使您的笔记本电脑中已经内置了一个无线网卡)。无线网卡与天线卡之间起连接作用的缆线连接器,被称为“小辫子”(pigtail)。在这里,小辫子的作用仅仅是在卡上的任意插孔和连接天线上的任意插孔之间起到连接的作用。使用USB接口的外置无线网卡的好处之一,就是几乎所有的插座都无一例外地使用了相同的接口,该接口称为“反极性SMA”接口(reverse polarity SubMiniature version A,RP-SMA)。


幸运的是,大多数天线与一个特定的连接器相连。这个连接器称为“N型连接器”(N-type connector)。特别需要说明的是,天线端通常是母头的“N型连接器”。这种标准的连接器接口意味着朋友间可以互借天线,而不用担心因为线缆接口和天线接口不是同一类型而无法使用。其他天线连接器类型也不是没有,所以在您假定天线有一个N型连接器之前一定要检查一下。表1详细列出不同连接器的类型,以及其生产商的名称。

表1  不同连接器的类型及其生产商

MMCX(Miniature Microax rf Coaxial Connectors),微小型射频同轴连接器,主要用于在对系统体积、重量都有要求的小型通信、网络设备之间连接射频同轴电缆。


(4)推荐的网卡


推荐以下三种网卡。它们有高于平均水平的灵敏度和发射功率,Linux下的稳固支持,以及外接天线连接器。它们大多也支持OS X和Windows系统上的数据包注入和监测模式。


Alfa无线网卡(详见表2),逐渐开始为众人所知,是802.11狂热爱好者的主要选择。从支持802.11g标准以来,这种网卡的缺点主要是对跨平台系统的支持较少,以及价格较高。因为Alfa的产品线一直处于拓展状态,为了与新产品进行区分,我们习惯上称早期原始的Alfa中的无线网卡为“银色Alfa”,其型号为AWUS036H,之所以这样称呼,是因为该款网卡的颜色就是银色的,如图8所示。

表2  AlfaAlfa AWUS036H无线网卡的参数

图8  银色Alfa无线网卡

虽然“银色Alfa”无线网卡在很长的时间里我们都感觉挺好,但是它已被更新的型号所取代。使用“银色Alfa”网卡的朋友们,是时候认真地考虑一下,将其升级为一块更现代的无线网卡了。


型号为AWUS036NEH的“黑色Alfa”(见图9),是Alfa系列中一款支持802.11n的基本版无线网卡,也是“银色Alfa”网卡的缩减版本,其性能指标详见表3。与其他支持802.lln的网卡相比,它最大的变化就是体形明显较小。不过可悲的是,这款Alfa无线网卡并不支持OS X操作系统上的KisMAC软件。其实,自“银色Alfa”以后所有其他版本的无线网卡都不支持KisMAC软件。

图9  黑色Alfa

表3  Alfa AWUS036NEH

型号为AWUS051NH的“金色Alfa”无线网卡(如图10所示)是Alfa系列中一款支持5GHz频率的无线网卡(详见表4),不幸的是,这款无线网卡并不支持OS X操作系统

图10  金色Alfa

表4  Alfa AWUS051NH

SR71-USB(见表5)是一款较好支持Windows操作系统的无线网卡(如图11所示)。如果您正在寻找一块既可以稳定地运行在Windows上,又能同时提供数据包注入功能,还能在监测模式下监测所有基于802.11标准的通信数据包的无线网卡,那么就要考虑SR71了,配上“CommView for Wi-Fi”软件就可以完成上述所有需求。这种组合要比在CACE系统上,配上“AirPcap NX”软件的组合,便宜得不是一星半点。

表5  Ubiquiti公司的SR71-USB

图11  SR71-USB

Tamosoft软件公司是“CommView for Wi-Fi”软件的创造者,在加配一个小适配器装置后,也可以支持802.llac标准。


5、天线


市场上有不少各式各样的遵从802.11标准的天线。如果您之前从来没有购买或看到过一款,那么,与天线相关的术语可能就会让您找不着北。所以在开始之前,需要学习一些基本术语。“全向天线”(omnidirectional antenna)是一种在所有方向上都能够发送和接收无线信号的天线。“定向天线”(directional antenna)是一种可以将信号集中于某一个特定的方向进行发送和接收无线信号的天线。两种类型的天线在不同情况下各有各的用武之地。


如果您以前从未使用过天线,千万不要抱着“最贵、最大的就是最好”的思想,初次去买的时候,逢大个的就买,最后只能是“只买贵的,不买对的”收场。相反,一个便宜的“磁性底座天线”(magnetic-mount omnidirectional antenna)就可以收到相当不错的效果,而其售价只要20或30美元。如果可行,先从懂行的朋友那里借个天线试试手,也不失为一个好办法,至少你可以知道,当前借到的这个天线还需要再增加点什么功能就可以满足自己的需要了,借此您也可以估算一下心目中的天线大概需要花多少钱了。


如果您有机械和电气方面的爱好,可以用一些易拉罐自助创建一个便宜的波导天线(waveguide antenna),造价仅为几美元。这些摇摇晃晃的自制土天线,其接收效果却并不见得差,互联网上随处可以看到这类故事,您的天线也可以达到很好的效果。这需要您花上数小时,造出一个什么也看不出来,但却有一个带洞的罐和一个带奇怪的辐射模式的1dBi或2dBi的增益的天线。当然,如果感觉这个小爱好还算有趣,那么不妨在网上找找,必定能找到很多这样的DIY指南。


天线好坏的判断指标是“天线灵敏度”,它的单位是dBi(decibel isotropic,各向同性上的功率对比)。最后是一个关于天线灵敏度比较的提示:“天线灵敏度”就是天线指标的一个对比值,但不要随意进行两个dBi数值大小的比较,因为这样可能会误导您对它们的直观印象。究其原因,是因为“天线灵敏度”每增加3dBi,天线的有效功率覆盖范围就会加倍。也就是说12dBi的天线的功率是9dBi的天线功率的两倍。


(1)基本部件


有相当多不同类型的天线,甚至有些博士论文通篇都是论证如何用不同的技术改进其性能的。当然,此处不会讨论这类内容,这里的目的是为您提供一些实用的知识,帮助您选择正确的天线,最后完成手边所要做的工作。


天线既不是变戏法,也不会向信号中注入魔幻的力量,而是将无线网卡正在产生的信号集中起来,并准确地发出去,或者接收来自外部的信号。可以想象一下,您的网卡产生的信号覆盖范围,其形状像一个三维球体(确切地说不是球体,但是先这么假定)。首先我们想象一下一个细管的喷泉,当喷口垂直向上,水压适中时,水会经由喷口向四周散开,形成一个类似没柄的苹果把儿处的形状,如果下面也对称想象成这样的形状,那么现在无线网卡产生的信号覆盖范围就是这样的一个形状,基于这个三维模型的想象,全向天线的工作原理基本上就是在这样一个竖放的“苹果”,可以增大发射功能,这个苹果不是等比例地扩大,而是由于电磁力的相互作用,两极的磁力相互抵消改变不大,但四周的范围却被扩大,这时的“苹果”被压扁,变成一个圆形的矮胖“大南瓜”平放在地面上的形状,这时,原本属于“大南瓜”上面和下面的垂直方向的能量被“压”到“大南瓜”侧面水平方向上的范围内,从而增加了这一区域的功率,所以这样在水平方向上的信号传得更远,但垂直方向上却达不到原来那么远。更重要的是,全向天线的增益越高,这个“大南瓜”的形状就越扁平。定向天线以同样的方式工作,只不过它将信号集中在一个方向发送,而在另一个相反的方向上接收信号。要记住一个重要特点:无论是哪种天线,信号发射的功率值一直是保持不变的,但信号发出的功率范围却是可以变化的,而所能变化的,只是天线的功率覆盖范围的形状。如果仍使用上述比喻,那就是“大南瓜”内的发射器功率是个恒定的常量,但“大南瓜”的厚度是可以变的,越接近于原来的球体,水平方向上“大南瓜”能到达的区域越小;反之,“大南瓜”越扁,水平方向上能达到的区域越大。


如前所述,全向天线的功率覆盖范围近似接近于“大南瓜”的形状,由于实施了变形,所以扩大了原来的功率发射范围。如果您想开着车,借助于天线在街上寻找无线网络,那么全向天线可能是该工作的最佳工具。不过,在某些情况下,如果希望能够更精确地调整信号,那么换用一个定向天线则会非常方便。试想一下,如果将全向天线中的“大南瓜”进行垂直中轴的等分,那么分后的每一个“扇形饼”就是一个定向天线的功率覆盖范围的形状。其中“扇形饼”两个切边的夹角称为“波束宽度”(beamwidth),定向天线比普通定向天线的波束宽度要小。这一点不难理解,夹角内的总功率是一定的,夹角越小,则“扇形饼”向远处延伸的范围越大。如果夹角足够小,那么全向天线中将“大南瓜”进行“压扁”的操作也是多余的,进而定向天线就简化为一个“锥体”的形状(试想一下夜晚打开手电筒,光柱所形成的形状),这时,“波束宽度”越小,发射能量就越集中,发射的范围就越远(例如,我们在大声喊远处的人的时候,有时会用双手在嘴边形成一个喇叭状,以使声音能传得更远)。不过,“波束宽度”也有缺点,那就是很难瞄准对方。


(2)天线特性


每一个无线黑客至少需要一个全向天线。全向天线基本上有两种类型:9~12dBi的“基站天线”(base-station antenna)和5~9dBi增益的“磁性底座天线”(magnetic-mount antenna)。“磁性底座天线”的设计原理是利用磁性直接吸附在汽车的顶部,“基站天线”的设计是可以直接插入到一个AP接入点设备中。


“基站天线”通常外套一个白色PVC管,长度是30或48英寸。长度越长,增益越高,并且价格越贵。当“战争驾驶”时,从“可接收性”(reception)上来说,尽管增益较低,“磁性底座天线”一般比“基站天线”接收更好些,这一点不难理解,汽车本身就是一个大铁盒子,对无线信号具有很强的屏蔽作用,所以在汽车里边,接收效果无疑会差很多。不过,如果您想在办公楼里使用全向天线,12dBi增益的“基站天线”效果明显更好。


接下来说一下各种“定向天线”。到目前为止,最流行的是廉价的波导天线(有时称为Cantenna],不妨称为“手工易拉罐天线”)。一个典型的“手工易拉罐天线”可以获得12dBi的增益。相比波导天线的平均性能上有较大提升的是“八木天线”(Yagi)。增益为15和18dBi的“八木天线”很容易找到,但它们往往比波导天线明显贵很多。


(3)全向天线


“全向天线”通常是用磁性底座将天线吸附在一辆汽车的车顶。这些天线一般配置比较低,不引人注目,增益通常是5~9dBi范围内,价格为20~40美元。对于喜欢“战争驾驶”的黑客来说,一个基本的“磁性底座全向天线”是必备的。


(4)定向天线


波导天线,俗称“手工易拉罐天线”(Cantenna),一般都比其他的定向天线便宜,并且有大约30度左右的“波束宽度”(beamwidth)和15dBi的增益范围。虽然比起专业天线商品,这种天线在执行任务的时候并不完全理想,但这种形式的天线可以很容易地由成套的模块半成品或零配件制作手工组装完成。


板状天线(panel antenna)通常有13~19dBi的增益,和35~17度的“波束宽度”。“波束宽度”越小,意味着增益值越大。这些天线一般售价都在30美元~50美元之间。对喜欢“渗透测试”攻击的黑客来说,板状天线是个不错的选择,究其原因,板状天线的面板是一个平板,相比于其他的定向天线,更容易隐藏。


八木天线(yagi antenna)通常可以有30度的“波束宽度”和15~21dBi的增益。当大多数人想到“长相很吓人”的天线时,可能就会想到八木天线。


抛物面天线(parabolic antenna)可以提供最大的增益和最窄的“波束宽度”。一个标准的抛物面天线具有24dBi的增益和5度的极窄的“波束宽度”。“波束宽度”这么窄,就意味着很难“瞄准”目标,换句话说,就是在安装这种天线的时候,为了进行两点间“点对点”(point-to-point)的回程线路(backhaul)测试,所以必须进行很专业的安装。


(5)射频放大器


如果在您的系统里添加一个射频放大器(或双工放大器的发送模式),那么这将大大增加系统的发射范围。如果再增加一个接收放大器(或双工放大器的接收模式),也将同样大大提高天线的接收灵敏度。不过,缺点是,放大器(amplifier)在放大信号的同时,也放大了信号噪音。因此,我们会建议先使用“定向天线”收发信号,然后再使用放大器放大信号。如果还是觉得放大的效果不够,或者如果您已打算好不惜花上数百元来改进无线设备,那么下面就是要记住的基本思路。


任何在市面上能见到的802.11放大器都是双向收发的,这意味着系统可以在需要发送的时候自动切换到发射模式,而在有数据到达时自动切换到接收模式。在802.11的Wi-Fi无线网络通信中,一个只有发送功能或只有接收功能的放大器是没有用处的。放大器的另一个重要特征是它的增益控制(gain control),一般放大器具有固定增益型、可变增益型或自动控制增益型三种。可变增益型放大器因为增益效果可变,因而使用灵活;固定增益型放大器的成本更低;自动控制增益型放大器则有智能,可以将放大器的发射功率始终保持在一个设定的值上,也就是说,不必担心输入端现在提供的是多大功率,因为放大器会“多增少降”,进而使之平衡在所需要的功率点上。如果您打算从上述三种型号中选择一种,那么建议使用一个自动控制型增益放大器。RFLinx 2400 SA是一个不错的自动控制型增益放大器,适合于那些从事802.11无线网络攻击的黑客们。


6、蜂窝数据卡


在通过“战争驾驶”模式采集无线信号的时候,蜂窝数据卡(cellular data card)是必不可少的。有了这些卡,你就可以在采集数据的同时,实时下载地图和Google Earth(谷歌地球)上的实时地理图像,还能从互联网上下载预先忘了下载的任何软件工具。令人惊讶的是,这些卡大部分都在Linux操作系统上有较好的表现。从操作系统的角度来看,系统会把这些卡作为一个串行设备(serial device),该设备与操作系统之间通过基本的AT指令集进行通信。你几乎可以将该设备看作是一个拨号连接时使用的调制解调器。


如果您正在考虑购买一个蜂窝数据卡,那么在订购之前,您需要先核查一下所要购买的蜂窝数据卡是否支持您的无线网络系统所需要的那些特定模式。比如AT&T公司的蜂窝数据卡不支持Linux操作,所以您也别指望该公司的技术支持来帮助您解决因他们公司蜂窝数据卡而引起的Linux的问题。通常情况下,大多数中国华为公司的蜂窝数据卡(Huawei card)可以很好地运行在Linux操作系统上。


7、GPS


许多基于802.11协议的扫描工具都可以使用“全球定位系统”(Global Positioning System,GPS)接收器。这意味着,扫描软件可以把从GPS接收器读到的经度和纬度与一个给定的AP接入点关联起来。对于GPS接收器,一个可喜的地方在于几乎所有可以连接到计算机的接收器都使用统一的通信协议,这个通信协议被称为“美国国家海洋电子协会”(National Marine Electronics Association,NMEA)标准协议,简称“NMEA协议”。只要你有一个可以使用NMEA协议的GPS设备,那么它可能就会在您的操作系统上很好地工作。


(1)鼠标式和手持式接收器的对比


GPS接收器有两个系列:一种是鼠标式,另一种是手持式。鼠标式GPS接收器是一种后面拖出长长连线的GPS接收器,因为像鼠标,所以有了这样的名称。鼠标式GPS接收器本身不能单独使用,只能跟别的设备联合起来使用。比如与笔记本电脑或PDA一起使用。有些鼠标式GPS接收器是防雨的,这种设计无疑是可以将它贴附到汽车的车顶上。其他的设计也有在车内使用的。通常情况下,鼠标式的GPS接收器都使用USB接口,不过,也有使用其他连接方式(比如蓝牙通信)的。不推荐使用蓝牙通信的GPS接收器,因为蓝牙也工作在2.4GHz的范围内,当您进行“战争驾驶”操作的同时,蓝牙的无线信号会干扰天线的工作。


如果您已经有了一个GPS接收器,先插到电脑上,看看您的操作系统是否能认出这个设备,只有认出设备才有继续的可能。在不同的操作系统上,完成这一识别动作的操作方式差别很大,下面分别说明。在Linux系统上,在计算机上插入该设备后,还应该通过dmesg命令检查一下输出信息,运气好的话,您会看到一个“/dev/ttyUSB0”列表项弹出,这就意味着Linux操作系统识别到这个设备了,否则的话,就说明该设备不支持Linux。在OS X操作系统上,用户几乎肯定需要安装一个“USB转串口”的转换器驱动程序,否则不能识别。在Windows操作系统上,即使用户拥有并安装好所有必需的驱动程序,可能还需要运行一款名为GPSGate的软件,然后应用程序才能从这款GPS接收器中实时接收GPS信息。GPSGate之所以可以帮助应用软件和设备进行交互操作,是因为程序的作用是创建一个虚拟串口,然后将该GPS接收器所用的USB口或蓝牙口数据转到这个虚拟串口上,这样使用GPS数据的应用程序只需要同这个虚拟的串口进行通信就行了。


如果您还没有GPS接收器,并且正在寻找合适的GPS接收器,以便满足您想购置一套精良“战争驾驶”行头的念头,那么推荐使用GlobalSat公司的BU-353。这款GPS接收器的“USB转串口”接口使用的是Prolific公司的p12303芯片组,具有可靠的跨平台的支持特性(注意:Windows 8除外)。这种鼠标式GPS接收器还支持“广域增强系统”(Wide Area Augmentation System,WAAS),从而可以显著提高GPS坐标的准确度,大约35美元就可以买到。


(2)Linux上的GPS


Linux操作系统上,GPS接收器基本上就是一个串行设备。如果您有一个Garmin公司的USB接口GPS接收器,那么就需要使用garmin_gps驱动程序。如果您的GPS接收器采用的是Prolific公司的pl2303芯片组的BU-353设备,那么在Linux操作系统上,该设备的驱动程序使用相同的名称。


如果您的GPS接收器不能正常工作,那么您需要卸载并重新加载“USB转串口”转换器的内核模块(kernel module)。这个操作可以通过下面的命令来完成。

假设上面的编译操作完成,那么在“/dev”目录中,应该会看到有某种“字符设备”(character device)了(例如“/dev/ttyUSB0”),这意味着,驱动程序已安装成功,之后就可以从该设备上读取到GPS设备的信息。


这个时候,即使您已顺利完成驱动程序的加载操作,并且设备也开始正常工作,但是其实您也只是保证了设备正常地接入到Linux操作系统中,要读取GPS信息,还需要有两步操作步骤。第一步是运行gpsd程序,该程序是一个GPS读取的守护进程,其作用是将GPS信息读取到内存中,而当有应用程序向它提出请求时,它又会把GPS信息给这个应用程序。这样做的优点很明显,那就是多个不同的应用程序都可以按各自的节奏随意向它请求当前的GPS信息。出于调试目的,您只需要运行“gpsd–D 2–n–N/dev/ttyUSB0”命令即可。如果系统开始按“国家海洋电子协会”的NMEA协议的格式的GPS提示信息开始滚动(由于数据太多,所以只能滚动显示),说明当前gpsd正处于良好状态。如果您仅仅是拿到GPS信息即可,那么gpsd的滚动信息就可以直接读到,但要结合具体的应用,就还需要运行执行上面提到两个操作步骤中的第二步,第二步操作就是运行使用GPS信息的应用程序,由于gpsd的存在,这些程序都可以独立地,不受任何影响地,各自同时从gpsd处获得当前的GPS信息。一个方便的实用工具名叫“cgps”(即curses gps)。在Linux的命令行中,不需要带任何参数,只要运行cgps,该程序就会自动连接到上面提到的gpsd运行实例上,并开始显示当前的所有GPS信息。


(3)Windows上的GPS


Windows 7操作系统中,“设备管理器”(Device Manager)会自动检测硬件的变动,并加载正确的驱动程序,以及给该驱动程序分配合适的串口(COM port)。不幸的是,即使在Windows 7上运行很好的驱动程序,在过渡到Windows 8之后,驱动程序中也明文规定禁用BU-353芯片。这个时候,Windows 8的用户(也许叫“受害者”更合适)要想使用这个芯片,只能安装一个旧版本的驱动程序,以便作为一个替代方案。在Windows 8中,BU-353驱动程序的主文件有两个,其中ser2pl.sys用于32位Windows 8中,ser2pl64.sys用于64位的Windows 8中。替代方案详细的方法在网上可以找到。图12显示了一个在64位Windows 8.1操作系统中BU-353驱动的详细信息,注意其中ser2pl64.sys的版本是一个较早的版本号3.3.2.102。

图12  64位Windows 8.1操作系统中BU-353驱动的详细信息

(4)Macs上的GPS


默认情况下,对基于p12303芯片组的“USB转串口”转换器的驱动程序,OS X操作系统并没有提供过滤产品。但是在该芯片生产商Prolific公司的主页上可以很容易找到这样一条信息,那就是在安装p12303的驱动程序以后,插入BU-353设备,系统会创建一个新设备“/dev:”。

KisMAC知道如何与此设备进行通信。该程序是一款运行在OS X操作系统上流行的被动式扫描器名称。


四、结语


本文简要介绍了与802.11无线网络安全相关的各项内容,并包括被动式扫描器和主动式扫描之间的区别。希望您对无线网络完成一次成功的攻击所需要的装备有一个完整的理解。总的来说,这需要一套802.11黑客工具包,包括天线、网卡、芯片组、信号放大器、GPS。同时,也应该了解,哪些芯片组在Linux下可得到最好的支持,哪一款网卡适合对无线网络实施测试和攻击

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】
登录查看更多
0

相关内容

IEEE 802.11 是如今无线局域网通用的标准,它是由 IEEE 所定义的无线网络通信的标准。
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【资源】100+本免费数据科学书
专知会员服务
105+阅读 · 2020年3月17日
Gartner:2020年十大战略性技术趋势, 47页pdf
专知会员服务
74+阅读 · 2020年3月10日
【教程推荐】中科大刘淇教授-数据挖掘基础,刘 淇
专知会员服务
78+阅读 · 2020年3月4日
智能交通大数据最新论文综述-附PDF下载
专知会员服务
103+阅读 · 2019年12月25日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
【白皮书】“物联网+区块链”应用与发展白皮书-2019
专知会员服务
91+阅读 · 2019年11月13日
5G时代:北京移动业务支撑系统 DevOps 实践
DevOps时代
15+阅读 · 2019年6月13日
大数据安全技术浅析
计算机与网络安全
14+阅读 · 2019年4月24日
ZigBee 网络安全攻防
计算机与网络安全
13+阅读 · 2019年4月15日
社会工程学之伪装
计算机与网络安全
4+阅读 · 2019年1月2日
逆向 | C++ 加壳程序的编写思路
计算机与网络安全
9+阅读 · 2019年1月1日
IPSec | IKE密钥交换原理
计算机与网络安全
18+阅读 · 2018年12月23日
网络安全态势感知
计算机与网络安全
25+阅读 · 2018年10月14日
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
长文 | LSTM和循环神经网络基础教程(PDF下载)
机器学习算法与Python学习
14+阅读 · 2018年2月28日
【区块链】区块链是什么?20问:读懂区块链
产业智能官
8+阅读 · 2018年1月10日
Arxiv
34+阅读 · 2019年11月7日
Arxiv
6+阅读 · 2018年11月1日
Arxiv
23+阅读 · 2018年10月24日
Arxiv
3+阅读 · 2018年3月29日
Arxiv
25+阅读 · 2018年1月24日
Arxiv
26+阅读 · 2017年12月6日
VIP会员
相关资讯
5G时代:北京移动业务支撑系统 DevOps 实践
DevOps时代
15+阅读 · 2019年6月13日
大数据安全技术浅析
计算机与网络安全
14+阅读 · 2019年4月24日
ZigBee 网络安全攻防
计算机与网络安全
13+阅读 · 2019年4月15日
社会工程学之伪装
计算机与网络安全
4+阅读 · 2019年1月2日
逆向 | C++ 加壳程序的编写思路
计算机与网络安全
9+阅读 · 2019年1月1日
IPSec | IKE密钥交换原理
计算机与网络安全
18+阅读 · 2018年12月23日
网络安全态势感知
计算机与网络安全
25+阅读 · 2018年10月14日
Python3.7中一种懒加载的方式
Python程序员
3+阅读 · 2018年4月27日
长文 | LSTM和循环神经网络基础教程(PDF下载)
机器学习算法与Python学习
14+阅读 · 2018年2月28日
【区块链】区块链是什么?20问:读懂区块链
产业智能官
8+阅读 · 2018年1月10日
相关论文
Arxiv
34+阅读 · 2019年11月7日
Arxiv
6+阅读 · 2018年11月1日
Arxiv
23+阅读 · 2018年10月24日
Arxiv
3+阅读 · 2018年3月29日
Arxiv
25+阅读 · 2018年1月24日
Arxiv
26+阅读 · 2017年12月6日
Top
微信扫码咨询专知VIP会员