《Kali渗透基础》13. 无线渗透(三)
kali渗透
- 1:无线通信过程
- 1.1:Open 认证
- 1.2:PSK 认证
- 1.3:关联请求
- 2:加密
- 2.1:Open 无加密网络
- 2.2:WEP 加密系统
- 2.3:WPA 安全系统
- 2.3.1:WPA1
- 2.3.2:WPA2
- 3:安全协议协商
- 3.1:企业 WPA 连接过程
- 3.2:个人 WPA 连接过程
- 4:密钥交换
本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。
本文以 kali-linux-2023.2-vmware-amd64 为例。
无线网卡使用 MT7612u 芯片。
无线渗透与其他章节独立,涵盖面广。
无线技术变化快,难度大。
理论是本章最有价值的部分。
1:无线通信过程
- Probe(探测)
- STA 向所有信道发出 Probe 帧,发现 AP
- AP 应答 Response
- Authentication(验证)
- STA 向 AP 发出验证请求
- 发生认证过程(步骤可变)
- AP 响应 STA 的认证结果
- Association(关联)
- STA 发出关联请求
- AP 响应关联请求
- 关联成功,开始通信
WEP 探测过程:
- Beacon 标识使用 WEP 加密
- STA 发送普通 Probe 帧
- AP 响应 Probe Response 帧,声明其采用 WEP 加密
WPA 探测过程:
- 两个 AP 的 Beacon 包内容不同,但都声明采用 WPA 加密
- 不同厂商对 802.11 标准的实现方式不同
- 包头包含 WPA1 字段信息
1.1:Open 认证
WEP Open 认证与 Open 认证通信过程相同。
- 成功认证后通信数据被 WEP 加密
- 如果认证时客户端输入错误密码,认证依然可以通过
- 起始向量被错误的密钥解密,完整性被破坏
- 数据传输将失败
- AP 将丢弃该 STA 的数据包
- 认证响应正确,身份验证成功
1.2:PSK 认证
PSK(Per-Shared Key),预共享密钥。
- STA 发送认证请求
- AP 返回随机 Challenge 消息(Cha)
- STA 使用 PSK 加密 Cha 并发回给 AP
- AP 使用 PSK 解密密文,获得 Cha 并与原始 Cha 比对
- 相同则验证成功,不同则验证失败
大部分无线驱动首先尝试 Open 验证,如失败则尝试 PSK。
1.3:关联请求
- STA 向 AP 发送关联请求。
- AP 向 STA 发送关联成功或失败结果
无论使用什么加密架构,关联过程完全相同。
对于隐藏 AP,STA 关联包中必须包含目标 AP 的 ESSID。
嗅探到此关联包,说明有隐藏 AP 存在。
2:加密
无线安全根源:
- 802.11 基于无线电波发射信息
- 嗅探侦听是主要问题
- 加密机制是必须手段
加密机制:
- Wired Equivalent Privacy(WEP)
- 802.11 标准的一部分
- 发布后不久被发现存在安全漏洞
- Wi-Fi Protected Access(WPA)
- WPA1
- WPA2(802.11i 标准)
2.1:Open 无加密网络
- 无任何加密机制
- 所有数据都可以被嗅探
- STA 和 AP 协商拼配参数即可连入网络
2.2:WEP 加密系统
WEP(Wired Equivalent Privacy)加密系统使用 RC4(Rivest Cipher 4)算法加密流量内容,实现机密性。
WEP 使用 RC4 算法产生伪随机序列流,将其与要传输的明文进行 xor 运算,再利用 CRC 算法生成 ICV 完整性校验值,再将刚刚的 xor 内容和 ICV 组合在一起,完成传输。
- 使用 CRC-32 校验和来检测数据完整性。
- 标准采用使用 24 位 Initialization Vector(IV)
IV 重用问题(IV 冲撞问题),即不同的数据帧加密时使用的 IV 值相同。
- 使用相同的数据帧加密密钥加密是不安全的。
- 数据帧加密密钥是基密钥与 IV 串联而成。
- 实际上用户普遍使用的基密钥是 Key ID 为 0 的 default key,因而不同的数据帧加密使用相同的 IV 是不安全的。
- 而且,IV 是明文传送的,攻击者可以获得使用相同加密密钥的数据帧,由此获得密钥。
- 所以要避免使用相同的 IV。不仅同一个用户站点要避免使用重复的 IV,而且要避免使用别的用户站点使用过的 IV。
2.3:WPA 安全系统
WPA,Wi-Fi Protected Access。
802.11i 组为提高无线安全,开发两个新的链路层加密协议。
-
WPA1:Temporal Key Integrity Protocol(TKIP)
较之 WEP 可动态改变密钥 -
WPA2:Counter Mode with CBC-MAC(CCMP)
WPA 两种安全类型:
-
WPA 个人:使用预设共享密钥(PSK)实现身份验证
即常说的 WiFi 密码。 -
WPA 企业:使用 802.1X 和 Radius 服务器实现验证
使用 Radius 服务器做 802.1X 认证,分发不同的密钥给各个终端用户。
2.3.1:WPA1
802.11i 第三版草案。
与 WEP 比较:
- 都采用逐包进行密钥加密
- 128 位的 key 和 48 位的初向量(IV)
- RC4 流加密数据
- 帧计数器避免重放攻击
- TKIP 使用 Michael 算法进行完整性校验(MIC)
- WEP 使用 CRC-32 进行完整性校验
- 兼容早期版本硬件
2.3.2:WPA2
依据 802.11i 完全重新设计实现。
- 也被称为 Robust Security Network(RSN)
- CCMP 替代 TKIP
- AES 加密算法取代了 RC4
- 不兼容早期版本硬件
3:安全协议协商
协商认证方式:
- PSK
- 802.1X
单播和组播 / 广播流量加密套件:
- TKIP
- CCMP
STA 通过 Probe 获取无线网络信息。
3.1:企业 WPA 连接过程
- 协商安全协议
- 身份认证
- 密钥分发和验证
- 数据加密完整性
WPA 企业身份认证基于 Extensible Authentication Protocol(EAP)实现。
- EAP-TLS,需要客户端和服务器证书
- EAP-TTLS
- PEAP 混合身份验证,只需要服务器证书
认证过程:
- 客户端选择身份认证方式
- AP 发送身份验证信息给 Radius Server
- Radius Server 返回 “ Radius Accept ” 表示认证成功
其中包含 Master Key(MK) - AP 通过 EAP 消息通知 STA 认证成功
3.2:个人 WPA 连接过程
- 协商安全协议
- 密钥分发和验证
- 数据加密完整性
4:密钥交换
无线网络用于一组无线设备通信,关联到同一 AP 的设备共享无线信道。
对于单播、广播、组播,安全特性要求不同:
-
单播通信需要单独密钥加密通信双方流量。
pairwise key:对偶密钥(PTK) -
组播通信需要信任域内所有成员共享的同一密钥。
group key:组密钥(GTK)
PMK(Pairwise Master Key),是在安全上下文中的最高级别密钥,通过对主密钥(Master Key,MK)进行 TLS-PRF 加密而获得。
对于企业服务密钥方式:
- 由上层身份验证方法服务器生成。
- 服务器通过 Radius 传递给 AP。
- AP 通过 EAP 消息将密钥传递给所有 STA。
对于预共享密钥方式:
- 使用 ESSID、PSK 和迭代运算,进行散列计算生成。
- STA 和 AP 分别计算获得各自的 PMK,这一过程不在网络中传递或交换。
- PMK 长度为 256 位,即 32 字节。
四步握手过程生成 PTK(Pairwise Transient Key):
- AP 向 STA 发送 Anonce。
- STA 使用自己的随机数(Snonce)计算出 PTK。
- STA 将 Snonce 与 PTK 的消息完整性码(Message Integrity Code,MIC)发送给 AP。
- AP 使用 Snonce 计算出相同的 PTK。
- AP 计算 MIC,并将其与接收到的 MIC 进行比对。
- 如果 MIC 一致,表明 STA 知晓 PMK。
- AP 向 STA 发送 Group Transient Key(GTK)。
- STA 回复 ACK,并使用密钥加密通信。
沉恨细思,不如桃杏,犹解嫁东风。
——《一丛花令》(宋)张先
相关文章:

