news 2026/5/15 7:38:14

第三章:数据窃听与中间人攻击 —— 深入网络通信

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第三章:数据窃听与中间人攻击 —— 深入网络通信

1. 看不见的“电线”

在前两章,我们关注的是App本身(代码逻辑、内存数据)。但在真实世界中,App很少是孤岛。它需要和服务器“对话”来获取数据。

渗透测试员的思维

如果我能站在App和服务器中间,偷听它们的对话(Sniffing),甚至篡改对话内容(Tampering),我就能发现更多漏洞。

核心概念:中间人攻击(MITM)

想象一下,App(小明)要给服务器(小红)寄一封加密信(HTTPS)。正常情况下,只有小红有钥匙。但在MITM攻击中,攻击者(你)拦截了信件,告诉小明“我是小红”,同时告诉小红“我是小明”。这样,所有的加密内容都会经过你的手解密。


2. 基础准备:搭建“窃听室”

要进行窃听,我们需要将手机的网络流量“引流”到我们的电脑上。

2.1 工具组合

  • Burp Suite:渗透测试界的“瑞士军刀”,用于拦截和修改HTTP/HTTPS流量。

  • 手机代理设置:将手机的WiFi代理设置为电脑的IP地址(通常是8080端口)。

2.2 安装证书(关键步骤)

HTTPS之所以安全,是因为App只信任权威机构(CA)颁发的证书。为了解密流量,我们需要让手机信任我们的窃听工具(Burp)

  1. 在手机浏览器访问http://burp,下载Burp证书。

  2. 将证书重命名为.crt格式。

  3. 在安卓设置中安装该证书(用户证书)。

现状

在 Android 7(Nougat)之前,这招很管用。但在 Android 7+,系统不再信任用户安装的证书。这就引出了我们在第二章用 Frida 解决的问题:SSL Pinning(证书锁定)


3. 实战一:越权漏洞(IDOR)挖掘

这是API渗透中最常见、奖金最高的漏洞之一。

场景

某社交App,用户A的ID是1001,用户B的ID是1002

App 请求服务器获取用户资料时,发送的API请求如下:

GET /api/user/profile?user_id=1001 HTTP/1.1 Host: api.target.com Cookie: session=abc123

3.1 发现漏洞

  1. 使用 Burp Suite 拦截这个请求。

  2. user_id=1001修改为user_id=1002

  3. 点击“发送”。

结果

服务器返回了用户B的完整资料(手机号、邮箱、私密照片)。

漏洞原理:服务器只验证了你登录了(Cookie有效),但没有验证“你登录的用户ID”是否等于“你请求查看的用户ID”。

3.2 自动化扫描

利用 Burp 的Intruder​ 模块,我们可以自动遍历user_id从 1 到 10000,瞬间窃取全站用户数据。


4. 实战二:短信轰炸与逻辑炸弹

很多App有“发送验证码”功能。

原始请求

POST /api/send_sms HTTP/1.1 {"phone": "13800138000", "type": "login"}

4.1 绕过频率限制

开发者通常会在前端或后端限制:“同一个手机号,60秒内只能发一次”。

绕过手法

  1. 参数污染:修改phone参数为13800138000,13800138001(如果后端解析不当,可能发给两个号)。

  2. 空格绕过"phone": " 13800138000 "(后端可能只校验纯数字,带空格算新号码)。

  3. 遍历ID:如果App是通过user_id发送短信,直接遍历user_id,就能给全站用户发垃圾短信(短信轰炸)。


5. 实战三:重放攻击(Replay Attack)

在支付场景中,这是致命的。

场景

用户购买商品,App生成一条支付请求发给服务器。

请求包

POST /api/pay HTTP/1.1 {"order_id": "ORD123", "amount": 100, "sign": "a1b2c3d4..."}

攻击复现

  1. 拦截这个请求。

  2. 不修改任何参数,直接点击“Repeat”(重放)

  3. 再次点击“Repeat”

结果

