转自: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认证过程分析(抓包)相关推荐

  1. IEEE 802.1x 硬件参加的过程

    NAC IEEE 802.1x 将会有如下四个实体参加整个过程: (1) 端口访问请求者 端口访问请求者为试图接入到网络中终端或服务器设备.按照这些设备对802.1x 协议的支持情况,分为: 1.有 ...

  2. 802.1X(Dot1x)认证原理

    802.1X(dot1x)技术简介 802.1X认证,又称为EAPOE(Extensible Authentication Protocol Over Ethernet)认证,主要目的是为了解决局域网 ...

  3. openwrt 认证收费_openwrt h3c 802.1x 校园网认证

    openwrt h3c 802.1x 校园网认证 环境 CHAOS CALMER (15.05.1, r48532) 校园网使用iNode智能客户端认证,使用802.1x协议 参考 B同学的教程(涉及 ...

  4. ACS 802.1x网络接入认证

    GNS3 中 ACS 认证   今天想给大家做个ACS4.2版本的dot1x(802.1x)接入认证的实验.原理呢,我就不去细究了,因为我对这个东西的话有些细节方面都还没好好研究过呢,呵呵,不过一些基 ...

  5. 无线接入认证服务器,搭建基于AD和IAS的802.1X无线认证系统

    最近实施了一个楼宇室内无线覆盖项目,在无线用户认证上客户希望采用他们已经配置好的AD帐号,最终决定采用AD+IAS的802.1x认证方案,现在把配置过程记录下来. 整个楼宇一共使用了50多个瘦AP,基 ...

  6. 【实验】配置802.1x远端认证

    拓扑图 规格 适用于所有版本.所有形态的AR路由器. 组网需求 PC通过Router访问网络.为了保证网络的安全性,要求在用户接入网络时进行802.1x认证.认证服务器为两台Radius服务器,IP为 ...

  7. 解决ios的https双向认证不能抓包问题

    一般来说,我们抓https包使用fiddler或charles,然后手机安装证书就可以抓包了,但是有时候我们抓某些app时候,一连上代理,却提示不能上网,明明可以上网,为啥app提示无网络,原因可能就 ...

  8. 扯一扯HTTPS单向认证、双向认证、抓包原理、反抓包策略

    HTTP(HyperText Transfer Protocol,超文本传输协议)被用于在Web浏览器和网站服务器之间传递信息,在TCP/IP中处于应用层.这里提一下TCP/IP的分层共分为四层:应用 ...

  9. HTTPS双向认证破解抓包

    近段时间因为业务需要研究了下 HTTP + TLS的抓包,研究过程挺耗时耗力的,还好最后研究出来了,现在写文章记录一下整个过程. 实验环境为Android+SpringBoot 写的靶机,,生成证书为 ...

  10. 6-8漏洞利用-Telnet认证过程抓包分析

    telnet客户端连接telnet服务器 windows下开启telnet客户端,连接telnet服务端. 这个是我们连接之后的页面,默认情况下,windows是没有开启telnet,我们需要人工开启 ...

最新文章

  1. Beta冲刺 (1/7)
  2. 短短6小时,AI设计出40000种毒气分子,很多毒性远超战用神经毒剂
  3. python爬虫——随机生成headers
  4. MySQL第1天:整体目录
  5. c语言中数组作为形参
  6. 原生Aajax 和jQuery Ajax 写法个人总结(简单)
  7. 多线程原理实例应用详解
  8. 【Antlr】unknown attribute text for rule stat in $stat.text
  9. ホワイトボックステストとブラックボックステストの区別(白盒测试与黑盒测试的区别)...
  10. Ramda.js 函数式编程 (==在angular中引入)
  11. 小米路由固件中lua文件反编译
  12. Android网络图片加载三级缓存
  13. 贾立平太讨厌_《最强大脑》水哥微博致歉三遍对不起 网友:节目太虚假,真的追不下去了...
  14. BigWorld Server - Architecture
  15. ISCC-2019部分wp
  16. JavaScrip 防止别人复制,剪切,查看源代码,页面另存为的操作
  17. C# “贝格尔”编排法
  18. matlab gui下拉列表,MATLAB制作GUI(3)-下拉列表的实现
  19. Flash和Javascript网页视频播放器
  20. linux下的磁盘常用工具

热门文章

  1. 50个多色渐变下载分享
  2. C++时间管理和随机数
  3. Linux sed正则匹配替换文本中所有数字
  4. Android MediaProjection 录屏方案
  5. CS201 USB TYPEC音频控制芯片|TYPEC拓展坞音频芯片|CS201参数特性
  6. 产品分析——电视广告
  7. 连接oracle时17002,Oracle Errorcode 17002
  8. 阿里云ECS服务器傻瓜式部署python项目
  9. CC2530的通用IO端口(GPIO)输入和输出控制
  10. 程序猿回到过去:红花会与布隆过滤器