03-伪AP检测技术研究

# 伪AP检测技术研究

0x00 简介
=======

* * *

随着城市无线局域网热点在公共场所大规模的部署,无线局域网安全变得尤为突出和重要,其中伪AP钓鱼攻击是无线网络中严重的安全威胁之一。

受到各种客观因素的限制,很多数据在WiFi网络上传输时都是明文的,如一般的网页、图片等;甚至还有很多网站或邮件系统在手机用户进行登陆时,将帐号和密码也进行了明文传输或只是简单加密传输(加密过程可逆)。因此,一旦有手机接入攻击者架设的伪AP,那么通过该伪AP传输的各种信息,包括帐号和密码等,就会被攻击者所截获。

本文主要从理论上探讨伪AP钓鱼攻击的检测和阻断技术。

0x01 无线网络基础知识
=============

* * *

### 基本术语

* AP(Access point的简称,即访问点,接入点):是一个无线网络中的特殊节点,通过这个节点,无线网络中的其它类型节点可以和无线网络外部以及内部进行通信。
* Station(工作站):表示连接到无线网络中的设备,这些设备通过AP,可以和内部其它设备或者无线网络外部通信。
* Assosiate:连接。如果一个Station想要加入到无线网络中,需要和这个无线网络中的AP关联(即Assosiate)。
* SSID:表示一个子网的名字,无线路由通过这个名字可以为其它设备标识这个无线路由的子网。设备进行扫描的时候,就会将相应SSID扫描到,然后就能够选择相应的SSID连接到相应的无线网络(当然不扫描,理论上也可以直接指定自己事先已经知道的ssid进行连接)。SSID可以和其它的重复,这样扫描的时候会看到两个同样SSID的无线网络。
* BSSID:用来标识一个BSS,其格式和MAC地址一样,是48位的地址格式。一般来说,它就是所处的无线接入点的MAC地址。某种程度来说,它的作用和SSID类似,但是SSID是网络的名字,是给人看的,BSSID是给机器看的,BSSID类似MAC地址。
* BSS(Basic Service Set):由一组相互通信的工作站组成,是802.11无线网络的基本组件。主要有两种类型的IBSS和基础结构型网络。IBSS又叫ADHOC,组网是临时的,通信方式为Station<->Station,这里不关注这种组网方式;我们关注的基础结构形网络,其通信方式是Station<->AP<->Station,也就是所有无线网络中的设备要想通信,都得经过AP。在无线网络的基础网络中,最重要的两类设备:AP和Station。

### 802.11标准简介

802.11是IEEE在1997年为无线局域网(Wireless LAN)定义的一个无线网络通信的工业标准。此后这一标准又不断得到补充和完善,形成802.11x的标准系列。802.11x标准是现在无限局域网的主流标准,也是Wi-Fi的技术基础。本文只介绍一下平时应用最多的应该是802.11a/b/g三个标准。

| 协议 | 发布(年/月) | Op.标准频宽 | 实际速度(标准) | 实际速度(最大) | 半径范围(室内) | 半径范围(室外) |
| — | — | — | — | — | — | — |
| 802.11a | 1999 | 5.15-5.35/5.47-5.725/5.725-5.875 GHz | 25 Mbit/s | 54 Mbit/s | 约30米 | 约45米 |
| 802.11b | 1999 | 2.4-2.5 GHz | 6.5 Mbit/s | 11 Mbit/s | 约30米 | 约100米 |
| 802.11g | 2003 | 2.4-2.5 GHz | 25 Mbit/s | 54 Mbit/s | 约30米 | 约100米 |

### WLAN拓扑结构

WLAN有以下三种网络拓扑结构:

1. 独立基本服务集(Independent BSS, IBSS)网络(也叫ad-hoc网络)
2. 基本服务集(Basic Service Set, BSS)网络
3. 扩展服务集(Extent Service Set, ESS)网络

**1) AD-Hoc网络**

