如何拒接eap服务器器发来的eap-failure数据包

EAPol包结构802.1x认证的过程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
EAPol包结构802.1x认证的过程
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢基于EAP/SIM的WLAN接入认证系统的设计与实现 时间:10-12-18 基于 EAP/SIM 的WLAN 接入认证系统的设计与实现 摘要:本文分析了IEEE802.1x 协议的认证体系结构和认证过程,简要介绍了EAP 协议 RADIUS 协议的认证流程。设计并实现了一套基于EAP-SIM 协议的无线局域网接入认证系 统解决方案,说明了它的网络拓扑结构和系统
基于 EAP/SIM 的WLAN 接入认证系统的设计与实现 摘要:本文分析了IEEE802.1x 协议的认证体系结构和认证过程,简要介绍了EAP 协议 RADIUS 协议的认证流程。设计并实现了一套基于EAP-SIM 协议的无线局域网接入认证系 统解决方案,说明了它的网络拓扑结构和系统框架,详细阐述了EAP-SIM 认证流程,为 EAP-SIM 认证方法提高无线局域网安全性能提供了有力的实践证明。 关键词:无线局域网;802.1x;EAP 协议;认证服务器;EAP-SIM 协议 Design and Implementation of EAP/SIM-Based WLAN Access Authentication System Abstract: This paper analyses the authentication hierarchy and introduces authentication flow of EAP protocol and RADIUS protocol concisely. An EAP/SIM-based solution of WLAN access authentication is designed and implemented. Its network topology and system framework are shown and the authentication flow of EAP-SIM protocol is explained in detail. The solution provides a convincing demonstration for the enhancement EAP-SIM authentication method makes on the security performance of WLAN. Key words: WLAN; 802.1x; EAP PAuthentication SEAP-SIM Protocol 0 引言 无线局域网(Wireless Local Area Network,WLAN)是计算机网络与无线通信结合的产 物,是在一个局部区域内计算机之间通过无线链路进行通信的网络。与有线网络相比,WLAN 具有移动性强,灵活性高,部署便捷,管理简单,网络造价低,扩展能力强等特点。可是另 一方面,WLAN 也面临着一些基本安全威胁,主要有信息泄露、完整性破坏、业务拒绝和 非法使用。所以,网络安全问题是最亟待解决的问题之一。 本文通过对 IEEE802.1x、EAP(Extensible Authentication Protocol)、RADIUS(Remote Authentication Dial In User Server)等协议的分析,采用EAP-SIM 作为上层认证方法,提出 了一个WLAN 的接入认证系统方案,并构建出一个系统实验平台实现了该方案,从实践上 证明了EAP-SIM 增强WLAN 安全性的可行性。 1 IEEE802.1x 认证协议 IEEE802 LAN/WAN 委员会为了解决WLAN 网络安全问题,于2001 年6 月正式公布了 802.1x 协议[1]。802.1x 协议是基于端口的网络接入控制(Port-based Network Access Control) 协议,不仅提供接入控制功能,还提供用户认证和计费的能力。 1.1 IEEE802.1x 认证体系结构 应用 802.1x 协议的系统是典型的Client/Server 体系结构,主要有3 个实体:申请者 (Supplicant)、认证者(Authenticator)和认证服务器(Authentication Server)。具体结构 如图1 所示。 图 1 IEEE802.1x 认证体系结构图 申请者是一个用户终端设备,又称为客户端。它通过启动一个支持EAPOL(EAP over LAN)协议的客户端软件启动IEEE802.1x 协议的认证过程。端口访问实体(Port Access Entity,PAE)是认证机制中负责执行算法和协议操作的实体。申请者PAE 可以向认证者发 送认证请求和下线请求,并负责响应认证者系统的认证要求,提交用户认证信息等工作。 认证者一般为无线接入点AP(Access Point)。该实体对应于不同用户端口(物理端口、 用户设备的MAC 地址、IP 或VLAN 等)有两个逻辑端口:受控端口(Controlled Port)和 非受控端口(Uncontrolled Port)。非受控端口始终处于双向连通状态,主要用来传递EAPOL 协议帧,保证客户端始终能够发出或接受认证。受控端口在授权状态下才处于连通状态,用 于传递业务报文;而在非授权状态下处于断开状态,禁止传递任何报文。认证者PAE 利用 认证服务器对需要接入局域网的客户端进行认证,并根据认证结果操控受控端口的状态。 认证服务器是为设备端提供认证服务的实体,用于实现用户的认证、授权和计费,通常 情况下为RADIUS 服务器。该服务器可以存储用户的相关信息,如用户名、密码、用户所 属的VLAN、优先级、CAR 参数、用户的访问控制列表等。 IEEE802.1x 认证系统主要以EAP 协议作为申请者PAE 和认证服务器之间交换认证信息 的手段。在申请者PAE 与认证者PAE 之间,EAP 协议的报文被封装成EAPOL 的格式;而 在认证者PAE 与RADIUS 服务器之间,则被封装成EAPOR(EAP over RADIUS)的格式。 1.2 IEEE802.1x 认证流程 IEEE802.1x 提供的认证只是单向认证[2],协议的认证过程如图2 所示。 图 2 IEEE802.1x 认证流程图 (1)客户端通过认证者的非受控端口向AP 发送一个EAP Start 报文,自此发起 IEEE802.1x 接入认证请求。 (2)认证者发送一个响应报文EAP Request/Identity,要求用户提供身份信息。 (3)客户端将自己的身份信息封装在EAP Response/Identity 报文中提交给认证者。 (4)认证者将用户身份信息封装在Radius Access Request 报文中转交给认证服务器。 (5)认证服务器通过查询用户身份信息数据库或使用其他认证算法验证用户身份的合 法性。根据具体采取的扩展协议不同,三个实体之间的交互过程也不同。故此用1~N 表示 多次报文交互的情形。 (6)认证服务器根据验证结果,向认证者发送接受(Radius Accept)或拒绝用户访问 (Radius Reject)报文。 (7)认证者向客户端发送允许访问(EAP Success)或拒绝访问(EAP Failure)的EAP 报文。如果允许用户接入,认证者将为用户开放一个受控端口,用户将使用该端口传输数据。 2 EAP 协议 可扩展认证协议(EAP)是点对点协议(PPP)中的一个通用协议[3]。EAP 协议在802.1x 的协议栈中的地位如图3 所示。 图 3 IEEE802.1x 协议的协议栈 由上图可见,EAP 协议只是一种封装协议,在具体应用中可以选择EAP-TLS、 EAP-TTLS、EAP-MD5 等任一种认证协议。也就是说,EAP 协议作为一个认证的框架,利 用其灵活的可扩展性,兼容了上层的不同认证方法,可以对认证来源和密钥使用任意加密算 法[4],适应了各类用户终端和网络系统的需求。 EAP 协议无论采用哪种认证方法,主要工作流程是一致的: (1)链路建立后,认证者发送一个或多个请求数据报文,报文中含有一个表明认证方 所请求信息类型的类型域。 (2)对方发送一个响应数据报文,该报文中也含有一个类型域,它必须与请求报文中 的类型域相对应。 (3)认证者发送一个成功或失败报文结束认证。 3 RADIUS 协议 由于大量用户不断从各地对网络进行随机访问,认证、授权和计费等网络安全管理措施 显得尤其重要。为了不加重认证者的负担,必须建立一个第三方认证中心,802.1x 推荐使用 RADIUS 协议。 基于 RADIUS 认证服务器的认证授权过程简要分为以下步骤: (1)用户在客户端输入认证信息,客户端发送接入请求报文到认证服务器(期间可能 出现请求重传的情况),其中包含用户名、密码、端口ID 等。 (2)RADIUS 服务器收到请求就会要求验证客户端的有效性,无效则丢弃请求报文, 有效则查询用户数据库。查询后,条件不满足则发送拒绝接入的报文,满足则发送含有挑战 的报文。 (3)客户端收到挑战报文后经过处理,发送挑战响应给RADIUS 服务器。 (4)RADIUS 服务器根据挑战响应判断是否同意接入。 4 接入认证系统的设计与实现 4.1 方案设计与实现 根据前述理论知识,现提出一个基于EAP-SIM 的WLAN 安全认证系统方案。该方案的 设计主要是依照IEEE 制订的802.1x、EAP-SIM、RADIUS 等协议标准。从网络拓扑结构来 分析,认证者选用了支持802.1x 协议的无线AP,后台认证服务器采用了freeRADIUS 组织 提供的开源软件freeRadius。具体的客户端、认证者和认证服务器网络拓扑结构如图4 所示。 图4 系统网络拓扑示意图 (1)客户端 硬件:多普达HTC HD8288 智能手机 软件:Windows Mobile Professional 6.1 操作系统、Eapsim.exe 客户端软件 (2)认证者: 硬件:TP-LINK TL WR541G+54M 无线路由器 (3)认证服务器: 硬件:PC 软件:Linux、FreeRadius2.1.8 整个接入认证系统总体可以划分为三个部分:用户接口部分、PCAP 收发模块和EAP 认证处理模块。其总体框架示意图如图5 所示。 图5 总体框架示意图 用户接口部分主要负责与用户交互。用户在软件的界面上操作,软件则通过界面显示认 证过程中的信息。认证是否成功决定了用户是否能够通过手机终端接入因特网。EAP 认证 处理模块部分主要完成EAP-SIM 认证过程中所需数据包的封装和拆解,然后将封装好的数 据包交给PCAP 收发模块发送至网络,或者拆解PCAP 收发模块所接收的数据包。 方案实现过程中,依托OpenSSL[5]、WinPcap[6]和Libnet[7]等开发工具包,并利用集成开 发工具Microsoft Visual Studio 2005 生成Smart Device 工程,用面向对象的编程方法来实现 认证过程,最后将工程编译生成的Eapsim.exe 执行文件拷贝到Windows Mobile 操作系统的 手机终端。 4.2 EAP-SIM 认证流程 EAP-SIM[8]是一种对称密钥认证方式,它使用了改进的GSM 认证方式来支持双向认证。 其基本认证流程如图6 所示。 图 6 EAP-SIM 协议认证流程图 (1)用户通过802.1x 客户端软件发起接入请求,客户端发送EAPOL-Start 报文给认证 者(此处即为无线AP)。 (2)AP 向客户端发送EAP-Request/Identity 报文,要求客户端提交身份信息,此处为 IMSI(International Mobile Subscriber Identity)号。 (3)客户端将由SIM 卡中读取来的IMSI 号封装在响应报文EAP-Response/Identity 中 发送给AP。 (4)AP 将收到的响应报文通过Radius-Access-Request 报文承载,发送给认证服务器。 (5)认证服务器向AP 发送EAP-Request/SIM/Start 的报文,要求开始EAP-SIM 的认证, 该报文通过RADIUS-Access-Challenge 进行承载。 (6)AP 提取出EAP-Request/SIM/Start 报文转发给客户端。 (7)客户端收到EAP-Request/SIM/Start 后产生一个随机数NONCE_MT,在响应报文 EAP-Response/SIM/Start 中把它发送给AP。 (8)AP 将EAP-Response/SIM/Start 发送给认证服务器,通过RADIUS-Access-Request 报文进行承载。 (9)认证服务器经过一系列检查工作(如用户是否有可用的认证三元组,是否已签约 了WLAN 业务[9]),然后根据规定算法生成AT_MAC、MAC_SRES,最后向AP 发1433人阅读
Windows(18)
摘要:&本文通过分析802.1X协议,发现其存在离线字典攻击漏洞。同时对广州大学锐捷认证协议的具体实现进行黑箱测试后,找到了同一个子网的机器和饶过认证进行通信的方法。
关键字:802.1X,锐捷,离线字典攻击
Research on Ruijie Authentication Protocol in Guangzhou University
Abstract: This paper found a weak point, offline dictionary attack in 802.1X protocol. Also after carrying out black box test on the implementation of Ruijie Authentication protocol in Guangzhou University, we proposed a method that machines
in the same sub network can communicate with each other without 802.1X authentication.
Keyword: 802.1X, Ruijie, offline dictionary attack
网络的认证接入一直都是市场比较关注的问题,目前用得比较多的认证协议有PPPoE,&802.1X等。而锐捷认证协议就是以802.1X为基础进行修改扩展的。本文主要关注的是该协议的自身安全性和协议实现的安全性,实验环境为广州大学的校园网。
在此之前,已经有人指出了由于实现上的出错,导致多台相同MAC地址的机器只要其中一台成功通过了认证协议,就都可以同时正常访问网络。进一步地,我们指出了,同样是由于实现上的问题,导致网络中没有通过认证的机器仍然获得对网络的部分访问能力。
2&广大锐捷认证协议
2.1 802.1X协议
通过前面的介绍,我们知道广大的锐捷认证协议是基于802.1X扩展的私有协议,因此在研究之前必须先了解清楚标准的802.1X协议。具体可以参考RFC 3748,下面只给出简单的协议描述。
认证过程简述:
&&&1.&主机向服务器(多播或广播地址)发送EAPOL-Start
&&&2.&服务器向主机发送EAP-REQUEST-Identity要求验证身份的请求
&&&3.&主机向服务器发送EAP-RESPONSE-Identity回应
&&&4.&服务器向主机发送EAP-REQUEST-MD5_Challenge要求验证密码的MD5校验值
&&&5.&主机向服务器发送EAP-RESPONSE-MD5_Challenge回应
&&&6.&服务器向主机发送EAP-Success
&&&7.&保持连接的通信...
当然这只是一般过程,如果在任何时候服务器发来EAP-Failure数据包,都表示整个认证过程终止。在以太网中,EAP协议当然也是通过以太网帧的格式来传送,帧类型为0x888e,在基于pcap的抓包程序中,可使用&ether
proto 0x888e&来抓取。当用作802.1x应答帧时,常使用802.1x分配的多播地址01-80-c2-00-00-03作为目的地址。
EAP协议不仅可用于本文关注的以太网环境中,还可在无线WLAN、令牌环网中应用,而这些链路帧是各不相同的,这就是为什么有EAPOL类型的数据帧,用以抽象EAP协议报文。
EAPOL-报文结构:(byte)
Ethernet-Header
a:EAPOL&协议版本
b:EAPOL&报文类型
c:EAPOL&帧长度
Packet Body
a类型说明:通常为常量0x01
b类型取值:
EAPOL-Packet :&&&0x00
EAPOL-Start:&&&&&0x01
EAPOL-Logoff:&&&&0x02
各种EAP协议的信息交互,封装在EAPOL-Packet类型的EAPOL报文内。至于EAP报文的格式,基本就是如下所示。
EAP-报文结构(byte)
d:EAP通信类型
e:EAP通信id
f:EAP数据长度
g:EAP协商类型
d类型取值:
EAP-Request:&&0x01
EAP-Resopnse: 0x02
EAP-Success:&&0x03
EAP-Failure:&&0x04
e类型说明:
通常由服务器发来的报文指定,在连续的报文内使用这个id来协商或者计算MD5值的数据之一。
g类型取值:
Identity:&&&&&&&&0x01
MD5_Challenge:&&&0x04
2.2 802.1X协议的安全性分析
在协议的数据流中,我们关心的是与密码有关的部分,关键是对于EAP的MD5挑战的响应。这里记住几个变量:
1. SID:会话编号。这个就是上面提到的EAP通信ID。在通信过程中以明文出现的,长度为1个字节。
2. Salt:随机盐。在MD5挑战报文中附带过来的,也就是上面提到的attach-key。在通信过程中以明文出现,长度为16个字节。
3. SK:会话密钥。SK=MD5(SID+Password+Salt)
服务器端正式通过这个SK来判断认证请求是否合法。我们看到,由于MD5函数的单向性,要得到用户的口令是不可行的,除非采用字典攻击。因此,该协议首先就存在被执行离线字典攻击的缺陷,这也是大部分现行的网络协议所共有的问题。
不过,即使存在这样的漏洞,但是对于一般用户来说,字典的大小还是让人生畏的,我们还需要寻求其他方法。关于该协议更多的安全细节可以参考[2].
3&广大锐捷认证协议的实现
再安全的协议,如果实现不当的话,都会变得十分脆弱。由于设计之初并没有考虑到不同子网之间存在相同MAC地址的问题,导致只有一个端口的MAC地址通过了认证,那么具有相同MAC地址的其他网络端口也可以通过认证。实践证明,接在不同交换机上的任何两个网络端口都可以利用这个漏洞。不过,最近实施的网络端口和MAC地址的绑定政策,又让大家失望了。那么,接下来,我们就是要考虑绑定MAC地址之后的环境下的实验了。记住,我们实验的几个目标:
1级目标:可以不经认证就发送数据到同一个交换机中的其他端口;
2级目标:可以不经认证就接收到同一交换机上其他端口发送过来的数据;
3级目标:可以不经认证就发送数据到其他交换机中的其他端口;
4级目标:可以不经认证就接收到其他交换机上端口发送过来的数据。
3.1实验环境说明
下面是实验的网络拓扑:
在该拓扑下面,重复一遍我们的目标:(A机器不经认证)
1级目标:可以发送数据到B机器
2级目标:可以接收来自B机器的数据
3级目标:可以发送数据到C机器
4级目标:可以接收来自C机器的数据
相关实验软件工具:
1. VC++6.0。用于编写代码实现发送经过精心构造的数据包
2. wireshark。基于pcap的网络监听工具,以分析是否满足实验的目标
3. winpcap。一个跨平台的,提供驱动级别的访问网络底层能力的库pcap在Windows下的实现。
3.2关于2级和4级目标
对于2级和4级目标,所谓交换机控制的是机器A访问网络的能力,指的是其主动访问网络的能力,对于被动接收网络上发过来的数据是没有做限制的,因此,这两个目标是自然成立的,只需要按照正常的网络通信那样进行就可以了。不过需要注意的是,由于TCP连接存在三次握手和ACK包,因而,传统意义上的TCP连接是无法建立的。只有UDP数据包就可以正常通信。
备注1:因为考虑到跨子网问题,故而需要考查高层网络协议,如IP,&&TCP, UDP等,而链路层上的协议在当前环境的交换机中是不跨子网的。
3.3实现1级目标
为了实现这个目标,我们首先观察到这样的一些事实:
事实1:源地址为任意,目标地址为01-80-c2-00-00-03的802.1X认证报文,能够通过交换机。
事实2:IP地址为202.192.18.0/24的IP数据包能够通过交换机。
根据以上两个事实,我们首先尝试了将802.1X认证报文的目标地址改为机器B的MAC地址,实验后得到以下这个事实:
事实3:目标地址不为01-80-c2-00-00-03的802.1X认证报文,无法通过交换机。
既然这样满足不了我们的要求,下面就要利用事实2了。我们首先截获了一个到DNS服务器的Query数据包:
uint8_t DNSPackage[] = {0x00, 0x0c, 0xdb, 0xd0, 0x01, 0xa0,&0x00, 0x23, 0x54, 0x86, 0x94, 0xf3, 0x08, 0x00, 0x45, 0x00, 0x00, 0x3b, 0x45, 0x67, 0x00, 0x00, 0x40, 0x11, 0x8f, 0x2a, 0xac, 0x12, 0x1d, 0x4d, 0xca, 0xc0, 0x12,
0x01, 0xde, 0x59, 0x00, 0x35, 0x00, 0x27, 0x0c, 0xc9, 0x97, 0x26, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x77, 0x77, 0x77, 0x05, 0x62, 0x61, 0x69, 0x64, 0x75, 0x03, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x1c, 0x00, 0x01};
其中0xF3是机器A的MAC地址,0x000CDBD001A0对应为网关的MAC地址。我们将数据帧的目的地址改为机器B的MAC地址0x,惊喜地发现机器B可以接收到从机器A发过来的数据。这样,我们得到这样一个事实:
事实4:机器A要发送数据到机器B,只需要修改数据包的目的MAC地址为对方的MAC地址,并且将IP包的目的地址改为202.192.18.1,然后再发送到网络中即可;机器B根据接收到的数据包如果IP目的地址为202.192.18.1,源目的地址不为0x000CDBD001A0,那么就认为是机器A发送过来的。
由事实4,我们实现了1级目标。实验的关键代码为:
uint8_t&&&&&remote_mac[ETHER_ADDR_LEN]= {0x00, 0x23, 0x5a, 0x11, 0xCC, 0x50};
memcpy(sendpackage, DNSPackage, 38);
int len_pack = sizeof(DNSPackage);
memcpy(sendpackage, remote_mac, ETHER_ADDR_LEN);
3.4&突破3级目标
在完成了1级目标之后,接下来就要突破3级目标了。注意到3级目标要求我们构造的数据包可以通过不同的交换机。然而由事实2,通过简单的尝试后就很容易得到另一个事实了:
事实5:IP地址不为202.192.18.0/24的数据包无法通过交换机。
既然无法通过交换机,那么要达到跨网就无从谈起了,这样,只好在目的IP地址为202.192.18.1的前提下进行讨论了。既然目的地址已经确定了,为了识别另一个网段上的机器,又只好将源IP地址设定为机器C的IP地址了。于是,我们的想法很自然,就是希望通过DNS服务器转发消息给机器C。当然了,通常的DNS查询应答是无法为我们传递所需的消息的,那么唯一的办法就是将我们的消息嵌套到DNS查询当中。这里,我们说的是这样一个事实:
事实6:机器A通过构造一个包含有发送消息T的DNS数据包,并修改数据包源IP地址为机器C的IP地址,那么机器C将收到来自DNS服务器的一个DNS应答数据包,并且该应答数据包中包含了消息T。
由事实4,我们实现了3级目标。通过构造DNS查询数据包的方法的效率比较,其效率为:
其中38为构造DNS查询所必须花费的网络带宽代价。
除去DNS数据包之外,FTP和BBS的短消息功能也都可以作为信息交换的中心,然而,这样通过第三方进行信息交换的方法会加大服务器额外的负担,甚至会被认为是恶意的拒绝服务攻击,因此并不建议采用这样方法来处理。
综上,对于突破3级目标对于我们来说只是基本实现,还没有很完美地满足要求,仍需要更进一步的实验。
请记住,我们上面的所有实验都是在没有通过锐捷认证的条件下进行的,我们很好地实现了1级,2级和4级目标,并且基本实现了3级目标,也就是说可以进行基本的网络通讯。在接下来的实验里面,如何更好地实现3级目标还是一个有挑战的问题。
[1] EAP的总体流程,&
[2] Extensible Authentication Protocol (EAP),&
[3] Wireshark,&
[4] Winpcap,&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:65844次
排名:千里之外
原创:28篇
转载:22篇
评论:19条
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'802.1x认证的EAP协议(总体流程)
Supplicant主机&&&&&&&&&&&&&&&&&&服务器
-----------&&&&&&&&&&&&&&&& -------------
&&&&|------------------------------&| 主机向服务器(多播或广播地址)发送EAPOL-Start
&&&&| 1.&&EAPOL-Start&&&&&&&&&&&&&& |
&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
&&&&|&------------------------------| 要求验证身份的请求
&&&&| 2. EAP-REQUEST-Identity&&&&&& |
&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
&&&&|------------------------------&| 回应(用户名)
&&&&| 3. EAP-RESPONSE-Identity&&&&&&|
&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
&&&&|&------------------------------| 要求验证密码的MD5校验值(随机加密字Challenge)
&&&&| 4. EAP-REQUEST-MD5_Challenge&&|
&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
&&&&|------------------------------&| 回应(使用Challenge加密口令)
&&&&| 5. EAP-RESPONSE-MD5_Challenge |
&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
&&&&|&------------------------------| EAP-Success(判断正确性)
&&&&| 6.&&&&&& EAP-Success&&&&&&&&&&|
&&&&|&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |
在任何时候服务器发来EAP-Failure数据包,都表示整个认证过程终止。
在以太网中,EAP协议当然也是通过以太网帧的格式来传送,帧类型为0x888e,在基于pcap的抓包程序中,可使用"ether proto 0x888e"来抓取。
Ethernet-Header: (802.3,局域网标准)
################################################
#&&0&&&&&&&&&&&&&&5&&&&&&&&&&&&&& 11&&&&&& 13&&#
# +----------------+----------------+--------+ #
# |DST--MAC&&&&&&&&|SRC--MAC&&&&&&&&|0x888e&&| #
# +----------------+----------------+--------+ #
################################################
EAP协议不仅可用于本文关注的以太网环境中,还可在无线WLAN、令牌环网中应用,而这些链路帧是各不相同的,这就是为什么有EAPOL类型的数据帧,用以抽象EAP协议报文。
EAPOL-报文结构
############################################
#&&0&&&&&&&&&&&&&&&&&&&&&&&&&& 14 15&&&&&& #
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&&&&&&&&#
# | Ethernet-Header&&&&&&&&&& |a|b|&&&&&&&&#
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&&&&&&&&#
#&&&&17&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#
# +-+-+-------------&&&&&&&&&&&&&&&&&&&&&& #
# |c&&|Packet Body&&&&&&&&&&&&&&&&&&&&&&&& #
# +-+-+-------------&&&&&&&&&&&&&&&&&&&&&& #
############################################
a:EAPOL 协议版本
b:EAPOL 报文类型
c:EAPOL 帧长度
a类型说明:通常为常量0x01
b类型取值:
EAPOL-Packet :&& 0x00 //各种EAP协议的信息交互,封装在EAPOL-Packet类型的EAPOL报文内
EAPOL-Start:&&&& 0x01
EAPOL-Logoff:&&&&0x02
EAP-报文结构
#########################################
#&&0&&&&&&&&&&&&&&&&&&&&&&&&&&&&15&&&&&&#
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&&&& #
# |&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& |&&&& #
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&&&& #
#&& 17 18 19 21 22&&&&&&&&&&&&&&&&&&&&&&#
# +-+-+-+-+-+-+-+--------------&&&&&&&& #
# |&& |d|e|f&&|g|EAP Body&&&&&&&&&&&&&& #
# +-+-+-+-+-+-+-+--------------&&&&&&&& #
#########################################
d:EAP通信类型
e:EAP通信id
f:EAP数据长度
g:EAP协商类型
d类型取值:
EAP-Request:&&0x01
EAP-Resopnse: 0x02
EAP-Success:&&0x03
EAP-Failure:&&0x04
e类型说明:
通常由服务器发来的报文指定,在连续的报文内使用这个id来协商或者计算MD5值的数据之一。
g类型取值:
Identity:&&&&&&&&0x01
MD5_Challenge:&& 0x04
注意EAPOL帧和EAP帧的两处长度位置,前者的长度是不算EAPOL头的4个字节的,而后者则包含自身头部的5个字节,所以这两个长度的值可能是一致的,但具体可能有扩展信息放在EAPOL帧尾部,则前者比后者大。
下面是需要程序构建的数据包的大概细节:
&&&&&&1.EAPOL-Start、EAPOL-Logoff
&&&&&&通常是比较简单的数据包,只需填好相应的位,没有其他附加消息,EAPOL-Start、EAPOL-Logoff两种报文长度为0,通常建立起来两个报文的长度就只有18字节。
&&&&&&2.EAP-REQUEST-Identity
&&&&&&服务器发来的这个报文也比较简单,可能唯一有用的数据是&e:EAP通信id&位,需要给发送回去的报文中把相应位设置为该值,虽然这很可能是常数。
&Identity格式
&&&&&+-+-+-+-.....-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| EAP Header&&&&&&|&&Username
+-+-+-+-.....-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&&&&&&3.EAP-RESPONSE-Identity
&&&&&&只需要设置&d:EAP通信id&位,然后在EAP头后紧接用户名的ASCII码信息。有些品牌的协议中,则顺带在此数据包开始校验客户端的IP、版本号等信息。
&&&&&&4.EAP-REQUEST-MD5_Challenge
&&&&&&找到该用户名对应的口令信息,用随机生成的一个加密字Challenge对它进行加密处理(MD5)
服务器请求MD5校验的报文中包含了重要的信息,首先也是&e:EAP通信id&位,后一个报文也需要设置该位;
在EAP报头后紧接一个一位的长度值L(常量0x10),表示紧跟其后的重要数据的长度,其后的16位值则需要用来计算下一个报文中的信息,我们称之为attach-key。
&MD5_Challenge格式
+-+-+-+-.....-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| EAP Header&&&&&&|L|MD5-Key/Value
+-+-+-+-.....-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
&&&&&&5.EAP-RESPONSE-MD5_Challenge
&&&&&&首先需要设置&d:EAP通信id&位,然后构建一个这样的字节数组[(e:EAP通信id)(用户密码的ASCII)(attach-key)],这个字节的长度当然是(1+用户密码长度+16),然后送入MD5计算函数中,获得16位的计算结果,再把这16位计算结果填入报文。报文格式跟请求的类似,在包头后紧接一位长度值,当然是0x10,然后是16位的计算结果。 用该加密字对口令部分进行加密处理(MD5) 来的加密后的口令信息和其自己经过加密运算后的口令信息进行对比,判断用户是否合法
一个客户端程序所做的事情通常就是这么多,而因为EAP协议的&Extensible&的特性,几乎我们见到的每个品牌的协议都有所扩展,而且各不相同,所以各个品牌之间的客户端甚至交换机等设备都可能完全不可兼容的,其协议很可能在上述的报文中都添加一个信息尾,用来校验各种信息。
EAP-SIM学习 &
&&&&&&EAP-
Response/SIM/Challenge (AT_MAC)步骤说明:
&&&&&&&&&&&&据AT_RAND等Sres信息|NONCE_MT|Version|... 计算自己的AT_MAC'和AT_MAC比较
&&&&&&&&&&&&然后生成一个序列,部分为四次握手MK(万能钥匙,这增加了后面的四次握手的安全性)
&&&&&&&&&&&&Response含Sres的AT_MAC'',让服务器再认证。
&&&& &GSM subscribers身份标识:IMSI(International Mobile Subscriber Identity)。IMSI组成:不多于15数字的String,MCC(Mobile Country Code)3位,MNC(Mobile Network Code)2或3位,MSIN(Mobile Subscriber Identification Number)不多于10位.
&&&&&&Internet AAA protocols身份标识:NAI(Network Access Identifier)[RFC4282]. 形式为:().对于永久用户,可以使用IMSI生成用户名(第一位加&1&);pseudonym usernames and fast re-authentication, identities由认证服务器生成。
EAP-AKA学习
用来保护数据包的完整性。
支持用户身份的保密
支持利用已得到的进行快速重新认证。
交互记录:
&&&&&&&Server不应该依赖EAP-Response/Identity中的Indentity信息,应该使用EAP-Request/AKA-Identity包主动请求(EAP-Response/AKA-Identity的AT_IDENTITY属性指示)。
&&&&&&1)使用AT_PERMANENT_ID_REQ属性:Server想让Peer反馈永久认证身份(permanent identity)在EAP-Response/AKA-Identity 包的AT_IDENTITY属性。如果Peer只有permanent identity,反馈EAP-Response/AKA-Identity(在AT_IDENTITY属性中包含permanent identity);如果还有pseudonym identity,反馈可能是EAP-Response/AKA-Client-Error(code "unable to process packet"),或者permanent identity。然后,如果Server发现不是合法的permanent identity,发送EAP-Request/AKA-Notification(AT_NOTIFICATION code"General failure" (16384)),终止EAP认证。否则EAP-Request/AKA-Challenge开始全认证过程。
&&&&&&2)AT_FULLAUTH_ID_REQ属性:Server想让Peer反馈全认证身份(full authentication identity (pseudonym identity))。服务器不支持快速重认证。首先反馈pseudonym identity(如果有),否则反馈permanent identity。然后,如果Server发现不能把pseudonym identity映射到一个合法的permanent identity,发送AT_PERMANENT_ID_REQ。
&&&&&&3)AT_ANY_ID_REQ属性:Server想让Peer反馈一个身份(an identity)。如果Peer维护了快速重连状态信息,并且想使用快速重连,反馈re-authentication identity属性信息。其次,判断pseudonym identity,最后判断permanent identity。如果Server同意重认证,发送EAP-Request/AKA-Reauthentication,否则发送AT_FULLAUTH_ID_REQ或者AT_PERMANENT_ID_REQ。
&&&&&&EAP/AKA-Identity可能轮回多次(最多3次),这种情况的顺序:
&&&&&&&&&&&&&&&&&&AT_ANY_ID_REQ -& AT_FULLAUTH_ID_REQ -& AT_PERMANENT_ID_REQ.
WLAN\3G应用AKA:
WLAN-UE(User Equipment):WLAN 用户的移动终端设备
WLAN-AN(Access Network):WLAN接入网络
3GPP AAA 服务器: 3GPP 网络认证、授权、计费服务器
HSS/HLR: 家乡用户服务器/ 家乡位置寄存器
IMSI: 国际移动用户标志( International Mobile Station Identity)
f1 ~f5。为3G 安全结构中定义的算法,
&&&&&&f1 算法用于产生消息认证码,
&&&&&&f2 算法用于消息认证中计算期望响应值,
&&&&&&f3 算法用于产生加密密钥,
&&&&&&f4 算法用于产生完整性密钥,
&&&&&&f5 算法用于产生匿名密钥。
① WLAN-UE& WLAN-AN: NAI(身份标志)② WLAN-AN& 3GPP AAA: NAI③ 3GPP AAA&WLAN-AN: RAND, AUTH, WLAN-UE 的临时标志, 消息鉴别码④ WLAN-AN& WLAN-UE: RAND, AUTH, WLAN-UE 的临时标志, 消息鉴别码⑤ WLAN-UE& WLAN-AN: RES, 消息鉴别码⑥ WLAN-AN& 3GPP AAA: RES, 消息鉴别码⑦ 3GPP AAA& WLAN-AN: WLAN-UE 的认证结果, WLAN-AN 与WLAN-UE的共享密钥⑧ WLAN-AN& WLAN-UE: WLAN-UE 的认证结果
说明:&&&&&&③收到WLAN-UE 的身份标志后, 3GPP AAA 服务器首先询问HSS, 该用户是否有使用WLAN提供的服务权限。然后从HSS/HLR 中取得与该用户相关的认证向量AV, 同时也获得与该用户IMSI 对应的新的临时标志。
&&&&&&其中, AV = RAND‖XRES‖ CK ‖ IK ‖ AUTN, RAND 为随机数, XRES = f2k( RAND) , CK = f3k( RAND) , IK = f4k ( RAND) , AUTN = SQN ‖AK‖AMF‖MAC; SQN为序列号, AK = f5k ( RAND) , AMF 为认证管理域, MAC = f1k ( SQN‖RAND‖AMF) 。
&&&&&&随后, 从IK 和CK 中生成共享密钥, 这些共享密钥一方面可用于WLAN通信的机密性和一致性保护, 另一方面也用于保护WLAN-UE 的临时标志。
&&&&&&构造EAP 请求/AKA 挑战消息, 消息包含RAND、AUTH、临时标志, 并计算消息鉴别码。最后, 将EAP 请求/AKA 挑战消息发送给WLAN-AN。
&&&&&&⑤WLAN-UE 首先验证AUTH, 并确认接收的序列号SQN是否在有效范围内, 如果都正确, 则实现了对3G 网络的认证。
&&&&&&计算IK和CK, 从IK和CK 中生成共享密钥, 然后验证消息鉴别码是否正确, 并保存收到的临时标志。
&&&&&&计算RES = f2k( RAND) , 构造EAP回应/AKA 挑战消息, 消息包含RES, 并计算消息鉴别码。最后, 将EAP 回应/AKA 挑战消息发送给WLAN-AN。
&&&&&&⑦3GPP AAA 服务器首先验证消息鉴别码, 然后计算XRES, 并与收到的RES 进行比较。如果正确, 则认证了WLAN-UE 的身份, 并向WLAN-AN发送EAP 成功的消息。同时一起发送的还有在WLAN通信中用于机密性和一致性保护的共享密钥。
&&&&&&⑧WLAN-AN保存共享密钥, 此共享密钥将用于与WLANUE通信时的机密性和一致性保护, 同时将EAP 成功的消息发送给WLAN-UE。
安全性分析
&&&&&EAP-AKA 协议基于WLAN-UE 与HSS/HLR 之间共享的秘密密钥K, 实现WLAN用户与3G 网络的相互认证和密钥分配。
( 1) WLAN用户与3G 网络之间的双向认证。
&&&&&&WLAN用户对3G 网络的认证是在上述第⑤ 步实现的。WLAN-UE 收到3GPP AAA 服务器发送过来的AUTN = SQNī AK‖ AMF‖MAC, 确认序列号SQN是否在有效范围内, 并验证AUTH 是否正确。因为只有使用正确的秘密密钥K 才能生成正确的AUTN, 而只有合法的HSS/HLR 才有秘密密钥K, 因此上述过程实现了对3G网络合法性认证。&&&&&&3G网络对WLAN 用户的认证是在上述第⑦ 步实现的。3GPP AAA 服务器首先计算XRES = f2k ( RAND) , 然后与收到的RES= f2k ( RAND) 进行比较。也因为只有合法的WLAN 用户才有秘密密钥K, 因此如果XRES = RES, 就可以认证WLAN用户的合法身份。
( 2) WLAN-UE 与WLAN-AN 之间的密钥分配。
&&&&&&合法的WLAN-UE 收到正确的随机数RAND 后, 能正确生成CK = f3k( RAND) 和IK= f4k ( RAND) , 进而能正确生成用于WLAN 通信中机密性和一致性保护的会话密钥。而WLAN-AN的会话密钥是从3GPP AAA 服务器得到的, 3GPP AAA 服务器首先生成CK 和IK, 然后生成会话密钥, 再传送给WLAN-AN。因此, EAP-AKA 协议能确保WLAN-UE 与WLAN-AN 之间能共享会话密钥, 并且会话密钥没有在无线接口中传输, 具有一定的安全性。
( 3) 密钥的新鲜性。
&&&&&&在EAP-AKA 协议的每次认证过程中, WLAN-UE 与WLAN-AN 共享的会话密钥通过CK 与IK 生成, 而CK与IK 是采用随机数计算得到的, 从而确保了密钥的新鲜性。
( 4) 防重放攻击。
&&&&&&协议传递的消息使用了随机数和不断递增的序列号SQN作为输入, 因而保证了消息的新鲜性。并且, 该随机数包含在保证消息完整性的消息鉴别码, 而响应方在响应消息的鉴别码中也包含了该随机数, 因此任何第三方都无法利用先前截获的消息发起重放攻击。
( 5) 潜在的漏洞。
&&&&&&与3G 的认证与密钥分配协议AKA 一样, EAP-AKA 协议也没有WLAN 用户与3G 网络之间共享的秘密密钥K 的更新机制, 这可能会导致USIM克隆攻击。另外, 当WLAN 用户首次进行认证, 或3G 网络不认识WLAN用户的临时标志时,WLAN用户需传送IMSI, 并且使用的是明文, 这会影响用户身份的机密性。
( 6) 可能的攻击。
&&&&&&3G 网络的认证与密钥分配协议AKA 存在MS( 移动站) 假冒攻击的可能。事实上,同样的攻击也可能发生在EAP-AKA 协议上。并且, 由于WLAN的覆盖范围小,WLAN-AN与WLAN-UE 一样, 都处在比较开放的环境中, 因而还有可能发生WLAN-AN假冒攻击。具体描述如下: ①WLAN-AN 假冒攻击。EAP-AKA 协议实现了WLAN用户与3G 网络之间的相互认证, 但双方都没有对WLAN-AN 的身份进行认证。并且, 在协议第⑧ 步中, 3GPPAAA 服务器将用于WLAN通信中机密性和完整性保护的会话密钥, 直接以明文的形式发送给WLAN-AN。如果攻击者首先利用某种方式( 如DoS 攻击) 攻陷WLAN-AN, 然后假冒成WLAN-AN, 则可以获取WLAN 中的会话密钥, 这样就使得WLAN的通信失去了保密性。②WLAN-UE 假冒攻击。攻击者A 还可利用截获的合法用户身份标志进行攻击。这样, 攻击者A 就可以假冒该用户的身份入网。因为没有会话密钥, 因此攻击者A 此时还不能进行正常的通信。而如果攻击者A 同时对WLAN-AN 与3GPP AAA 服务器之间的通信进行窃听, 则可以获取WLAN-UE 的会话密钥。此时攻击者A 就可以假冒该用户, 在3G 与WLAN互联网络中进行正常的通信。
EAP扩展的比较:
是否需要  智能卡
密码学原理
支持双向认证
可以有缺陷
产生会话密匙
抗字典攻击
&基于非对称密码学原理也称作智能卡实现成本高,系统实施复杂,主要用于网上银行,电子商务领域。
克服了的已知缺陷,提供了足够的安全性。
4 way handshake
S:&&&initial key exchange
:&&&&&&&&&&&&&& MIC
Message 1. Authenticator &
给、、互联网提供了统一认证方法的可能。
阅读(...) 评论()}

我要回帖

更多关于 eap failure 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信