leftp/pipes

GitHub: leftp/pipes

位置无关代理枚举与连通性测试Shellcode,解决在严格代理限制下探测可用出口的问题。

Stars: 27 | Forks: 4

# 位置无关代理枚举器外壳代码 (PIPES) PIC shellcode 从 Windows 注册表、PAC 文件和 Firefox 首选项中枚举代理配置,然后通过 Microsoft 终结点使用多种用户代理测试出站连接。 终结点包括: * http://www.msftconnecttest.com/connecttest.txt * http://www.msftncsi.com/ncsi.txt 某些环境配置了严格的代理设置,或根据目标使用不同的代理,这使得出站连接更加困难。在这些情况下,此枚举非常有用。 它可以作为其他 shellcode 的构建模块——或者转换为 Crystal Palace 模块(待办事项)。 ## 流程 1. **枚举代理**(按顺序): - 从注册表获取 IE/系统代理 - 从注册表策略获取 Chrome 代理 - 从所有用户配置文件的 `prefs.js` 获取 Firefox 代理 - PAC 文件 URL(IE、Chrome、Firefox) - 直接连接回退(Edge、Chrome、Firefox 用户代理) 2. **测试出站连接**:对每种代理配置: - 尝试通过 Microsoft 终结点连接 - 使用合适的用户代理进行测试 - 报告成功或失败 - 如果设置 `STOP_ON_FIRST=1` 且成功,则提前停止 3. **报告**:如果设置了 `REPORT_URL`,则发送 base64 编码的 GET 请求到配置的 URL ## 构建 ### 前置条件 - MinGW-w64 工具链(`x86_64-w64-mingw32-g++`) - NASM 汇编器 - Python 3 及 `pefile` 库 ### 构建命令 ``` make x64 # Build x64 shellcode make x64 STOP_ON_FIRST=1 # Stop on first successful egress make x64 REPORT_URL="https://example.com/report" # Report successful egress make clean # Clean build artifacts ``` **配置选项**: - `STOP_ON_FIRST=1`:首次成功出站后停止(默认:0) - `REPORT_URL="url"`:成功时发送 base64 编码的 GET 请求 - 格式:`https://domain.com/report?data=` - 数据:代理、用户代理、成功状态 **调试输出**(启用 `DEBUG` 标志):可通过 WinDbg、DebugView 或 Process Monitor 查看。 ## 参考 - **[Stardust](https://github.com/Cracked5pider/Stardust)** - 现代 32/64 位位置无关植入模板 - **[Secure_Stager/Stardust](https://github.com/Octoberfest7/Secure_Stager)** - PIC shellcode 基础、PEB 遍历、函数解析 - **[LetMeOut](https://github.com/EncodeGroup/AggressiveProxy/tree/master/LetMeOutSharp)** - 多年前用 C# 编写的代理枚举和 PAC 解析逻辑 - **[PIC-Library](https://github.com/silentwarble/PIC-Library)** - PIC 实用函数 ## 致谢 Lefteris (Lefty) Panos @ 2025
标签:C/C++, Crystal Palace, Egress Testing, Firefox 首选项, MinGW-w64, msftconnecttest, msftncsi, NASM, PAC 文件, PIPES, REPORT_URL, Shellcode, STOP_ON_FIRST, Windows 代理枚举, Windows 联网, x64, 事务性I/O, 云资产清单, 代理配置, 位置无关代码, 取证, 客户端加密, 技术调研, 数据展示, 数据泄露防护, 注册表, 红队, 网络探测, 调试输出, 逆向工具, 逆向工程, 隐蔽通信