Skip to content
返回

TLS 中间人攻击与 HTTPS 流量解密

Published:  at  17:33

前置条件

HTTPS 简介

攻击原理

工具准备

攻击流程

  1. 客户端通过 SOCKS5 发起 HTTPS(默认端口 443)请求。
  2. 中间人拦截 TLS 握手,获取服务器证书。
  3. 使用本地 CA 签发伪造的目标网站证书。
  4. 浏览器信任该证书后,会建立与中间人的加密通信。
  5. 中间人解密数据后,再与真实服务器通信,实现转发与透明解密。

准备工作


流程图

sequenceDiagram
    participant Client as 客户端浏览器
    participant MITM as 攻击者 (中间人)
    participant Server as 真实服务器

    Note over Client,MITM: 客户端通过 SOCKS5 代理发起 HTTPS 请求
    Client->>MITM: ClientHello
    MITM->>Server: ClientHello (转发)
    Server->>MITM: ServerHello + 证书
    MITM->>Client: 伪造证书 + ServerHello (由自签 CA 签发)
    Client->>MITM: Finished (建立加密信道)
    MITM->>Server: Finished (与服务器建立加密信道)
    Note over MITM: 中间人可解密/查看数据并转发
    Client->>MITM: Application Data (加密)
    MITM->>Server: Application Data (加密)

Mermaid 图表

🔗 在线编辑 Mermaid 图表:https://mermaid.live/


抓包命令示例

TLS 1.2

curl.exe --tls-max 1.2 https://www.duanxu.online -v

抓包结果存放路径:./pcapng/tls1.2.pcapng


TLS 1.2 全握手时序图

共享密钥计算流程

RSA 模式: 1. 客户端生成 PreMasterSecret(48 字节)。 2. 使用服务器公钥加密该值并发送给服务器。 3. 服务器使用私钥解密,得到相同的 PreMasterSecret

DH/ECDHE 模式: 1. 客户端与服务器交换各自的 DH/ECDHE 公钥参数,具有前向安全性。 2. 双方通过 对方公钥 + 自己私钥 计算出相同的 PreMasterSecret

MasterSecret 生成公式:

MasterSecret = PRF(PreMasterSecret, ClientRandom, ServerRandom)

常见握手消息

sequenceDiagram
    participant Client as Client (192.168.31.149)
    participant Server as Server (43.255.29.253)

    Note over Client,Server: TCP 三次握手
    Client->>Server: SYN
    Server->>Client: SYN+ACK
    Client->>Server: ACK

    Note over Client,Server: TLS 1.2 全握手开始
    Client->>Server: ClientHello
    Server->>Client: ServerHello + Certificate + ServerKeyExchange + ServerHelloDone
    Client->>Server: ClientKeyExchange + ChangeCipherSpec + Finished
    Server->>Client: NewSessionTicket + ChangeCipherSpec + Finished

    Note over Client,Server: 握手完成,进入加密通信
    Client->>Server: Application Data (加密)
    Server->>Client: Application Data (加密)

TLS 1.3 全握手时序图

共享密钥计算流程

  1. 客户端生成临时密钥对 (ClientPrivateKey, ClientPublicKey)
  2. 服务器生成临时密钥对 (ServerPrivateKey, ServerPublicKey)
  3. 双方通过 DH 算法计算出相同的 SharedSecret,并利用 HKDF 派生最终会话密钥。
sequenceDiagram
    participant Client as Client (192.168.31.149)
    participant Server as Server (43.255.29.253)

    Note over Client,Server: TCP 三次握手
    Client->>Server: SYN
    Server->>Client: SYN+ACK
    Client->>Server: ACK

    Note over Client,Server: TLS 1.3 全握手开始
    Client->>Server: ClientHello (KeyShare + SupportedVersions + Random)
    Server->>Client: ServerHello (KeyShare + SupportedVersions + Random)
    Server->>Client: Certificate + CertificateVerify + Finished
    Client->>Server: Finished

    Note over Client,Server: 握手完成,进入加密通信
    Client->>Server: Application Data (加密)
    Server->>Client: Application Data (加密)

X.509 证书

1️⃣ 定义

2️⃣ 主要字段

字段说明
版本X.509 v1/v2/v3(v3 最常用)
序列号 (Serial Number)唯一标识证书
签发者 (Issuer)颁发机构(CA)信息
主体 (Subject)证书持有者信息
有效期 (Validity)NotBefore / NotAfter
公钥信息 (Subject Public Key Info)公钥及其算法
签名算法 (Signature Algorithm)CA 签名所用算法
扩展字段 (Extensions)v3 特有,如 keyUsagebasicConstraints
签名值 (Signature)颁发者私钥对证书内容的签名

3️⃣ 编码方式

4️⃣ 应用场景



下一篇
可视化安卓自动化工具:人人可用,无需写代码!