Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
PacketPirate — 一款无头、可脚本化、基于命令行的 MITM 代理,专为在 Windows 系统上进行网络流量拦截、分析和修改而设计。 | Kitploit
工具/GitHubGitHub/d0rb/packetpirate
数据包嗅探与分析Web代理与拦截脚本与自动化API安全测试信息收集Web安全渗透测试学习与教育日志分析
GitHubd0rb/packetpirate

PacketPirate

一款无头、可脚本化、基于命令行的 MITM 代理,专为在 Windows 系统上进行网络流量拦截、分析和修改而设计。

8个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

PacketPirate

PacketPirate

一款无头、可脚本化、基于命令行的 MITM 代理,专为 Windows 系统上的网络流量拦截、分析与修改而设计。它的工作方式类似于业界标准的图形界面代理,但针对自动化环境、无头运行以及与开发工作流的集成进行了优化。

注意:这是一个使用 Node.js 实现的独立、零依赖工具。

概述

  • PacketPirate 是一款系统级网络拦截工具。通过利用 Windows HTTP 代理设置,它可以捕获你机器上任何应用程序的流量——包括 Web 浏览器(Chrome、Edge)、CLI 工具(curl、git)以及桌面应用(Spotify、VS Code、Discord)。

  • 全局系统拦截:捕获来自任何遵循系统代理的进程的 HTTP/HTTPS 流量。

  • 进程感知:精确定位是哪个应用在产生流量。

  • 动态规则引擎:可通过 JSON 配置,对匹配的流量执行特定操作(例如,令牌提取、请求日志记录)。

  • 完整流量日志:能够导出完整的请求与响应体(HTML、JSON、二进制)以供分析。

  • 无头架构:完全通过 CLI 运行,适用于后台服务和自动化测试流水线。

  • 自定义证书管理:包含用于生成并信任自签名根 CA 以进行 HTTPS 解密的实用程序。

安装

先决条件

  • Node.js(v14 或更高版本)
  • Windows 10/11(系统代理自动化功能必需)
  • PowerShell(用于证书管理脚本)

设置

克隆仓库并初始化环境:

root@kitploit:~
# 1. Generate local SSL certificates
npm run setup

# 2. Trust the generated Root CA
npm run trust
# Note: Requires administrative approval to add the certificate to the Trusted Root Store.

用法

启动代理服务器:

root@kitploit:~
npm start

这将启动标准 CLI 界面。

CLI 操作

交互式菜单提供以下控制选项:

  1. 扫描进程:列出具有已建立网络连接的活跃进程。支持将流量过滤到特定 PID(例如,仅监控 code.exe)。
  2. 切换过滤器:启用/禁用特定的监控子系统:
    • API URL 扫描:记录请求的 API 端点。
    • Header 转储:将完整请求头输出到控制台。
    • Token 搜索:基于启发式规则检测 Authorization 头中的 Bearer 令牌。
    • 完整流量转储:将所有流量(请求头 + 完整请求体)捕获到结构化的 jsonl 日志文件中。
  3. 启动代理:将服务器绑定到第一个可用端口(默认 8080),并配置 Windows 系统代理。
  4. 生成规则:帮助快速创建新的拦截模式。

配置

拦截逻辑在 config/rules.json 中定义。该文件允许对流量处理进行持久化配置。

Schema(结构说明):

root@kitploit:~
{
  "rules": [
    {
      "name": "Description of rule",
      "host": "hostname.match",
      "urlPattern": "regex_pattern",
      "action": "log | save_token",
      "outputFile": "path/to/output.txt",
      "tokenFilter": "regex_filter"
    }
  ]
}

示例:

root@kitploit:~
{
    "rules": [
        {
            "name": "Test API",
            "host": "jsonplaceholder.typicode.com",
            "action": "save_token",
            "outputFile": "test_tokens.txt"
        }
    ]
}

技术细节

架构

该工具采用双服务器架构:

  1. 代理服务器:处理初始的 CONNECT 隧道请求,并执行主机过滤。
  2. MITM 服务器:使用动态生成的 CA 解密 HTTPS 流量,根据规则引擎检查负载,并将请求转发到上游。

