fuqiuluo’s blog

记录美好生活

技术分享

锐捷 - 认证流程抓包分析

#锐捷#校园网#抓包
type
Post
status
Published
date
Jul 13, 2023
slug
summary
tags
锐捷
校园网
抓包
category
技术分享
icon
password

寻找认证服务器

通过抓包发现3个与众不同的包,下面紧接着就是锐捷认证服务器的回复包,协议开始变成EAP协议。
notion image
接下来,我们对包的内容进行一波分析,
notion image
c8:7f:54:c9:b2:df 不是我的mac地址吗?前面也是6字节,说明前面大概率也是一个mac地址,而且是固定的(多次抓包都一致)。

EPAOL协议

EAPOL (EAP On Lan) 是 EAP 在以太网上面的实现, 由802.1x定义
先来看以太网的帧格式(Ethernet II帧格式)
  • type : Ethernet 帧为802.1x (EAPOL) 分配的type为 0x888e, linux中定义为 ETH_P_PAE
  • data : 存放EAPOL帧
EAPOL帧格式为
  • Version : 802.1x版本
      1. 1代表 802.1x-2001
      1. 2代表 802.1x-2004
      1. 3代表 802.1x-2010
  • type : EAPOL除了可以承载EAP消息外, 还可一承载其它的EAPOL消息,该字段用于标识消息的类型
    • Length : Body (数据)的长度, 如果为0, 则代表没有携带数据
    • Body : EAPOL帧的数据部分
    当EAPOL帧的类型为 EAPOL-Key时, 其Body的格式为
    当Descriptor Type为2时, 表示Descriptor Body为EAPOL RSN key, 内容由802.11协议来定义, 见 802.11 spec 11.6.2节
    EAPOL帧在二层传送时,必须要有目标MAC地址,当客户端和认证系统彼此之间不知道发送的目标时,其目标MAC地址使用由802.1x协议分配的组播地址01-80-c2-00-00-03 ,二次认证则为01-d0-f9-00-00-03 (二次认证即已经在线了,又发起一次认证)

    认证服务器要求验证用户名(非在线状态/认证前不发下线包)

    下图是锐捷认证服务器在EAPOL后的一个Request包(针对EAPOL的返回包,但因为他的Code是Request,所以说叫一个请求)
    notion image
    其中我们发现88 8e后面是01 00了,第一个01对应的是802.1x版本号,第二个说明这个是一个EAP-PACKET了,接下来的00 05就是包长度了,其实和上面的EAPOL帧格式没什么区别。

    EAP基础包格式

    EAP 的基础包格式如下表所示:
    Code
    Identifier
    Length
    Data
    1 byte
    1 byte
    2 bytes
    variable length
    其中 Code 的分配如下表所示:
    Code
    Assignment
    1
    Request
    2
    Response
    3
    Success
    4
    Failure
    5
    Initiate
    6
    Finish
    基础包格式稍微进化一下,那么EAP 的 Request 和 Response 包格式如下表所示:
    Code
    Identifier
    Length
    Type
    Type-Data
    1 byte
    1 byte
    2 bytes
    1 byte
    variable length

    按照格式分析包

    00 05是接下来数据包的长度,我们裁剪出数据包,然后使用EAP基础包格式去尝试理解一下这段包吧!
    包的内容是:01 01 00 05 01
    • 第一个01Code代表的是Request的意思。
    • 第二个01Identifier,一般固定。
    • 00 05Type Data的长度
    • 01Type,根据Type表,我们可以知道这个是请求身份验证的意思(
    • 后面的Type Data就一堆00,不用看了......

    客户端发送身份认证请求

    锐捷扩展数据包通用格式

    是一种不携带长度可能会被加密的一种奇怪自定义格式(可能是我见识短浅)接下来简称这种格式为RTV

    格式一 不携带长度

    Repeated Trait
    ID(有时候没有)
    Data
    4 bytes
    1 byte
    1byte
    0x00 0x00 0x13 0x11
    0x01
    0x06

    格式二 带一个长度

    Repeated Trait
    ID(有时候没有)
    Length
    Data
    4 bytes
    1 byte
    1 byte
    1byte
    0x00 0x00 0x13 0x11
    0x01
    0x02
    0x06

    RTV格式加解密源代码

    分析数据包(标准EAP认证数据)

    为了偷懒,下面是发送用户名认证数据包的相关代码,其中不包括锐捷RTV格式的分析(后面再说)。
    • 变化不大,就是包类型从EAP_START变成了EAP_PACKET
    • identity是你的用户名(例如12345678

    分析数据包(锐捷扩展字段数据)

    Check Sum算法

    随机字符串X1分析

    notion image
    v19的类型是QWORD,所以说这里是写了32字节的随机字符串(本质上就是把rand出来16字节,然后toHexString

    后续内容

    Loading...