sensepost/pipetap

GitHub: sensepost/pipetap

一款 Windows 命名管道流量分析与中间人测试工具,支持实时捕获、拦截修改和重放管道通信。

Stars: 300 | Forks: 20

# pipetap [![Twitter](https://img.shields.io/badge/twitter-%40leonjza-blue.svg)](https://x.com/leonjza) [![build-artefacts](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/3693d225ea122153.svg)](https://github.com/sensepost/pipetap/actions/workflows/build.yml) `pipetap` 帮助你观察、拦截和重放 [Windows Named Pipes](https://learn.microsoft.com/en-us/windows/win32/ipc/named-pipes) 上的流量。 - **流量捕获** – 基于 Windows API hook 记录命名管道相关流量。 - **十六进制/文本查看器** – 检查原始 payload(支持 UTF-8 或 UTF-16 解码)。 - **即时编辑** – 拦截请求/响应,修改字节,并在目标看到之前注入替换内容。 - **客户端** – 向命名管道发送任意流量。 - **远程客户端** – 在目标进程*内部*打开远程命名管道,实现无缝的双向测试。 - **多目标** – 在一个 GUI 会话中管理和切换多个 PID。 ![screenshot](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/ad17434f65122156.png) ## 组件 - **支持 DLL** – 在目标进程内部 hook 命名管道 API 并流出遥测/事件数据。 - **GUI** – 连接到一个或多个 PID 的桌面应用程序,可视化流量,允许你过滤、编辑、重放或代理管道。 - **远程代理** – 从 GUI 在目标进程*内部*打开命名管道,并在不修改目标代码的情况下发送/接收数据。 ## 开发 关于该项目结构的更多信息,以及控制通道协议图,可以在 [development](./DEVELOPMENT.md) 中找到。 ## 二进制文件 如果你不想自己构建,可以在 releases 标签页获取二进制文件。 ## 构建 快速入门(如果你已经设置了 `VCPKG_ROOT`)。 ``` $preset = "x64-release" cmake --preset $preset cmake --build --preset $preset --target pipetap-gui pipetap-dll ``` 要求: - Windows 10/11 - Visual Studio 2022 (MSVC) - [vcpkg](https://github.com/microsoft/vcpkg) 已引导并集成到 Visual Studio 通过 PowerShell 构建: - 打开一个 "Developer PowerShell for VS 2022" 终端会话,并 `cd` 到你下载此源代码的目录。 - 如果你还没有将 `VCPKG_ROOT` 环境变量设置为你的 `vcpkg` 路径: - 运行 `$env:VCPKG_ROOT="C:\Users\\Downloads\vcpkg"`(替换为你的路径)。 - 选择要构建的预设。运行 `$preset = "x64-release"` 进行 64 位发布构建。其他预设包括:`x86-debug`、`x86-release`、`x64-debug`、`x64-release`、`arm64-debug` 和 `arm64-release`。 - 运行:`cmake --preset $preset`。 - 运行:`cmake --build --preset $preset --target pipetap-gui pipetap-dll pipe-test-client pipe-test-server` 通过 Visual Studio 2022 构建: - 确保你在名为 `VCPKG_ROOT` 的全局环境变量中设置了 `vcpkg` 的路径。如果没有,在提升的 cmd.exe 会话中运行 `setx VCPKG_ROOT "C:\src\vcpkg" /M`。 然后: - 打开 Visual Studio(社区版即可)。 - 在打开对话框中,选择 "Open a local folder",然后选择 `pipetap` 根目录。 - 给 Visual Studio 一些时间来读取项目配置,然后选择你想要的构建目标(可能是 release 版本)。 - 最后,浏览到 Build -> Build All。 产物: - `pipetap-dll.dll` – 注入到目标进程中 - `pipetap-gui.exe` – 桌面前端 一些辅助工具: - `pipetap-test-server.exe` - 用于测试的小型命名管道服务器 - `pipetap-test-client.exe` - 用于测试的小型命名管道客户端 ## 使用 当你首次运行 `pipetap-gui.exe` 时,你会进入 Proxy 工具。这是你用来观察、修改和从捕获的命名管道通信中提取数据的主要视图。要在流量日志中获取一些数据,你需要先注入支持 DLL。 ### injector 通过导航到 Injector 工具,选择你的目标进程,并点击 Inject Support DLL 来注入支持 DLL。你也可以双击目标进程来注入 DLL。如果你的目标在提升的上下文中运行,pipetap 也应该被提升 —— 如果需要,请以管理员身份重新启动。查看 Injector Status 日志以确定注入是否成功。 ### proxy 注入 DLL 后,导航回 Proxy 工具。应该会打开一个连接到支持 DLL 的新标签页。如果你没有选择 Auto-connect proxy,你需要打开一个新标签页(最后注入的 PID 在创建新标签页时也会是一个选项)并连接到它。如果一切正常,命名管道通信应该会出现在你的 Traffic Log 中。如果没有,请与你的目标交互以尝试生成流量。 你可以选择性地启用请求/响应编辑器。这将阻塞目标进程中的通信,允许你编辑 payload(作为 UTF-8/UTF-16 字符串或十六进制),Burp 风格。 ### replay Replay 工具是一个命名管道客户端,你可以在其中连接到命名管道并开始与其交互。你可以手动连接,或者在 proxy traffic log 或 pipelist 中右键单击并 Send to Replay 以设置一个预填充的 replay 标签页。 与 proxy 非常相似,你可以发送和接收数据,这些数据将被记录到 traffic 标签页。 ### pipelist Pipelist 工具是一个简单的命名管道枚举工具,用于显示命名管道服务器及其绑定的进程(以及其他信息)。 ## 调试 支持 DLL 将日志行写入 `%appdata%\pipetap\injected.log`。 ## Python SDK 支持 DLL 的功能之一是它充当 TCP 到命名管道的代理。注入后,它会打开一个 TCP 端口(默认:61337,如果可用),允许任意外部客户端连接并从支持 DLL 内部发起命名管道连接。如果你的目标命名管道需要更高级的数据处理,这会特别方便。 Python SDK 位于 [pipetap-python](./pipetap-python/) 目录中,也发布在 PyPI 上。 ### sdk 用法 获取源代码或使用 `pip install pipetap` 安装 python 包。在 `pipetap` 可用后,你可以连接到远程命名管道(从已加载支持 DLL 的进程中),使用: ``` from pipetap import PipeTap tap = PipeTap() tap.connect("pipetap.test", "10.0.0.1") tap.send("a string\n") tap.send(b"\xdd\x00\x00\xdd") print(tap.recv()) ``` ## 许可证 `pipetap` 采用 [GNU General Public v3 License](https://www.gnu.org/licenses/gpl-3.0.en.html) 授权。超出此许可证范围的权限可能可在 [http://sensepost.com/contact/](http://sensepost.com/contact/) 获取。
标签:API Hooking, Bash脚本, C++, Conpot, Elastic Stack, GUI工具, IPC通信, Named Pipes, SensePost, SSH蜜罐, Windows内核, Windows安全, 中间人攻击, 二进制分析, 云安全运维, 代理工具, 命名管道, 安全调试, 数据包编辑, 数据擦除, 流量拦截, 流量重放, 白帽子, 端点可见性, 进程注入, 逆向工具