![p1](http://drops.javaweb.org/uploads/images/425716f55fd2e414dd8660827339bd5c0b0d96ef.jpg)

无AP,站点间直接通信。

win7自带的AD-Hoc组建功能,可以让我们很方便的在一个小范围内快速组建”局域网”,联网打游戏啥的很方便。

**2) BSS网络**

![p2](http://drops.javaweb.org/uploads/images/a1d1441821b9f49efc2f96db8f0d979738f01e44.jpg)

又名Infrastructured网(基础设施网):有AP(Access Point, 接入点),无线站点通信首先要经过AP。对于个人PC来说,使用最多的所谓”无线Wi-Fi”指的就是BSS网络模式

**3) ESS网络**

![p3](http://drops.javaweb.org/uploads/images/b2d69a9734e648972b84868c7b10598a8dc93d18.jpg)

其中,ESS中的DS(分布式系统)是一个抽象系统,用来连接不同BSS的通信信道(通过路由服务),这样就可以消除BSS中STA与STA之间直接传输距离受到物理设备的限制。

根据拓扑结构可以得出802.11的两类服务:

1. 站点服务SS(每个STA都要有的服务)

1. 认证(Authentication)
2. 解除认证(Deauthentication)
3. 加密(Privacy)
4. MSDU传递(MSDU delivery)
2. 分布式系统服务DSS(DS特有服务)

1. 关联(Association)
2. 解除关联(Deassociation)
3. 分布(Distribution)
4. 集成(Integration)
5. 重关联(Ressociation)

### 帧格式

**3.1 帧格式概述**

无线中的数据传播有如下相似的格式:

![p4](http://drops.javaweb.org/uploads/images/718e6dc4c35b2a00ec272d1b49368010d53f443c.jpg)

其中preamble是一个前导标识,用于接收设备识别802.11,而PLCP域中包含一些物理层的协议参数,显然Preamble及PLCP是物理层的一些细节。MAC层处理的是帧数据,截取上图中MAC头开始的部分构成MAC帧格式如下所示:

![p5](http://drops.javaweb.org/uploads/images/87dd04219cafe6cc25773a55597880042ded1cd2.jpg)

* MAC Header(MAC头):Frame Control(帧控制域),Duration/ID(持续时间/标识),Address(地址域),Sequence Control(序列控制域)、QoS Control(服务质量控制);
* Frame Body(帧体部分):包含信息根据帧的类型有所不同,主要封装的是上层的数据单元,长度为0~2312个字节,可以推出,802.11帧最大长度为:2346个字节;
* FCS(校验域):包含32位循环冗余码。

**3.2 MAC Header**

1)Frame Control(帧控制域)格式如下所示:

![p6](http://drops.javaweb.org/uploads/images/5d4b96b7227eda0f68f7827b9fa49d6826b3cea3.jpg)

* Protocol Version(协议版本):通常为0;
* Type(类型域)和Subtype(子类型域):共同指出帧的类型;
* To DS:表明该帧是BSS向DS发送的帧;
* From DS:表明该帧是DS向BSS发送的帧;
* More Frag:用于说明长帧被分段的情况,是否还有其它的帧;
* Retry(重传域):用于帧的重传,接收STA利用该域消除重传帧;
* Pwr Mgt(能量管理域):为1:STA处于power_save模式,0:处于active模式;
* More Data(更多数据域):为1:至少还有一个数据帧要发送给STA ;
* Protected Frame:为1:帧体部分包含被密钥套处理过的数据;否则:0;
* Order(序号域):为1:长帧分段传送采用严格编号方式;否则:0。

2)Duration/ID(持续时间/标识):表明该帧和它的确认帧将会占用信道多长时间;对于帧控制域子类型为:Power Save-Poll的帧,该域表示了STA的连接身份(AID, Association Indentification);

3)Address(地址域):源地址(SA)、目的地址(DA)、传输工作站地址(TA)、接收工作站地址(RA),SA与DA必不可少,后两个只对跨BSS的通信有用,而目的地址可以为单播地址(Unicast address)、多播地址(Multicast address)、广播地址(Broadcast address);

4)Sequence Control(序列控制域):由代表MSDU(MAC Server Data Unit)或者MMSDU(MAC Management Server Data Unit)的12位序列号(Sequence Number)和表示MSDU和MMSDU的每一个片段的编号的4位片段号组成(Fragment Number)。

