使用 mitmproxy 进行流量分析:调试和安全完整指南
本文探讨了用于分析 HTTP/HTTPS 流量的 Mytemproxy 工具及其在安全和调试方面的应用。.

使用 mitmproxy 进行流量分析:调试和安全完整指南

本文将介绍用于分析和调试 HTTP/HTTPS 流量的 mitmproxy 工具。从安装和设置到安全提示和实际应用,本指南将帮助您有效地管理流量。.
0 股票
0
0
0
0

 

介绍

mitmproxy 是一个功能强大且灵活的工具,可用于检查、操作和分析流量。 HTTP/HTTPS 在开发环境中,它用于对移动和 Web 应用程序进行安全测试和调试。本指南提供分步实施说明、实用示例和常用配置(包括)。 透明代理本文回顾了安全提示和可扩展性方法。.

本文面向网站管理员、开发人员、DevOps 和安全团队,并提供示例和可执行的 Linux 命令。.

 

为什么要使用mitmproxy分析流量?

mitmproxy 通过安装本地证书,可以查看 TLS 加密的请求和响应(中间人攻击控制)在客户端;此功能非常适合调试 API、分析应用程序行为、安全测试以及录制/播放流量。.

该套装包含工具 mitmproxy (交互的), mitmdump (用于脚本和后端) mitmweb (网页界面)。.

Python脚本可以自动执行过滤、日志记录和有效载荷修改等操作。此工具是 Dockersystemdiptables/nftables 它兼容并可用作 显式 或者 透明代理 这是。.

 

实际应用案例

 

API 和移动调试

要解决 JSON 问题、CORS 错误或 OAuth 身份验证问题,可以在移动设备和服务器之间放置 mitmproxy,并观察请求/响应。.

简单方法:将客户端设置为 mitmproxy 服务器的 IP 地址(默认端口) 8080)并在设备上安装 CA 证书。.

 

渗透测试和安全评估(符合法律原则)

对于渗透测试,mitmproxy 可以进行逻辑攻击、令牌泄漏检查和 TLS 分析。. 务必签订书面合同并获得许可。 避免未经许可收集敏感数据。.

 

交通记录和回放

要重现错误或进行负载测试,您可以使用捕获的流量: 服务器回放 通过运行游戏来重新评估服务器或客户端的行为。.

 

安装和工具

 

在 Debian/Ubuntu 上进行基本安装

使用 pip 安装(推荐用于最新版本):

pip3 install mitmproxy

从软件包安装(简单但较旧):

sudo apt update
sudo apt install mitmproxy

 

快速执行

三种主要工具:

  • mitmproxy — 控制台交互界面

  • mitmdump — 适用于录制脚本和后端

  • mitmweb — 带有图形用户界面的 Web 界面

执行示例:

mitmweb --listen-port 8080 --showhost

 

在 Docker 中运行

docker run --rm -p 8080:8080 -p 8081:8081 -v $(pwd)/certs:/home/mitmproxy/.mitmproxy mitmproxy/mitmproxy mitmweb --web-host 0.0.0.0

 

设置为显式代理(客户端配置)

一般步骤:

  1. 运行 mitmproxy:

    mitmproxy --listen-port 8080
  2. 生成并安装 CA 证书:

    运行 mitmproxy 后,CA 在 ~/.mitmproxy/ 已放置(文件) mitmproxy-ca-cert.pem).

    在客户端浏览器或操作系统上,将证书查看为: 相信 安装(Windows:MMC > 证书;macOS:钥匙串;Android:设置 > 安全 > 从存储安装)。.

 

透明代理模式(无需客户端手动配置)

对于无法在客户端配置代理设置的环境(例如物联网设备或内部网络),请使用以下方法: 透明的 此模式需要流量路由。 iptables/nftables/TPROXY 而且内核中已启用 IP 转发。.

 

启用IP转发

sudo sysctl -w net.ipv4.ip_forward=1

 

iptables 示例:将 HTTP/HTTPS 重定向到 8080 端口

将同一台机器上的 TCP 端口 80 和 443 转发到端口 8080(用于本地流量):

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080

 

以透明模式运行 mitmproxy

mitmproxy --mode transparent --listen-port 8080

注意:对于透明模式下的 HTTPS 流量,客户端必须安装 CA。为了在网络边缘实现可扩展部署,请使用 TPROXY + nftables 用于保留客户端的原始 IP 地址。.

 

记录、存储和转换流

 

使用 mitmdump 进行录制

mitmdump -w flows.mitm

 

读取已记录的文件

mitmproxy -r flows.mitm

 

转换为 HAR/pcap 格式

mitmproxy/mitmdump 具有导出功能(mitmweb 具有导出 HAR 的选项)。.

对于 pcap 文件,您可以同时运行 tcpdump,然后使用 pcap 分析 Wireshark:

sudo tcpdump -i eth0 -w capture.pcap port 80 or port 443

