多伦多书苑

黑客大曝光:无线网络安全(第3版)

1.2 “服务发现”的基本知识

在攻击一个无线网络之前,你需要找到一个无线网络,这需要借助扫描类(也称服务发现类,后面混用这两个概念)的工具。有相当多各式各样的工具都可以满足我们对这一功能的需要,只是这些工具都可以归于两大类:“被动式”(passive)或“主动式”(active)服务发现工具。被动式 服务发现工具的原理是在一个给定信道(channel)上,监听无线信号的任意数据包,进而通过分析这些数据包来确定哪些客户端正和AP接入点进行通信。主动式 服务发现工具的原理更基础,它们向目标主机主动发送希望得到回应的“探测请求”(probe request)数据包[1]。在攻击任何无线网络之前,了解和选择顺手的工具都是一个重要的步骤。随着对“战争驾驶”[2](war driving)的一些参与实践,本节涵盖了网络发现所需的软硬件的基本原则。下一章将深入研究现今可使用的主要工具。发现无线网络,首先应该了解主动和被动扫描的基础知识。

⚡ 主动式扫描

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

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

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

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

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

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

嗅探器、搜寻器、扫描器

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

⚡ 被动式扫描(监测模式)

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

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

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

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

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

✔ 主动扫描应对措施

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

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

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

大多数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接入点,但那个坐在咖啡店里的攻击者却可以信手拈来地捕获到该请求,并加以利用。总之,网络采用不广播“服务集标识”信息的隐藏方式,对攻击新手来说,攻击变得稍微难了点,对更多熟练的攻击者来说不过是徒增一小步操作而已。

✔ 被动扫描应对措施

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

再来看看无线协议的模式,如果你的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接入点几百英尺之内的,和那些找不到你绝不罢休的人来说,这种方式仍然无法让你达到完全隐身。

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

当网卡处于“监测模式”时,你可以看到在一个给定的信道上的所有802.11通信,那么如果你只想看看一个较低层次的数据是什么,怎么办?如果你只想看看在一个给定的频率或802.11信道运行的是什么系统,怎么办?也许你想知道为什么你的邻居把他的网络由原来的信道调切到了第13信道(美国法律规定,不使用第13信道[8])?你想找到原因,因此可以问他为什么这样做?也许你更想知道的是,邻居的微波、无线电话、婴儿监视器等是在哪里发出无线干扰的,知道这些信息后,就可以更准确地定位他的网络位置了。

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

作为频谱分析领域的原创者,MetaGeek公司推出了一款基于USB“加密狗”(dongle[9])接口的频谱仪,名叫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接口[10](不过,使用该接口,需要另配适配器)。读者从Oscium公司挑选入门级的WiPry,其价格比MetaGeek入门级的Wi-Spy低100美元。图1-7显示的是WiPry扫描到的可视化数据通信界面,扫描的范围是802.11的13信道。也就是在美国法律规定不使用的那个802.11信道。

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

如果你想玩一个2.4GHz的频谱分析仪,你会发现很难找到比WiPry更合适的了。它比Wi-Spy便宜(当然,这里有个假设前提,就是你已经有了一个iPhone手机或类似的其他手机);用户界面反应更灵敏;其移动便捷的优势,使其从形式方面来看更加方便。如果你对WiPry的产品有兴趣,可以从其网站上获得更多细节,该公司网址是:http://www.oscium.com

✔ 频谱分析的应对措施

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


  1. 一旦得到目标主机的回应,就可以通过分析回应的内容来确定所要的信息。——译者注
  2. 战争驾驶,指通过驾驶车辆,在目标区域往返等行为来进行Wi-Fi无线接入点探测,可在车辆内部使用诸如PDA、笔记本电脑等设备。根据驾驶的工具不同,类似的还有“战争单车”(war biking,通过自行车、电动车、摩托)、“战争徒步”(war walking,通过步行)、“战争飞行”(war flying,通过飞机)等。——译者注
  3. 实现主动扫描的工具正是这样的一个程序(从功能的角度上来看,主动扫描工具也是网络客户端的一种)。——译者注
  4. 任何国家或组织使用某频段的无线频率都需要通过国际组织IEEE的统一授权,但为了增加灵活性,IEEE在分配频率带宽时,对某些频段不做硬性规定,任何单位或组织可以不向国际组织申请而直接使用,如2.4GHz频段就不需要授权,工业、教育、医疗都可使用。2.4G指的是2.4~2.5GHz。在这个频段内的某个连续70M区域内,再等分为14个信道,每个信道5M,其余部分作为“隔离带”。Wi-Fi的带宽是22M,所以一次要占用5个信道。这相当于并排14个车道的高速公路上,有一个有5个车道宽度的车在行驶,任何车道都可用,但一次必用相连的5个车道,并且最多只能有3辆这样的车并排走。——译者注
  5. 服务集标识说得通俗一点,就是我们平时打开手机Wi-Fi无线发现的无线网络名称,例如“TP_LINK_XXXX”“CMCC”“ChinaNet”。——译者注
  6. 即AP接入点忽略掉这个没有明确目的的“探测请求”,就可以避免被对方扫描到。——译者注
  7. 空字符(null),不是空格字符,空字符一般用来表示字符串的结尾,所以这里“插入一些空字节”表示让SSID的值显示,但显示为空白的。——译者注
  8. 美国法律规定不使用第13个信道的原因众说纷纭,确切说法不得而知。也许是14个信道中,不能同时使用3个Wi-Fi,而使用两个Wi-Fi时,12个信道就足够了。也许是因为13在西方是个要想办法避讳的数字。——译者注
  9. dongle一词在计算机领域,一般是指某个硬件上以软件方式实现的一个软件保护程序,其作用很像是家里负责守门的看门狗,所以俗称加密狗或软件狗。——译者注
  10. lightning接口是苹果公司推出的高速多功能接口。配置的目的很显然是为了使其能与苹果手机进行对接。——译者注
Author:

退出移动版