如果服务器没有做幂等性校验(检查这个订单是否已经付过款),用户可能会被扣费两次、三次……甚至一百次,而只收到一份商品。


6. 进阶:非HTTP协议的渗透

并非所有App都使用HTTP/HTTPS。很多IM(即时通讯)App、游戏App使用TCP/UDP​ 私有协议。

6.1 流量分析

  • 工具:Wireshark(替代Burp)。

  • 技巧:虽然私有协议可能是二进制的(乱码),但你可以寻找规律。比如前4个字节代表长度,后2个字节代表指令ID。

6.2 实例:篡改游戏坐标

某AR游戏通过TCP发送位置信息:

[包头][X坐标: 100][Y坐标: 200][校验和]

攻击

使用 Frida Hook 发送函数,或者直接在 Wireshark 拦截并修改数据包,将坐标改为X: 99999, Y: 99999

结果:游戏角色瞬间“瞬移”到地图外,实现外挂功能。


7. 防御方视角:如何防住“中间人”

作为开发者,不能只靠HTTPS。

  1. 证书锁定(SSL Pinning)

    在App代码里硬编码服务器的证书哈希值。即使手机安装了Burp证书,App也会拒绝连接。

    (注:我们在第二章演示了如何绕过它,但在没有Root的普通用户手机上,它能防住90%的脚本小子。)

  2. 双向认证(mTLS)

    不仅服务器要有证书,App(客户端)也要有证书。没有客户端证书,连不上服务器。这让抓包变得极难。

  3. 签名校验

    服务器端在接收关键参数(如支付金额)时,必须验证签名。且签名密钥不能像第一章那样硬编码在代码里。


下一章预告

《第四章:深入系统底层 —— Root提权与内核漏洞》

当我们面对银行App或高防护系统时,应用层手段(Frida、Burp)可能会失效。此时,我们需要从系统层面入手,获取Root权限,甚至利用内核漏洞(CVE)来彻底接管设备。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 7:36:03

AI图表生成工具箱:基于工具调用协议实现稳定可靠的图表自动化

1. 项目概述:一个为AI生成图表而生的工具箱最近在折腾一些自动化文档和知识图谱的项目,发现一个痛点:让AI(特别是大语言模型)生成准确、可用的图表(比如流程图、架构图、时序图)实在是太难了。你…

作者头像 李华
网站建设 2026/5/15 7:33:09

基于3D打印与Qi标准的DIY无线充电座制作全攻略

1. 项目概述:从零打造你的专属无线充电座如果你和我一样,桌上总是堆满了各种充电线,手机、手表、耳机,每一样都要一根专属的线,不仅杂乱,每次充电还得对准那个小小的接口,实在谈不上什么“科技感…

作者头像 李华
网站建设 2026/5/15 7:32:43

3D打印机械键盘键帽全流程:从CAD建模到FDM/SLA实战

1. 项目概述:为什么选择自己打印键帽?玩机械键盘的朋友,或多或少都经历过“键帽选择困难症”。市面上的成品键帽,要么是千篇一律的ABS或PBT材质,要么是价格高昂、设计独特的客制化套件,而且往往很难找到完全…

作者头像 李华
网站建设 2026/5/15 7:31:44

脉动阵列架构与DNN加速:FORTALESA容错设计解析

1. 脉动阵列架构与DNN加速基础在深度学习硬件加速领域,脉动阵列(Systolic Array)因其规则的并行计算结构而成为主流选择。这种架构最早由H.T.Kung在1982年提出,其核心思想是通过数据的有节奏流动(如同心脏的收缩舒张)实现高效的矩…

作者头像 李华
网站建设 2026/5/15 7:31:21

K3 BOS单据转换实战:巧用过渡单据解决小批量生产领料难题

1. 小批量生产领料的痛点与解决方案 在制造业的生产管理中,小批量、多规格产品的原材料领用一直是个让人头疼的问题。想象一下这样的场景:车间接到一批定制化订单,每个产品需要的原材料规格、重量都不相同。按照传统做法,生产任务…

作者头像 李华