如果您需要在 Wireshark 中分析 TLS,并且您拥有浏览器的控制权,您可以这样做: SSL密钥日志文件 启用此功能可生成客户端密钥并将其传递给 Wireshark。.

 

脚本和插件

mitmproxy 与 Python 集成,您可以编写插件。以下示例展示了如何记录日志并修改 JSON 响应体。.

from mitmproxy import http
import json

def response(flow: http.HTTPFlow):
    if "api.example.com" in flow.request.pretty_host():
        # log URL
        print(flow.request.url)
        # modify JSON response
        if "application/json" in flow.response.headers.get("content-type", ""):
            data = json.loads(flow.response.get_text())
            data["injected"] = True
            flow.response.set_text(json.dumps(data))

运行插件:

mitmdump -s modify_response.py

 

过滤器和流程搜索

过滤器的实用示例:

  • 仅显示对特定域的请求: ~d example.com

  • 仅显示包含 5xx 错误的响应: 约500-599年

使用以下设置运行 mitmproxy 的示例:

mitmproxy --set stream_large_bodies=2m --showhost

 

TLS分析和技术细节

mitmproxy 可以 TLS 客户端问候密码套件和 SNI 并协助进行指纹采集过程。.

要对开发环境中的 TLS 进行全面分析,请安装 CA 并收集相关信息。 JA3 或者 UADetector 有用。.

 

可扩展性和性能

mitmproxy 它基于 Python,应该在合适的硬件上运行,或者对于繁重的工作负载,可以在集群上运行。.

对于高扩展性应用:使用专用服务器或具有强大网络功能的云实例,例如具有 10Gbps 端口的云服务器。.

在需要具备抗攻击能力的生产环境中,请使用防病毒服务器。DDoS 以及负载均衡器。我们公司与 全球85多个地点 它能够部署在边缘点,这对于减少交易和游戏中的延迟非常有用。.

 

运营安全和隐私

只有在获得明确许可的情况下才能对网络进行分析。未经合法许可记录流量属于违法行为。.

将 CA 私钥存储在硬件或密钥管理器中,并限制访问。.

日志可能包含敏感数据(令牌、cookie);请指定保留策略并对其进行加密。.

对于敏感环境(支付、银行卡),规则 PCI/DSS 并且仅在测试阶段使用中间人攻击工具。.

如果用于交易或游戏分析,请使用具有适当 SLA 和 DDoS 防护功能的专用交易 VPS 或游戏 VPS。.

 

实际案例:移动端、API 和回放

 

移动应用调试

  1. 在笔记本电脑上运行mitmproxy:

    mitmweb --listen-host 0.0.0.0 --listen-port 8080
  2. 将笔记本电脑连接到同一个 Wi-Fi 网络;例如,IP 地址。 192.168.1.10.

  3. 在手机的 Wi-Fi 设置中,将代理设置为手动,并设置 IP 地址。 192.168.1.10 和港口 8080 放上去。.

  4. 在手机上安装mitmproxy证书。.

  5. 在mitmweb上查看和筛选流量。.

 

录制和回放 API 流量以进行测试

记录:

mitmdump -w api_flows.mitm

播送:

mitmdump --server-replay api_flows.mitm --server-replay-nopop

 

与其他工具(Wireshark、Burp、CI)集成

使用 tcpdump 捕获 pcap 文件,然后在 Wireshark 中进行分析。.

Mitmproxy 可以用作 Burp 或任何其他分析器的流量预处理器。.

在 CI/CD 中:使用 mitmdump 捕获流量样本并在集成阶段播放它们以模拟真实世界的情况非常有用。.

 

按应用程序进行最佳配置

用于交易: 低延迟VPS,服务器靠近交易所,网络采用BGP协议并配备合适的CDN。使用专用的交易VPS以测试模式运行mitmproxy,并配合独立的日志记录工具,以免干扰交易执行引擎。.

游戏规则: 低延迟游戏VPS。注意:仅限mitmproxy。 TCP/HTTP 支持;要分析UDP,您需要使用其他工具,例如: tcpreplay/Wireshark转动/轻敲 使用。.

用于人工智能/渲染: mitmproxy 可用于调试模型 API;对于繁重的网络处理,请使用图形服务器(GPU 云)并将 mitmproxy 放置在单独的计算服务器上。.

 

在进行任何分析之前,务必先获得服务所有者或用户的书面许可。.

银行卡信息、密码和令牌等数据应妥善保管,并在使用后删除。.

生产环境中,请使用受保护的服务器和防 DDoS 解决方案,以防止滥用。.

 

结论与实用建议

使用 mitmproxy 进行流量分析是一款灵活的工具,可用于调试、安全测试和流量分析。它安装简便、支持 Python 脚本编写,并具备录制/回放功能,使其在开发、质量保证和某些安全场景中非常有用。.

对于大规模生产和分析,请使用具有强大网络、防 DDoS 功能且部署在靠近用户位置的服务器。.

 

常见问题解答

您可能也喜欢