【转】 IEEE 802.1X-PEAP认证过程分析(抓包)
转自:https://blog.csdn.net/u012503786/article/details/79296522
IEEE 802.1X-PEAP认证过程分析(抓包)
本文介绍IEEE802.1X认证的PEAP认证方式,是带有radius服务器的EAP中继认证。
IEEE802.1X认证是使用EAP报文格式在申请者和认证者之间交换信息。带有radius服务器,即认证者不对申请者发送的数据进行解析处理,而是封装后直接转发给radius服务器。由radius服务器进行处理。
PEAP认证方式,是在此基础上,首先建立一个申请者到认证服务器的传输隧道。然后在隧道中进行认证挑战等操作。隧道保证了挑战等数据的安全性
下面将根据把整个802.1X认证过程分为三部分
1、认证初始化:radius服务器获取申请者的身份信息,并回应认证开始
2、建立TLS隧道:为了保证认证数据的安全性
3、认证过程:由于在安全的TLS隧道内传输,我们并不知道进行的是什么挑战方式。只有申请者和认证服务器才能知道。
1、过程报文介绍
1.1、认证初始化
1、申请者向认证者发送EAPOL-start报文,开始802.1X接入的开始
2、认证者向申请者发送EAPOL-request/identity报文,要求申请者将用户信息送上来
EAP-request/identity
1、 申请者回应认证者发送EAPOL-response/identity报文。其中包含用户名
EAP-response/identity
2、 认证者以EAP overRADIUS 的报文格式将EAP-response/identity发送给认证服务器,并带上相关的RADIUS属性
Access-request/identity
字段含义:
Authenticator域占用16个字节,用于RadiusClient 和Server之间消息认证的有效性,和密码隐藏算法。访问请求Access-Request报文中的认证字的值是16字节随机数,认证字的值要不能被预测并且在一个共享密钥的生命期内唯一。
1.访问请求认证字
在Access-Request包中认证字的值是16字节随机数,认证字的值要不能被预测,并且在一个共享密钥的生命期内唯一;
2.访问回应认证字
Access-Accept Access-Reject 和Access-Challenge包中的认证字称为访问回应认证字,访问回应认证字的值定义为MD5(Code+ID+Length+RequestAuth+Attributes+Secret);
Attributevalue pairs:
service-type:2:为接入用户
NAS-IP-address:网络接入服务器IP地址
called-station-ID:认证者的MAC地址
NAS-port-type:NAS的端口类型,总是802.11
NAS-port:NAS的端口
calling-station-ID:申请者的MAC地址
acct-session-ID:计费连接号
framedMTU:最大传输单元
EAP-message:EAP报文
message-authenticator:(RFC3579)客户端发送一个access-request,或者是服务器发送access-challenge时,添加的一个标识。接收方可以根据相同的操作进行验证。计算方法:
Message-Authenticator = HMAC-MD5(Type, Identifier, Length, Request Authenticator,
Attributes)
每一个EAP报文都可以使用该属性。
3、 认证服务器收到认证者发来的EAP-response/identity,根据配置确定使用EAP-peap认证,向认证者发送RADIUS-access-challenge报文,里面含有radius发送给申请者的EAP-request/peap/start报文,希望开始进行EAP-PEAP认证
Access-challenge/EAP-peap-start
字段含义:state:如果RADIUS服务器发送给设备的接入质询报文中包含该值,则设备在后续的接入请求报文中必须包含相同的值
4、 认证者向申请者发送EAP-request/peap/start报文
EAP-request/protected EAP(EAP-PEAP)-start
3.1.2、建立TLS通道
5、 申请者收到EAP-request/peap/start报文,产生一个随机数、客户端支持的加密算法列表、TLS协议版本、会话ID、以及压缩方法(目前均为NULL),封装在EAP-response/TLS/clienthello报文中发送给认证者
TLSv1-client hello
字段含义:
version:客户端支持的最高版本号
random:客户端生成的随机值
session ID:唯一标识一个session
cipher suite:每个ciphersuite 包含一个密钥交换算法,一个大量数据加密算法,一个MAC算法和一个PRF(TLS的 PRF 就是把 P_hash 应用在secret上)构成
Compression methods:包含压缩算法的列表
客户端发送client hello后,服务器必须回复server hello。
6、 认证者以EAP overRADIUS 的报文格式将EAP-response/TLS/client hello发送给认证服务器,并带上RADIUS的属性
Access-request/client hello
7、 认证服务器收到clienthello报文后,会生成server hello、certificate、server key change、server hello done报文封装在EAP消息中,使用access-challenge报文发给认证者
Access-challenge/server hello
总共发送server hello,certificate,server key exchange,server hello done四组数据。由于数据太长,所以进行分段处理
使用EAP-response/protected EAP报文进行响应,直到接收最后一片。
Server hello字段:
version:服务器选择客户端client hello报文中version和服务器支持的版本号的最小值
random:服务器生成的random,与client hello中的random没有任何关系
session ID:服务器为本链接分配的session ID
cipher suite:服务器从client hello的cipher suite 字段选择的一个。
Compression method:压缩方法
certificate字段:
certificate:服务器证书
server key exchange字段:
EC Diffie-Hellman server params:
Curve type:支持3中曲线类型,可以自行制定椭圆曲线的多项式系数,基点等参数。但是现在基本不使用,而是使用named curve
Named curve:参数已经预先选定,各种密码学库普遍支持的一组曲线,最常见的是secp256r1
pubkey:公钥
signature:签名
server hello done:在serverhello和相关信息已经处理完毕之后,服务器发送server hello done。发送完server hello done后服务器开始等待客户端的响应
8、 认证者将认证服务器的报文中的EAP-request消息发送给申请者
TLSv1-server hello
11、申请者收到报文后,进行验证server的证书是否合法(使用刚从CA证书颁发机构获得的根证书进行验证,主要验证证书时间是否合法,名称是否合法),即对网络进行认证,从而可以保证server的合法。
如果合法,提取server证书中的公钥,同时产生一个随机密码串pre-master-secret,并使用服务器的公钥对其进行加密,最后将加密的信息clientkeyexchange + 客户端的证书(如果没有证书,可以把属性置为0) + TLS finished属性封装成EAP-response/TLS clientkeyexchange报文发送给认证者,
如果申请者没有安装证书,则不会对server证书的合法性进行认证,即不能对网络进行认证
TLSv1-client keyexchange
Client key exchange字段:客户端必须在serverhello done 到达后发送client key exchange消息。
ec_diffie_hellman:pubkey:公钥
change cipther spec字段:客户端切换成密文模式
encrypted handshake message字段:(finished)这个包表示握手已经完成,并且对之前发过的数据进行加密发送给对方做校验,防止被篡改。同时也验证加密算法和密钥是否正常工作
12、认证者以EAP over RADIUS 的报文格式将EAP-response/TLSclientkeyexchang发送给认证服务器,并带上相关的RADIUS属性
Access-request/client key exchange
13、认证服务器收到报文后,用自己的证书对应的私钥对clientkeyexchange进行解密,从而获得pre-master-secret,然后对pre-master-secret进行运算处理,加上申请者和server产生的随机数,生成加密密钥、加密初始化向量和hmac的密钥,这时双方已经安全的协商出一套加密办法了。认证服务器将协商出的加密方法 + TLS finished消息封装在EAP over RADIUS 的报文access-challenge中,发送给认证者
Access-challenge/change cipher spec
changecipherspec:服务器切换到密文模式
14、认证者将认证服务器发送的报文,以EAP-request消息发送给申请者
TLSv1-change cipher spec
15、申请者回复认证者EAP-response/TLSOK
EAP-response/protected EAP(EAP-PEAP)
16、认证者将EAP-response/TLSOK消息封装在radius报文中,发送给认证服务器,告知服务器申请者和认证服务器之间的TLS隧道建立成功
Access-request/protected EAP(EAP-PEAP)
至此,隧道建立完毕,申请者和认证服务器之间使用协商的密钥进行加密传输,然后进行验证
3.1.3、认证过程
17、认证者将radius报文中的EAP域提取,封装成EAP-request报文发送给申请者
Access-challenge/application
TLSv1-request/application
18、申请者受到报文后,用服务器相同的方法生成加密密钥。加密初始化向量和hmac的密钥,并用相应的密钥及其方法对报文进行解密和校验,然后产生认证回应报文,用密钥进行
加密和校验,最后封装成EAP-response报文发送给认证者,认证者转发给认证服务器,并带上相关的RADIUS的属性,这样反复进行交互,直到认证完成。在认证过程中,认证服务器会下发认证后用于生成空口数据加密密钥PMK给申请者
TLSv1-response/application
Access-request/application
以上application data 的交换过程可能执行多次,直至成功。
19、服务器认证客户端成功后,会发送一个RADIUS-access-accept给认证者,并包含认证服务器提供的MPPE属性(vendor specific)。
Access-accept
20、认证者收到RADIUS-access-accept报文,会提取MPPE属性中的密钥作为WPA加密用的PMK,并且会发送EAP-SUCCESS报文给申请者
EAP-success
2、问题
(1)为什么server hello 要进行很多次?
数据太长了,需要分段,每次只发一小段。
(2)802.1X和PSK认证方式在RSN信息中,那么PEAP还是其他认证方式,在哪里体现?
申请者连接时,输入用户名和密码的同时要选择认证类型PEAP、TTLS或其他。表明申请者并不知道radius服务器能支持什么认证 。挑战方式等是由申请者决定的,而radius服务器会发送一个默认的方式,如果与申请者想要的挑战方式不同,可以经过协商解决。如果服务器不支持这种认证方式,那么认证就会失败。
如果在用户名传递之后(EAP-response/identity)之后,回复的挑战并不是申请者要进行的挑战,申请者可以发送EAP报文进行协商
(3)外层认证方式是PEAP,内层认证方式是什么?
在报文中内层认证方式不能确定。因为在TLS隧道内传输。无法被破解。
内层认证方式由申请者连接时选择的。
转载于:https://www.cnblogs.com/cxt-janson/p/11010672.html
【转】 IEEE 802.1X-PEAP认证过程分析(抓包)相关推荐
- IEEE 802.1x 硬件参加的过程
NAC IEEE 802.1x 将会有如下四个实体参加整个过程: (1) 端口访问请求者 端口访问请求者为试图接入到网络中终端或服务器设备.按照这些设备对802.1x 协议的支持情况,分为: 1.有 ...
- 802.1X(Dot1x)认证原理
802.1X(dot1x)技术简介 802.1X认证,又称为EAPOE(Extensible Authentication Protocol Over Ethernet)认证,主要目的是为了解决局域网 ...
- openwrt 认证收费_openwrt h3c 802.1x 校园网认证
openwrt h3c 802.1x 校园网认证 环境 CHAOS CALMER (15.05.1, r48532) 校园网使用iNode智能客户端认证,使用802.1x协议 参考 B同学的教程(涉及 ...
- ACS 802.1x网络接入认证
GNS3 中 ACS 认证 今天想给大家做个ACS4.2版本的dot1x(802.1x)接入认证的实验.原理呢,我就不去细究了,因为我对这个东西的话有些细节方面都还没好好研究过呢,呵呵,不过一些基 ...
- 无线接入认证服务器,搭建基于AD和IAS的802.1X无线认证系统
最近实施了一个楼宇室内无线覆盖项目,在无线用户认证上客户希望采用他们已经配置好的AD帐号,最终决定采用AD+IAS的802.1x认证方案,现在把配置过程记录下来. 整个楼宇一共使用了50多个瘦AP,基 ...
- 【实验】配置802.1x远端认证
拓扑图 规格 适用于所有版本.所有形态的AR路由器. 组网需求 PC通过Router访问网络.为了保证网络的安全性,要求在用户接入网络时进行802.1x认证.认证服务器为两台Radius服务器,IP为 ...
- 解决ios的https双向认证不能抓包问题
一般来说,我们抓https包使用fiddler或charles,然后手机安装证书就可以抓包了,但是有时候我们抓某些app时候,一连上代理,却提示不能上网,明明可以上网,为啥app提示无网络,原因可能就 ...
- 扯一扯HTTPS单向认证、双向认证、抓包原理、反抓包策略
HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层.这里提一下TCP/IP的分层共分为四层:应用 ...
- HTTPS双向认证破解抓包
近段时间因为业务需要研究了下 HTTP + TLS的抓包,研究过程挺耗时耗力的,还好最后研究出来了,现在写文章记录一下整个过程. 实验环境为Android+SpringBoot 写的靶机,,生成证书为 ...
- 6-8漏洞利用-Telnet认证过程抓包分析
telnet客户端连接telnet服务器 windows下开启telnet客户端,连接telnet服务端. 这个是我们连接之后的页面,默认情况下,windows是没有开启telnet,我们需要人工开启 ...
最新文章
- Beta冲刺 (1/7)
- 短短6小时,AI设计出40000种毒气分子,很多毒性远超战用神经毒剂
- python爬虫——随机生成headers
- MySQL第1天:整体目录
- c语言中数组作为形参
- 原生Aajax 和jQuery Ajax 写法个人总结(简单)
- 多线程原理实例应用详解
- 【Antlr】unknown attribute text for rule stat in $stat.text
- ホワイトボックステストとブラックボックステストの区別(白盒测试与黑盒测试的区别)...
- Ramda.js 函数式编程 (==在angular中引入)
- 小米路由固件中lua文件反编译
- Android网络图片加载三级缓存
- 贾立平太讨厌_《最强大脑》水哥微博致歉三遍对不起 网友:节目太虚假,真的追不下去了...
- BigWorld Server - Architecture
- ISCC-2019部分wp
- JavaScrip 防止别人复制,剪切,查看源代码,页面另存为的操作
- C# “贝格尔”编排法
- matlab gui下拉列表,MATLAB制作GUI(3)-下拉列表的实现
- Flash和Javascript网页视频播放器
- linux下的磁盘常用工具