网络处理

  • 端口管理:自动检测 EADDRINUSE 错误并递增端口号,直到找到空闲端口。
  • 系统代理:通过 PowerShell 直接操作注册表,以在系统范围内强制应用代理设置。
  • 清理:实现了 SIGINT/SIGTERM 处理程序,确保退出时还原代理设置,避免网络连接问题。

证书生命周期与安全性

该工具依赖双证书模型进行 HTTPS 拦截:

  1. 根 CA 生成:npm run setup 创建自签名根 CA(PacketPirateRoot)。
    • 逻辑:使用 PowerShell 的 New-SelfSignedCertificate 生成有效期为 5 年的密钥对。
    • 导出:密钥将以密码 "headless" 导出到 src/certs/server.pfx(PKCS#12 格式)。
  2. 信任建立:npm run trust 将此根 CA 注入 Windows 的 CurrentUser\Root 存储中。
    • 安全范围:通过针对 CurrentUser 而非 LocalMachine,我们将信任范围限制在当前用户配置文件内,从而降低系统级风险。
    • 浏览器接受度:Chrome、Edge 和 IE 会继承此信任存储。Firefox 需要单独开启 security.enterprise_roots.enabled 选项才会遵循 Windows 信任存储。
  3. 移除:npm run untrust 提供干净的清理拆除。
    • 识别:脚本通过其唯一的 FriendlyName("PacketPirateRoot")定位证书,确保不会触碰其他用户证书。
    • 验证:移除后会执行检查,确认注册表中不再存在该证书的指纹(thumbprint)。

🎓 教学:我们是如何构建它的

本项目是使用 Node.js 进行系统编程的一个实际示例。它超越了典型的 Web 服务器,在更底层与操作系统和网络协议栈进行交互。

架构

root@kitploit:~
participant App as Application (VS Code)
participant OS as Windows OS
participant Proxy as Proxy Server
participant MITM as MITM Server
participant Web as Internet

Note over App,Proxy: 1. Plain HTTP Tunneling
App->>Proxy: CONNECT google.com:443
Proxy-->>App: 200 Connection Established

Note over Proxy,MITM: 2. The "Hand-Off" Trick
Proxy->>MITM: Pipe socket data (raw encrypted bytes)

Note over App,MITM: 3. TLS Handshake and Decryption
MITM-->>App: ServerHello (signed by local root CA)
App->>MITM: Encrypted request (GET /)

Note over MITM: 4. Interception Logic
MITM->>MITM: Decrypt → Inspect headers → Log

Note over MITM,Web: 5. Upstream Forwarding
MITM->>Web: New HTTPS request (GET /)
Web-->>MITM: Response
MITM-->>App: Response

核心概念

PacketPirate

1. "双服务器"模式

Node.js 自带的标准 http 模块很难在同一服务器实例上同时处理 CONNECT 方法(用于 HTTPS 隧道)和普通 HTTPS 流量。

  • 服务器 A(Net/HTTP):监听 8080 端口。它处理初始的 CONNECT 请求,并充当一个哑 TCP 管道。
  • 服务器 B(HTTPS):仅存在于内存中(或运行在随机端口上)。它持有私钥。
  • 技巧所在:当服务器 A 收到连接时,它会将 socket "移交"给服务器 B。服务器 B 会认为自己刚刚收到一个新连接,并开始 SSL 握手。这让我们可以无缝地解密流量。

2. 进程归属(netstat 技巧)

我们如何知道哪个应用在发送流量?TCP 数据包本身并没有携带"进程 ID"标签。

  • 临时端口:每个出站连接都使用一个随机的高位端口号(例如 54321)。
  • 关联:我们调用 netstat -ano 来查找端口 54321 对应的 PID。
  • 优化:对每个数据包都执行此操作会很慢,因此我们会缓存结果,或仅在必要时进行检查。

3. 流分叉(Stream Forking)

我们使用 Node.js Streams 来高效处理数据。我们不会等待完整的 10MB 响应下载完成后再显示它,而是对流进行"分叉":

  • 管道 1:流向客户端(保证应用继续正常工作)。
  • 管道 2:流向日志记录器(以便保存到磁盘)。 这是通过 PassThrough 流实现的,能够以极低的额外延迟进行实时监控。

许可证

GNU GPL v3.0

下载工具