《Kali渗透基础》13. 无线渗透(三)
kali渗透 1:无线通信过程1.1:Open 认证1.2:PSK 认证1.3:关联请求 2:加密2.1:Open 无加密网络2.2:WEP 加密系统2.3:WPA 安全系统2.3.1:WPA12.3.2:WPA2 3&#…...

python——案例六:判断字符串的长度
案例六:判断字符串的长度str"Study"print(len(str))#输出结果如下: #5...
PC-windows-安卓-Linux音频系统框架概论
+我V hezkz17进数字音频系统研究开发交流答疑群(课题组) 一 PC 音频系统工作原理 PC音频系统的工作原理可以简要概括为以下几个步骤: 音频输入:音频信号可以通过多种方式输入到计算机,例如麦克风、线路输入、数字音频接口等。这些音频源会将声音转换为电信号。 模数转换…...

Web Worker API
Web Worker API Web Worker 使得在一个独立于 Web 应用程序主执行线程的后台线程中运行脚本操作成为可能。这样做的好处是可以在独立线程中执行费时的处理任务,使主线程(通常是 UI 线程)的运行不会被阻塞/放慢。 Web Worker概念与用法 Wor…...
1.4 MA多头/空头排列是真的吗?
MA策略验证——金叉和死叉 文章目录 MA策略验证——金叉和死叉公共代码论证步骤论证代码论证结果写在最后公共代码 code = 注意,这里改成股票代码 pro = ts.pro_api(tushare的token)df = pro.daily(ts_code=code)[...

基于SpringBoot+Vue的CSGO赛事管理系统设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...

Android系统APP之SettingsProvider
前言 SettingsProvider顾名思义是一个提供设置数据共享的Provider,SettingsProvider和Android系统其它Provider有很多不一样的地方,如: SettingsProvider只接受int、float、string等基本类型的数据;SettingsProvider由Android系…...
go入门实践二-tcp服务端
文章目录 前言接口与方法并发-协程项目管理bufio包使用其他代码 前言 上一篇,我们通过go语言的hello-world入门,搭建了go的编程环境,并对go语法有了简单的了解。本文实现一个go的tcp服务端。借用这个示例,展示接口、协程、bufio的…...

SprinMVC获取请求参数
SprinMVC获取请求参数 Spring MVC 提供的获取请求参数的方式 通过 HttpServletRequest 获取请求参数通过控制器方法的形参获取请求参数使用 RequestParam 注解获取请求参数通过实体类对象获取请求参数(推荐) 通过ServlstAPI获取 将HttpServletRequest…...

orangepi 4lts ubuntu安装RabbitMQ
4lts的emmc 系统安装选文件系统格式 ext4 需先安装erlang: sudo apt install erlang 安装RabbitMQ: sudo apt install rabbitmq-server - 添加用户以便远程访问: - 账号密码都是admin: sudo rabbitmqctl add_user admin admin -sudo rabbitmqct…...

SolidWorks 3D Interconnect介绍
目前市面上有的三维设计软件有很多,如UG、Pro/E、CATIA等,而且每个三维设计软件都会生成自己文件格式。由于产品设计的原因,我们避免不了的会需要去使用不同三维设计软件的文件,这对于工程师来说其实是一件比较麻烦的事。 为什么…...
MBG中update语句的区别
int updateByPrimaryKey(User record) thorws SQLException 按主键更新 int updateByPrimaryKeySelective(User record) thorws SQLException 按主键更新值不为null的字段 使用以上的方式更新数据时必须提供主键,MyBatis根据主键进行数据记录的更新。 int updateBy…...

论文阅读 - Few-shot Network Anomaly Detection via Cross-network Meta-learning
论文链接:https://arxiv.org/pdf/2102.11165.pdf 目录 摘要: 引言 问题定义 方法 Graph Deviation Networks Cross-network Meta-learning 摘要: 网络异常检测旨在找到与绝大多数行为显着不同的网络元素(例如节点、边、子图…...

秋招算法备战第37天 | 738.单调递增的数字、968.监控二叉树、贪心算法总结
738. 单调递增的数字 - 力扣(LeetCode) 这个问题是关于找到一个小于或等于给定数字n的最大单调递增数字。 我们可以将数字n转换为字符数组,然后从左到右扫描,寻找第一个违反单调递增条件的位置。一旦找到这样的位置,…...

Windows server上用nginx部署vue3项目
Windows server上用nginx部署vue3项目 一、Node中node_modules文件夹及package.json文件的作用说明二、VUE3项目打包三、Windows Server上的Nginx部署 一、Node中node_modules文件夹及package.json文件的作用说明 node_modules是安装node后用来存放用包管理工具下载安装的包的…...

计算机视觉与图形学-神经渲染专题-pi-GAN and CIPS-3D
《pi-GAN: Periodic Implicit Generative Adversarial Networks for 3D-Aware Image Synthesis》 摘要 我们见证了3D感知图像合成的快速进展,利用了生成视觉模型和神经渲染的最新进展。然而,现有的方法在两方面存在不足:首先,它们…...

【FAQ】EasyGBS平台通道显示在线,视频无法播放并报错400的排查
EasyGBS是基于国标GB28181协议的视频云服务平台,它可以支持国标协议的设备接入,在视频能力上能实现直播、录像存储、检索与回放、云台控制、告警上报、语音对讲、平台级联等功能,既能作为业务平台使用,也能作为能力层平台调用。 我…...
G1和CMS
G1垃圾回收器要点: 1.什么是G1垃圾回收器: G1是一款专门针对于拥有多核处理器和大内存的机器的收集器,在满足了GC响应时间的延迟可控的情况下,也会尽可能提高的程序的吞吐量 2.G1垃圾回收器的优点: ①与CMS收集器一…...
详解Linux中的socket函数
2023年8月3日,周四下午 目录 函数原型参数domain参数type参数protocol举例说明参数type和参数protocol之间的关系 函数原型 #include <sys/socket.h>int socket(int domain, int type, int protocol);参数domain domain是“域”的意思,其值为AF…...
React Antd 实现表格合计功能
思路:首先拿到 表格数组对象,然后写一个工具类,然后向数组对象最后插入一条数据,这条数据的字段时根据表格数组里合计算出来的。 代码如下,需根据各自业务稍作改动: <Table dataSource{tableData}column…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...

动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
第21节 Node.js 多进程
Node.js本身是以单线程的模式运行的,但它使用的是事件驱动来处理并发,这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能。 每个子进程总是带有三个流对象:child.stdin, child.stdout和child.stderr。他们可能会共享…...
Vuex:Vue.js 应用程序的状态管理模式
什么是Vuex? Vuex 是专门为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 在大型单页应用中,当多个组件共享状态时,简单的单向数据流…...

信息收集:从图像元数据(隐藏信息收集)到用户身份的揭秘 --- 7000
目录 🌐 访问Web服务 💻 分析源代码 ⬇️ 下载图片并保留元数据 🔍 提取元数据(重点) 👤 生成用户名列表 🛠️ 技术原理 图片元数据(EXIF 数据) Username-Anarch…...