当前位置: 首页 > news >正文

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

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)来彻底接管设备。

http://www.jsqmd.com/news/820369/

相关文章:

  • RK3588 ELF 2开发板OpenCV4+Contrib交叉编译与NEON优化全攻略
  • HFSS新手避坑指南:手把手教你仿真带孔金属箱的屏蔽效能(附模型文件)
  • Lobe Icons:现代AI与工具类应用的SVG图标系统设计与工程实践
  • APDS9999三合一传感器实战:从硬件解析到代码应用
  • WC 2026 画树 补题记录
  • 低代码平台表单设计器 unione form editor 组件介绍--级联组件
  • LizzieYzy:围棋AI分析助你快速提升棋力的5个实用方法
  • CXL内存池实现GPU显存零拷贝访问
  • 靠谱轻钢别墅怎么选?内蒙古优质一站式建房改造企业精选推荐,农村别墅/景区房屋/自建房农村别墅,轻钢别墅建设公司有哪些 - 品牌推荐师
  • 在微控制器上实现256色游戏:CircuitPython图形优化与性能调优
  • 使用PCA9546 I2C多路复用器解决传感器地址冲突
  • 重新定义QT桌面应用:ElaWidgetTools如何颠覆传统Widget开发范式
  • 基于BERT与Neo4j的NLP知识图谱实战:从文本到结构化图谱全流程解析
  • 开源控制器图标库:一站式解决游戏UI跨平台适配难题
  • 2026电赛电源题通关指南:从Buck-Boost到宿舍断电(附双闭环保命源码)⚡
  • PointPillars 架构详解
  • Stream-Omni:动态调度实现大模型流式与高质量生成的平衡
  • 嵌入式游戏UI与动画实战:基于CircuitPython的对话框系统与位图动画实现
  • CircuitPython低分辨率LED矩阵高质量文本显示:DisplayIO缩放与IS31FL3741驱动实践
  • Thief-Book IDEA插件:IDE集成化文档阅读引擎的技术架构解析
  • BMP388/BMP390高精度气压传感器:从原理到Arduino/Python实战应用
  • 3步开启本地向量化:AnythingLLM原生嵌入器实战指南
  • PostgreSQL游标深度解析:大数据集处理与Python应用实践
  • GitHub代码仓库安全防护:基于ClamAV的PR恶意文件自动化扫描实践
  • CircuitPython移植《Chip‘s Challenge》:嵌入式游戏开发与资源优化实战
  • MCP23017 GPIO扩展芯片实战:I2C总线驱动与中断应用详解
  • CircuitPython嵌入式开发实战:内存管理与无线连接优化指南
  • 几何无衬线字体技术突破:Poppins跨语言排版解决方案实战指南
  • Go语言MCP服务器框架:快速构建AI模型外部工具集成
  • 仅限首批200名技术负责人开放|ElevenLabs中文定制音色微调手册(含v2.4.1未公开API参数表)