《Kali渗透基础》12. 无线渗透(二)
@
本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。
本文以 kali-linux-2023.2-vmware-amd64 为例。
无线网卡使用 MT7612u 芯片。
无线渗透与其他章节独立,涵盖面广。
无线技术变化快,难度大。
理论是本章最有价值的部分。
1:无线协议栈
1.1:ifconfig
只能查看无线网卡的以太网相关配置信息。
查看所有网卡:
ifconfig -a
运行指定网卡或接口:
ifconfig <网卡接口> up
禁用指定网卡或接口:
ifconfig <网卡接口> down
查看启用的网卡:
ifconfig
1.2:iwconfig
查看无线网卡:
iwconfig
能查看无线扩展参数
1.3:iw
查看无线网卡:
iw list
能详细查看无线网卡的配置与对协议和技术的支持情况。
设置网卡或接口工作信道:
iw dev <网卡接口> set channel <信道>
扫描附近 AP:
iw dev <网卡> scan
添加侦听接口:
iw dev <网卡> interface add <网卡>mon type monitor
删除侦听接口:
iw dev <网卡接口> interface del
1.4:iwlist
查看频段带宽:
iwlist <网卡> frequency
查看信道:
iwlist <网卡> channel
扫描附近 AP:
iwlist <网卡> scanning
2:无线网卡配置
2.1:查看无线网卡
方式一:
ifconfig
方式二:
iwconfig
方式三:
iw list
2.2:查看信道频率
方式一:
iwlist <网卡> frequency
方式二:
iw list
2.3:扫描附近 AP
仅查看 SSID:
iw dev <网卡> scan | grep SSID
查看 SSID 与信道:
iw dev <网卡> scan | egrep "DS\ Parameter\ set|SSID"
查看 SSID 与信道:
iwlist <网卡> scanning | egrep "ESSID|Channel"
2.4:侦听接口添加与删除
添加侦听接口:
iw dev <网卡> interface add <网卡>mon type monitor
运行指定网卡或接口:
ifconfig <网卡接口> up
删除侦听接口:
iw dev <网卡接口> interface del
3:RADIOTAP 头部
RADIOTAP(RadioTap)头是用于无线数据包捕获的通用封装格式,是一种数据链路层协议。
- 802.11 依赖 RadioTap 完成通信过程,是 802.11 帧发射和接收的事实标准。
- Linux 系统在驱动和 API 中内建支持 RadioTap。
- 802.11 帧发射之前,网卡驱动在 802.11 头前面添加 RadioTap 头;当网卡接收到无线帧时,驱动通知 MAC 层,此帧头包含 RadioTap 头。
- RadioTap 为 802.11 帧传递额外信息,厂家可自定义,因此头长度不固定。
- 不破坏原始头结构,增加传递的信息。
RADIOTAP 头分为 Header 和 Data。Header 是 RADIOTAP 头的实际部分,Data是数据包的有效载荷部分。
Header 由以下字段组成:
- Version(1 byte):RADIOTAP 头的版本号。常为 0。
- Pad(1 byte):未使用,只作为字段占位。
- Length(1 byte):整个 RADIOTAP 头长度(以字节为单位),可变,作用是确定 802.11 头的开始位置。
- Present Flags(4 bytes):是一个 32 位的字段,每一位代表一个特定的信息字段。如果某一位为1,则表示该信息字段在当前的 RADIOTAP 头中存在。
- Fields:实际的信息字段,包含各种无线信息。如:
- Timestamp:数据包捕获的时间戳。
- Flags:数据帧的一些标志信息,比如是否加密、是否包含FCS(帧校验序列)等。
- Rate:数据传输速率。
- Channel:频道号和频谱宽度。
RADIOTAP 头部的长度可变,具体长度取决于 Present Flags 字段中所包含的信息字段数量。
对于不能理解的头部,网卡将直接忽略。
Data 部分是无线数据包的实际有效载荷。具体的内容取决于数据包所传输的应用层协议和数据类型。
- 对于 Wi-Fi 数据包,可能是一个 802.11 数据帧。
- 对于蓝牙数据包,可能是一个蓝牙数据帧。
4:MPDU
4.1:基本知识
在信息传输过程中,数据单元(DU)是最小的数据集合,用于承载信息。
传递过程中,数据会逐层封装(Encapsulation)。
主要涉及的封装单位有服务数据单元(SDU)和协议数据单元(PDU)。
- DU(Data Unit),数据单元
是信息传输的最小数据集合。 - Encapsulation,逐层封装
数据在传递过程中会按照一定规则逐层封装,以便在不同网络层之间传输。 - SDU(Service Data Unit),服务数据单元
是上层向下层传递的数据单元,经过上层协议处理后,成为下层的 PDU。 - PDU(Protocol Data Unit),协议数据单元
是网络协议中传递的数据单元,在不同网络层有不同的名称。
无线数据封装过程大致如下:
MSDU(应用层数据)-> 添加 MIC(完整性校验)-> 分帧(将数据分成更小的数据帧)-> 添加 IV(初始化向量,用于加密过程)-> 加密(对数据进行加密)-> 添加 MAC 头部(数据链路层的控制信息)-> MPDU(链路层数据单元)。
继续往下,MPDU 与物理头部结合,形成 PPDU(物理层数据单元),然后进行RF(射频)发射,最终在物理信道上传输。
4.2:MPDU 介绍
MPDU(Mac Protocol Data Unit)是 802.11 标准中的一个重要概念,代表着物理层(PHY)和介质访问控制层(MAC)之间的数据传输单元。
其结构如下:
可分为:
- Header(MAC 头部)
- Data(数据部分)
- FCS(校验部分)
4.3:Header
MAC 头是 802.11 标准中数据帧的组成部分,用于在数据链路层传递控制信息。
802.11 MAC 头的主要结构和字段:
Frame Control(帧控制)
占 2 个字节。包含一些控制信息。Duration / ID(时长 / 标识符)
占用 2 个字节,用于在多个节点之间传递帧的传输时长或标识符信息。Addressing Fields(地址字段)
包含四个地址字段,每个字段占用 6 个字节。用于指示帧的发送者和接收者。Sequence Control(序列控制)
占用2个字节,用于指示数据帧的序列号。
4.3.1:Frame Control
Frame Control(帧控制),占 2 个字节。包含一些控制信息,如帧的类型、子类型、数据帧是否包含帧体(Payload)、帧是否加密等。
Protocol Version(2 bit)
代表 802.11 协议版本。Type(2 bit)
3 种帧类型,规定帧的具体用途。- 管理帧(0)
- 控制帧(1)
- 数据帧(2)
SubType(4 bit)
类型对应的子类型,不同类型 / 子类型的帧完成不同功能。To DS(1 bit)/ From DS(1 bit)
标识帧的传输方向。这两个字段决定着 MAC 头中 4 个 Address 字段的不同定义。More frag(1 bit)
表示是否还有后续帧。值为 1 时表示有后续分段。只有单播接收地址的帧会被分段。Retry(1 bit)
值为 1 表示重传。接收端进程使用此值防止帧重复。Power Mgmt(1 bit)
活动模式(0);省电模式(1)。STA 处于省电模式时,向关联的 AP 发送该值为 1 的帧(AP 从不使用此字段)。省电模式下 STA 不接收数据,发送给它的 Data 帧由 AP 暂时缓存。More Data(1 bit)
当 AP 缓存了至少一个 MSDU 时,会向省电模式的 STA 发送该值为 1 的帧,表示有数据要传输给 STA。接收到此帧的 STA 唤醒自己并向 AP 发送 PS-Poll 帧,取回由 AP 为其缓存的数据。也被用于 AP 有更多的广播 / 多播帧需要发送的情况。Protected Frame(1 bit)
可能是 Data 或 Management 帧类型,表示 MSDU 是否被加密;也被用于表示 PSK 身份验证。数据载荷为空时,该字段值为0。Order(1 bit)
在非 QoS 帧的情况下,值为 1 表示数据必须严格按顺序处理,通常为0。
4.3.1.1:Type / SubType
对于 Type 与 SubType 字段,类型 / 子类型如下所示:
管理帧(0b00)子类型:
控制帧(0b01)子类型:
数据帧(0b10)子类型:
4.3.1.2:To DS / From DS
标识帧的传输方向。这两个字段决定着 MAC 头中 4 个 Address 字段的不同定义。
DA:Destination Address(目标地址)
RA:Recipient Address(接收地址)
SA:Source Address(源地址)
TA:Transmitter Address(发送地址)
- 0b00:出现在 IBSS 环境中(可能是 Management 帧或者是 Control 帧类型);或者是 STSL(Station to Station Link)中两个 STA 间通信,这种情况下通信不通过 AP。
- 0b01:表示 Data 帧从 AP 向 STA 传递。
- 0b02:表示 Data 帧从 STA 向 AP 传递。
- 0b03:表示两个 AP 间通信。这是典型的 WDS(Wireless Distribution System)环境下 AP 间的通信,或者表示 Mesh 环境下 MP 间的通信。只有此时才会使用到 Address4 字段。
4.3.2:Duration / ID
所有 Control 帧都使用该字段,其作用随 Type / SubType 变化而有所不同。
例如,帧类型为 PS Poll(type:1,subtype:10)时,该字段表示 STA 关联的 AID(association identity)。
其他情况下该字段作为一种载波侦听机制,表示接收下一帧之前需要保持的时间间隔,用于 NAV(Network Allocation Vector)计算,单位微秒。
4.3.3:Address
前面已经提到了 4 种,这里补充最后一种:Basic Service Set ID(BSSID)。它是 BSS 的 2 层唯一标识,Infrastructure 模式中 BSSID 就是 AP 的 MAC 地址,当 AP 支持多 BSS 时,随机生成每个 BSSID。
4.3.4:Sequence Control
Sequence Control 包含两个子字段:Sequence Number 和 Fragment Number。
Sequence Number
是每个帧的编号,数值范围是 0 ~ 4095,以 1 为步长递增。当帧被分段时,同一帧中不同分段的 Sequence Number 相同。Fragment Number
是被分段的帧用于标识分段位置顺序的编号,数值范围是 0 ~ 15,以 1 为步长递增。
4.4:Data(Frame Body)
数据字段,Frame Body,未加密的最大 MSDU 长度为 2304 字节(其中包含最大 256 字节的上层头信息,和可被传递的数据 2048 字节)。不同的加密方法会增加一定的内容长度。
加密方法 | 增加的长度 | 最大长度 |
---|---|---|
WEP | 8 bytes | 2312 bytes |
TKIP(WPA1) | 20 bytes | 2324 bytes |
CCMP(WPA2) | 16 bytes | 2320 bytes |
注:Control 类型的帧没有 Frame Body 内容。
4.5:FCS
发送端对全部 MAC 包头和 Frame Body 内容进行 CRC 计算,计算结果即为 FCS(Frame Check Sequence)值。
接收端进行相应计算,结果一致时,则接收端向发送端返回 ACK,否则丢弃帧(只对单播帧有效,对于 FCS 错误的广播 / 多播帧,则可能被接收)。
注:wireshark 抓包时已经删除了 FCS 值。
5:Control Frame
控制帧(Control Frame)是一些通知设备开始传输、停止传输或连接失败等情况的短消息。
5.1:ACK 帧
ACK(Acknowledgment)帧,用于确认成功接收数据帧。接收端正确接收数据之后向发送端返回 ACK 确认。
- 每个单播帧需要 ACK 立刻确认。
- 组播和广播帧不需要 ACK 确认
- 为了尽快响应,由硬件实现。
5.2:PS-POLL 帧
PS-POLL(Power Save Poll)帧用于实现低功耗模式下的数据传输。
RF 系统放大器(主要耗电组件)
发射前放大信号,接收并放大还原信号
省电模式关闭信号发射器,节省电源耗电(几乎完全关闭)
STA 省电模式唤醒:
- 数据发送至 AP(AP 缓存数据包)
- AP 通过 Beacon 发送 TIM(traffic indication map),其中包含 AID。
- STA 对比 AID 后唤醒网卡。
- STA 发送 PS-Poll 帧,请求从 AP 缓存中取回数据。每个帧都需要 ACK 确认。
- 传输完毕后 AP 从缓存中删除数据帧。
- 传输过程中 STA 保持唤醒状态。
- 传输结束后 STA 恢复省电状态。
AID(Association ID)是是在设备(STA)与接入点(AP)建立关联时分配的一个唯一标识符。
BSSID(Basic Service Set Identifier)用于唯一标识一个无线网络中的基本服务集(BSS)的 MAC 地址。
AP 接收 PS-Poll 帧时,分为立刻响应和延迟响应。如果是延迟响应,则会发送简单响应帧。
5.3:RTS / CTS 机制
RTS / CTS 机制可以在一定程度上解决网络中的隐藏节点问题和冲突问题,减少数据帧碰撞,提高无线网络的吞吐量。
隐藏节点(Hidden Node)是指在一个无线网络中,某些无线设备之间无法直接感知对方的存在。
隐藏节点问题主要发生在基础服务集(BSS)中。
RTS / CTS 是 CSMA / CA 方法的一种补充手段。
- 降低冲突产生的可能性。
- 正式通信之前通过请求应答机制,确信通信介质的可用性。
- 锁定传输介质和预约通信时间。
- 只有在传输长帧时使用,传输短帧时不会使用。
有线网络访问方式:CSMA / CD
无线网络访问方式:CSMA / CA
如上图,
- Node1 发送 RTS 包给 Node2。
- 如果未发生冲突,Node2 返回 CTS 给 Node1。
- Node1 传输数据。
- 数据正常接收,Node2 返回 ACK,否则 Node1 什么也不会收到。
CTS(Clear to Send)帧和 RTS(Request to Send)帧是两种控制帧,用于进行基本的媒体访问控制,帮助解决无线网络中的隐藏节点问题和冲突问题。
5.3.1:RTS 帧
RTS(Request to Send)帧是由发送方发送给接收方的请求帧,用于在发送数据前请求媒体的访问权。
5.3.2:CTS 帧
CTS(Clear to Send)帧是接收方发送给发送方的确认帧,用于回应收到的 RTS 帧。接收方在收到 RTS 帧后,会发送一个 CTS 帧作为回应,表示它准备好接收数据。
6:Management Frame
管理帧(Management Frame)用于协商和控制 STA 与 AP 之间的关系。
6.1:Beacon 帧
Beacon 帧,AP 发送的广播帧,用于通告无线网络的存在(BSSID)。
- 发包频率可变
- 隐藏 AP 不发 SSID 广播
Beacon 帧包含的部分信息:
IBSSI Status
0:Infrastructure
1:AD-HOCPrivicy(是否启用隐私保护功能,如加密)
ESSID
速率
信道
6.2:Probe Requset 帧
Probe Request Frames(探测请求帧)用于 STA 在无线网络中寻找附近的 AP。
可以发现连接过的 AP 与未连接过的 AP。
6.3:Probe Response 帧
Probe Response Frames(探测响应帧)是 AP 对 Probe Request Frames 的回应。
速率和 SSID 相同的 AP 响应。
6.4:Authentication 帧
Authentication Frames(身份验证帧)是用于在 STA 和 AP 之间建立身份验证过程的管理帧。
身份认证由多个帧交换过程组成。
Authentication Algorithm(身份认证类型)
0:开放系统身份验证
1:共享密钥身份验证Authentication Seq
每次身份验证过程的 Seq 唯一。(1 ~ 65535)Challenge text
只有共享密钥方式才有此字段Status Code
成功 / 失败
6.5:Association / Reassociation
身份验证成功后,STA 执行关联操作,加入无线网络。
- Association Request(关联请求)
- Reassociation Request(重新关联请求)
- Association Response(关联响应)
- Reassociation Response(重新关联响应)
6.5.1:Association Request 帧
Association Request Frames(关联请求帧),STA 发送,请求关联。
6.5.2:Reassociation Request 帧
Reassociation Request Frame(重新关联请求帧)用于在 STA 已经与一个 AP 关联的情况下,希望与另一个 AP 建立关联的情况。
6.5.3:Response 帧
AP 对 STA 的(重新)关联请求的响应。
- 状态码:关联成功 / 失败
6.6:Disassociation 帧 / Deauthentication 帧
Disassociation Frame(分离帧)用于终止 STA 与 AP 之间的连接。可由 STA 和 AP 发送。
Deauthentication Frame(去认证帧)用于终止 STA 与 AP 之间的认证。由 AP 发送。
部分 Reason Code 描述:
6.7:ATIM 帧
ATIM(Announcement Traffic Indication Map)帧只在 AD-HOC 网络下使用。作为 AP 的 STA 使用此帧通知接收者有缓存的数据要发送。
7:Data Frame
数据帧(Data Frames)用于在设备之间传输数据。
7.1:Data 帧
Data Frame(数据帧)用于传输用户数据。
7.2:Null Data 帧
Null Data Frame(空数据帧)用于 STA 声明自己将要进入省电模式。
- 只包含 MAC 头和 FCS。
泪流琼脸,梨花一枝春带雨。
——《倾杯》(宋)柳永
《Kali渗透基础》12. 无线渗透(二)的更多相关文章
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- Kali Linux 秘籍/Web渗透秘籍/无线渗透入门
Kali Linux 秘籍 原书:Kali Linux Cookbook 译者:飞龙 在线阅读 PDF格式 EPUB格式 MOBI格式 Github Git@OSC 目录: 第一章 安装和启动Kali ...
- kali linux之无线渗透
无线技术变化大,难度大,既新鲜刺激,又压力山大.一半协议 一半理论 无线技术特点: 行业发展迅猛 互联网的重要入口 边界模糊 安全实施缺失而且困难 对技术不了解造成配置不当 企业网络私自接入ap破坏 ...
- 全能无线渗透测试工具,一个LAZY就搞定了
近来一直在研究无线安全方面的东西,特别是在无线渗透测试这块,每次渗透测试时总要来回不停的切换操作和挑选利器,很是麻烦.就想看看是否可以有一款功能全面的集合型工具. 正所谓功夫不负有心人,还真有这么一个 ...
- 无线渗透之ettercap
无线渗透之ettercap ettercap命令查看 # ettercap -h Usage: ettercap [OPTIONS] [TARGET1] [TARGET2] TARGET is in ...
- 内网渗透之Windows认证(二)
title: 内网渗透之Windows认证(二) categories: 内网渗透 id: 6 key: 域渗透基础 description: Windows认证协议 abbrlink: d6b7 d ...
- kali linux 2.0 web 渗透测试 电子书
原创 2017-05-31 玄魂工作室 玄魂工作室 打起精神,重新开启订阅号的原创文章写作工作,但是需要点时间,请耐心等待. 求资料的同学,没有及时回复的,请再次留言,我会尽快处理.今天分享两本电子书 ...
- 十二. Python基础(12)--生成器
十二. Python基础(12)--生成器 1 ● 可迭代对象(iterable) An object capable of returning its members one at a time. ...
- 无线渗透wep加密路由器
停掉网络服务 service network-manager stop 检查现在的环境适不适合使用airmon-ng airmon-ng check 杀死可能冲突的进程 开启网卡monitor模式 a ...
随机推荐
- 【GiraKoo】Visual Studio开启Asan提示“LINK : fatal error LNK1104: cannot open file 'LIBVCASAN.lib'”
[解决]Visual Studio开启Asan提示"LINK fatal error LNK1104 cannot open file 'LIBVCASAN.lib'" 环境 Vi ...
- SpringCloud+Eureka初识+Ribbon+Feign+Hystrix(服务熔断,服务降级)+hashbroad
Eureka注册中心 1.导包 <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework ...
- 一分钟学一个 Linux 命令 - pwd
前言 大家好,我是 god23bin.欢迎大家继续围观<一分钟学一个 Linux 命令>,每天只需一分钟,记住一个 Linux 命令不成问题.本篇文章将聚焦于 pwd 命令,一个超级简单又 ...
- 【Rust-book】第五章 使用结构体来组织相关联的数据
第五章 使用结构体来组织相关联的数据 结构,或者结构体,是一种自定义数据类型,它允许我们命名多个相关的值并将它们组成一个有机的结合体. 可以把结构体视作对象中的数据属性 1 对比元组和结构体之间的异同 ...
- Tr0ll-1项目实战
前言 Tr0ll的灵感来源于OSCP实验室内机器的不断拖动. 目标很简单,获取root并从/root目录中获取Proof.txt. 不适合那些容易受挫的人!公平的警告,前方有巨魔! 靶机环境 kali ...
- 3. AOP
1. 代理模式 1.1 概念 ① 介绍 二十三种设计模式中的一种,属于结构型模式.它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用.让不 ...
- GPT3的内部结构:基于自回归、注意力机制等技术的语言处理框架
目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 6. 结论与展望 7. 附录:常见问题与解答 GPT-3 是当前最为先进的自然语言处理框架之一,由 Open ...
- React组件三大属性state,props,refs
1. React组件定义 1.1 函数组件(Function Components) 函数组件是一种简单的定义组件的方式,通过一个JavaScript函数来定义组件.函数接收一个props对象作为参数 ...
- python3.8下安装robotframework历险记
首先非常感谢本文章博主,极大的给与我可以装好的信心(差点要重装python)https://blog.csdn.net/qq_21583077/article/details/107848409?sp ...
- ASP.Net Core 项目部署
安装环境 部署环境有两种: .Net Core SDK 包含所有运行时和程序开发包,用于程序开发使用,体积相对较大. .Net Core Runtime 仅用于程序运行,不包含开发包,体积小. 注:部 ...