**3.3 帧类型**

针对帧的不同功能,可将802.11中的MAC帧细分为以下3类:

1. 控制帧:控制帧主要用于协助数据帧的传递,所有控制帧都使用相同的Frame Control字段;
2. 管理帧:管理帧负责在工作站和AP之间建立初始的通信,提供认证和连接服务,包括了连接请求/响应、轮询请求/响应等;
3. 数据帧:用于在竞争期和非竞争期传输数据。

Frame Control(帧控制域)中的Type(类型域)和Subtype(子类型域)共同指出帧的类型,当Type的B3B2位为00时,该帧为管理帧;为01时,该帧为控制帧;为10时,该帧为数据帧。而Subtype进一步判断帧类型,如管理帧里头细分为关联和认证帧,管理帧的帧格式如下图所示:

![p7](http://drops.javaweb.org/uploads/images/87c06d2e869daf5483333bf4f8d74743df298c40.jpg)

管理帧的主体包含的固定字段与信息元素是用来运送信息的。管理帧主要以下几种,负责链路层的各种维护功能。

1.beacon信标帧

主要用来声明某个网络的存在。定期(默认100s、可自己设置)传送的信标可让station得知网络的存在,从而调整加入该网络所必需的参数。

2.Probe Request 探查请求帧

移动工作站利用Probe Request探查请求帧来扫描区域内目前有哪些802.11网络。

包含2个字段:

* SSID:可被设定为特定网络的SSID或任何网络的SSID。
* Support rates:移动工作站所支持的速率。

3.ProbeResponse探查响应帧

如果ProbeRequest所探查的网络与之兼容,该网络就会以ProbeResponse帧响应。送出最后一个信标帧的工作站必须负责响应所收到的探查信息。

Probe Request帧中包含了信标帧的所参数,station可根据它调整加入网络所需要的参数。

4.IBSS announcement traffic indication map (ATIM)

IBSS 的通知传输只是消息。

5.Disassociation and Deauthentication

取消关联、解除验证帧。

6.AssociationRequest

关联请求帧。

7.Reassociation Request

重新关联。

8.Association Response and Reassociation Response

关联响应、重新关联响应。

9.Authentication

身份验证帧

10.Action frame

帧传送、关联与身份验证的状态。共有三种状态,后面会详细介绍。

下面主要介绍下信标帧的格式:

信标帧被定期传送以便于移动STA能定位和识别BSS,信标帧中的信息允许移动STA能在任何时候定位BSS,同时信标帧还含有通知处于节能模式的STA取回缓冲的帧的信息。

![p8](http://drops.javaweb.org/uploads/images/25e579395abaa18ab56362c12e40cb44ae22c88d.jpg)

如图所示,一个信标帧包含有以下固定域:时间戳、信标间隔、能力信息。信标帧中的信息单元包括:服务集标识号(SSID)、支持的速率、一个或多个PHY参数集、一个可选的无竞争参数集、一个可选的IBSS参数集和一个可选的通信指示图。

1. Timestamp (8 byte):时间戳是64位长的域,它的值是传送该帧时的STA的同步时钟。
2. 信标 Interval (2 byte):信标间隔的长度是16位,其值是以TU(1024μs)为单位的两次相邻信标帧之间的间隔时间。
3. Capability info (2 byte):能力信息域的长度是16位,标识的是STA的能力。
4. SSID (variable size)
5. Supported Rates (variable size)

0x02 伪AP钓鱼攻击
============

* * *

伪AP钓鱼攻击,国外又称为“双面恶魔攻击(evil twin attack)”,是通过仿照正常的AP,搭建一个伪AP,然后通过对合法AP进行拒绝服务攻击或者提供比合法AP更强的信号迫使无线客户端连接到伪AP。因为无线客户端通常会选择信号比较强或者信噪比(SNR)低的AP进行连接。为了使客户端连接达到无缝切换的效果,伪AP应该以桥接方式连接到另外一个网络。如果成功进行了攻击,则会完全控制无线客户端网络连接,并且可以发起任何进一步的攻击。

![p9](http://drops.javaweb.org/uploads/images/e304a73e8f3c2778bb4cbf64303eb3956cce07d3.jpg)

通常来说,发起无线钓鱼攻击的黑客会采取以下步骤:

1、获取无线网络的密钥。对于采用WEP或WPA认证的无线网络,黑客可以通过无线破解工具,或者采用社会工程的方法,来窃取目标无线网络的密钥,对于未加密的无线网络则可以省略这一步骤,使得无线钓鱼攻击更容易得手。

2、伪造目标无线网络。用户终端在接入一个无线网络之前,系统会自动扫描周围环境中是否存在曾经连接过的无线网络。当存在这样的网络时,系统会自动连接该无线网络,并自动完成认证过程;当周围都是陌生的网络时,需要用户手工选择一个无线网络,并输入该网络的密钥,完成认证过程。

而黑客在伪造该无线网络时,只需要在目标无线网络附近架设一台相同或近似SSID的AP,并设置上之前窃取的无线网络密钥。这台AP一般会设置成可以桥接的软AP,因此更加隐蔽,不容易被人发现。

这样,黑客伪造AP的工作就完成了,由于采用了相同的SSID和网络密钥,对用户来说基本上难辨真伪,并且由于伪造AP使用了高增益天线,附近的用户终端会接收到比较强的无线信号,因此用户会发现,在自己终端上的无线网络列表中,这个伪造的AP是排在靠前位置的。这样,用户就会很容易上钩,掉入这个精心构造的陷阱中。

![p10](http://drops.javaweb.org/uploads/images/a6b05ae165d0489654e12732e1d36ffc5b76efc9.jpg)图 无线钓鱼过程

3、干扰合法无线网络。对于那些没有自动上钩的移动终端,为了使其主动走进布好的陷阱,黑客会对附近合法的网络发起无线DoS攻击,使得这些无线网络处于瘫痪状态。这时,移动终端会发现原有无线网络不可用,重新扫描无线网络,并主动连接附近同一个无线网络中信号强度最好的AP。由于其他AP都不可用,并且黑客伪造的钓鱼AP信号强度又比较高,移动终端会主动与伪造的AP建立连接,并获得了IP地址。

至此,无线钓鱼的过程就已经完成了,剩下的就是黑客如何处理网中的这些”鱼”了。

4、截获流量或发起进一步攻击。无线钓鱼攻击完成后,移动终端就与黑客的攻击系统建立了连接,由于黑客采用了具有桥接功能的软AP,可以将移动终端的流量转发至Internet,因此移动终端仍能继续上网,但此时,所有流量已经被黑客尽收眼底。黑客会捕获流量并进一步处理,如果使用中间人攻击工具,甚至可以截获采用了SSL加密的Gmail邮箱信息,而那些未加密的信息更是一览无余。

更进一步,由于黑客的攻击系统与被钓鱼的终端建立了连接,黑客可以寻找可利用的系统漏洞,并截获终端的DNS/URL请求,返回攻击代码,给终端植入木马,达到最终控制用户终端的目的。此时,那些存储在终端上的资料已经是黑客囊中之物。

0x03 伪AP检测技术
============

* * *

对于伪AP钓鱼攻击,采用精准迅速的检测技术及时地发现并阻断攻击是非常必要的。目前的伪AP检测技术主要包括信标帧时钟偏差、时序特性、无线嗅探、指纹识别等方式。

### 通过时钟偏差检测

利用时钟偏差技术快速准确的检测出未授权的无线AP,主要通过收集AP的信标帧和探头响应消息来计算AP的时钟偏差,这个是根据IEEE802.11协议中的TSF(Time Synchronization Function,定时同步功能)时间戳来计算的。如果AP的时钟偏差值与特征库中储存的偏差值不一样,则可认定这个AP为一个无线钓鱼AP。

伪AP通常从源信标帧复制timestamp字段的值,所以它与授权AP几乎采用同一个时钟偏差。但是,当进行信标帧重构时,在形成帧并重传的过程中会产生几微秒的延迟。这将产生具有不同序列号的重复帧,这样就可以通过计算两个相邻信标帧之间的timestamp间隔差异,即时钟偏差,与预先设定的阈值进行比较来检测伪AP。检测步骤如下图所示:

![p11](http://drops.javaweb.org/uploads/images/63db9f1b3f3d43957db355c53864653dc4c4f40f.jpg)

首先,从无线网络中的授权接入点获取训练数据集。数据集包含从授权的AP(合法AP)中接收的信标帧。对于AP的时钟偏差的计算,我们使用信标帧的时间戳值。

从信标帧中获取到时间戳后使用LSF(最小二乘法拟合)算法计算出AP的时钟偏差,然后存储进数据库作为以供以后使用。

处理完授权AP后。接下来需要对未授权的AP(待检测AP)进行处理。首先,我们需要建立未授权的AP数据集,该数据集包含信标帧值。同样使用LSF算法计算未授权AP的时钟偏差。

之后,比较合法AP与待检测AP的时钟偏差值。根据比较结果可知待检测的AP是否为伪AP。

### 基于时序特性

基于时序特性的检测方法实际上就是通过检测两个顺序帧的接收时间间隔,即帧间到达时间来进行伪AP识别的。也可以测量认证帧和ACK帧之间的时序,即第一个确认帧被发送和相应的认证响应帧被发送之间的时间间隔。这种技术的缺点是在高流量的网络中检出率比较低。

### 使用无线嗅探解决方案

一些公司如 Air-Magnet 使用无线嗅探解决方案,将传感器部署在整个网络空间中。为了在分布式代理服务器结构中检测伪AP,使用传感器收集物理和数据链路层信息,所收集的信息中包含信道、SSID、MAC地址、信号强度和AP控制帧等信息。非法设备和安全威胁能够被追踪并通过无线锁定,或者锁定交换机端口。您也可以在平面图上看到非法设备准确的物理位置已确定您所处无线环境内的所有可能存在的安全威胁。

这些部署方案的代价是十分昂贵的,且这种无线方案一般不容易扩展,因为它涉及到大量的基础设施改建和大型网络改建,部署无线嗅探器要充分覆盖大型网络,例如,在城市建设公共热点。这种无线嗅探方式在两种情况下将会失效:第一种,无线钓鱼AP禁止向外界发送信标帧(隐藏SSID),降低信号强度,或使用非标准的协议和频率;第二种,攻击者使用定向天线,使得无线钓鱼AP覆盖范围很小,从而很难被发现。

### 采用TCP/IP指纹识别方法

这种方法运用请求-响应主动探测技术,可以通过网络探测和像nmap之类的安全审计工具实现。这种方法发送一个请求帧,并等待响应以确定设备如何对碎片帧做出回应或者如何处理帧。这种技术也有缺点:它使用了可以被大多数攻击者绕过的主动探测技术。此外,该技术可以被正常的WLAN流量所干扰。

### 基于设备指纹识别技术

论文《A Passive Fingerprint Technique to Detect Fake Access Points》中提出了一种使用PLL(the physical layer header length)作为指纹参数进行伪AP检测,文章指出这种方法在非高流量环境下可以在100ms内准确地识别到伪AP。

![p12](http://drops.javaweb.org/uploads/images/123786884b085b6f30f8bfa4631b14c60ba0ed96.jpg)

该检测流程首先捕获AP无线通信数据包,然后过滤出信标帧,从中提取出MAC、SSID,PLL存入到buffer中。

接下来需要设置一个阀值(TSV),然后比较每一个信标帧的PLL与TSV,如果PLL

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容