spider12223/PenScope

GitHub: spider12223/PenScope

一款基于 Chrome 扩展的被动侦察与攻击面映射工具,通过零额外请求的方式自动提取浏览器流量、DOM、JS 运行时和脚本源码中的安全敏感信息。

Stars: 0 | Forks: 0

# PenScope **被动侦察与攻击面映射工具 —— 不发送任何请求。** PenScope 是一款 Chrome 扩展程序,通过观察浏览器已有的数据来映射网站的整个攻击面。它会读取流量元数据、扫描 DOM、提取 JavaScript 运行时状态、检索脚本源代码、捕获控制台输出,并运行 Chrome 内置的安全审计 —— 所有这些均在不发送任何额外请求的情况下完成。 ## 为什么选择 PenScope? 每个网站向你浏览器发送的数据比你想象的要多得多。JavaScript 包中的 API endpoint、全局变量中的权限对象、控制台日志中的 Auth token、配置标志背后被禁用的功能,以及亟待枚举的顺序 ID。 PenScope 能自动捕获所有这些内容。高级渗透测试人员需要在 DevTools 中手动操作 30 分钟的工作,PenScope 只需 2 秒即可完成。 **零请求。零检测。完整攻击面。** ## 它能捕获什么 | 层级 | PenScope 发现的内容 | |---|---| | **网络** | 每个 endpoint、参数、标头、cookie、重定向、WebSocket 帧 —— 均从浏览器流量中被动获取 | | **安全标头** | 缺失的 CSP、HSTS、X-Frame-Options、CORS 错误配置、cookie 属性 | | **机密信息** | Azure SAS token、AWS 密钥、JWT、API 密钥、硬编码凭证、内部 URL、连接字符串 | | **JavaScript 运行时** | 框架状态、全局配置对象、原型方法、被禁用的功能 | | **脚本源码检索** | 通过 Chrome Debugger 协议对每个已加载的 JS 文件进行检索,查找 API endpoint、机密信息、管理员路径、TODO 注释、危险函数 —— 零网络请求 | | **控制台捕获** | 应用产生的每一条 `console.error`、`console.warn`、`console.log` —— 开发人员经常在此泄露敏感数据 | | **Chrome 审计** | 混合内容、cookie 问题、CSP 违规、已弃用的 API —— 以编程方式运行 Chrome 自带的安全审计器 | | **DOM** | 隐藏字段、内联事件处理程序、无 CSRF 保护的表单、文件上传点、data 属性、noscript 内容 | | **IDOR 目标** | URL 路径中具有风险上下文的顺序数字 ID 和 UUID | | **Source Maps** | 从 HTTP 标头、内联注释和 Debugger.scriptParsed 元数据中检测暴露的 `.map` 文件 | | **执行上下文** | 页面上的每个 iframe、web worker 和跨域上下文 | ## 架构 ``` ┌─────────────────────────────────────────────────────┐ │ PenScope v5 │ ├──────────┬──────────┬───────────────────────────────┤ │ Passive │ Content │ Deep (chrome.debugger) │ │ Layer │ Script │ │ ├──────────┼──────────┼───────────────────────────────┤ │webRequest│ DOM scan │ Network.getResponseBody │ │ headers │ forms │ Runtime.evaluate (stealth) │ │ cookies │ secrets │ Debugger.getScriptSource │ │ params │ storage │ Log.entryAdded (console) │ │ timing │ links │ Audits.issueAdded (security) │ │ │ tech │ Page.loadEventFired │ │ │ │ Runtime.executionContextCreated │ └──────────┴──────────┴───────────────────────────────┘ ↓ ↓ ↓ └───────────┴──────────────┘ ↓ ┌──────────────┐ │ Popup UI │ │ 9 tabs + Deep│ │ → Claude │ │ → Export │ └──────────────┘ ``` **5 个文件。约 1,700 行代码。压缩后 50KB。无依赖。** ## 隐蔽设计 PenScope v5 在架构上是不可见的: - **无 inject.js** —— 没有任何脚本被注入到页面 DOM 中 - **无原型补丁** —— XHR、Fetch、addEventListener 保持原样未被修改 - **无页面修改** —— 目标网站的 JavaScript 环境保持纯净 - **无额外请求** —— 仅读取浏览器已下载的内容 - **无 `web_accessible_resources`** —— 页面无法看到任何 `chrome-extension://` URL 所有运行时分析均通过 `chrome.debugger` → `Runtime.evaluate` 进行,该过程通过 Chrome 内部调试通道在页面上下文中执行。页面无法检测到这一操作。 **检测面:** Chrome 调试器横幅( unavoidable,通过 Deep 模式由用户主动 opt-in 启用)以及 `document` 上用于临时 DOM 追踪的一个不可枚举属性。仅此而已。 ## 使用的 CDP 域 PenScope 利用了 **6 个 Chrome DevTools Protocol 域**(总共 28 个可用域): | 域 | 用途 | |---|---| | **Network** | 请求/响应拦截、WebSocket 帧、响应体、时间统计 | | **Runtime** | 用于隐蔽 JS 提取的 `evaluate` 命令、执行上下文追踪 | | **Page** | 加载事件检测,用于定时提取触发器 | | **Debugger** | `scriptParsed` + `getScriptSource` —— 从 V8 的缓存中检索每个已加载的脚本 | | **Log** | 控制台消息捕获(错误、警告及包含敏感内容的信息) | | **Audits** | Chrome 内置安全审计器(混合内容、cookie、CSP、已弃用的 API) | ## 安装 1. 下载或克隆此代码库 2. 打开 `chrome://extensions/` 3. 启用“开发者模式”(右上角) 4. 点击“加载已解压的扩展程序” 5. 选择 `penscope/` 文件夹 6. 在任意网站上点击 PenScope 图标 ## 使用方法 1. **正常浏览** —— PenScope 会被动捕获所有内容 2. **点击 PenScope 图标** —— 在 9 个标签页中查看所有发现 3. **启用 Deep 模式** —— 激活 chrome.debugger 以获取响应体、运行时分析、脚本检索、控制台捕获和 Chrome 审计 4. 在开启 Deep 模式时**重新加载页面**以实现最大程度的捕获(脚本必须在 Debugger.enable 之后加载) 5. **→ Claude** —— 将结构化的渗透测试简报复制到剪贴板 6. **Export → Full Report** —— 下载包含所有数据的综合性 Markdown 报告 ### 导出选项 | 格式 | 用途 | |---|---| | **→ Claude** | 复制到剪贴板 —— 粘贴到 Claude 中进行 AI 驱动的分析 | | **Full Report (.md)** | 完整的 Markdown 报告,无截断 —— 你的渗透测试交付物 | | **JSON (full)** | 用于程序化分析的原始数据转储 | | **Burp URL list** | 所有发现的 URL,用于导入 Burp Suite | | **Param wordlist** | 所有参数名称,用于模糊测试 | | **Endpoints (txt)** | 以制表符分隔的 endpoint 列表 | ## 用户界面 采用带有磨砂玻璃面板的 Glassmorphism(玻璃拟态)暗色主题: - 标题使用 **Plus Jakarta Sans** 字体,代码使用 **JetBrains Mono** 字体 - 紫色/粉色渐变强调色并带有发光效果 - 严重性颜色标记的徽章(critical → info) - 点击任意值即可复制到剪贴板 ## 横向对比 | 特性 | PenScope | Burp Suite | 浏览器 DevTools | |---|---|---|---| | 发送的额外请求 | **0** | 多个 (代理) | 0 | | JS 运行时提取 | **自动** | 手动控制台 | 手动控制台 | | 框架状态转储 | **自动** | 不可用 | 手动 | | 脚本源码检索 | **自动** | 需要扩展 | 手动 | | 控制台捕获 | **自动** | 不可用 | 手动监控 | | Chrome 安全审计 | **自动** | 不可用 | 手动 | | 结构化 AI 报告 | **一键生成** | 不可用 | 不可用 | | 检测风险 | **接近零** | 可检测 (代理) | 无 | | 设置时间 | **2 秒** | 10 分钟以上 | 无 | | 价格 | **免费** | $449/年 | 免费 | PenScope 并非要取代 Burp —— 它是让 Burp 变得更强大。首先运行 PenScope 以映射攻击面,然后使用 Burp 测试 PenScope 的发现。 ## 隐私 - 所有数据均保存在浏览器的内存中 - 绝不会向任何服务器发送任何数据 - 无分析、无遥测、无云端同步 - 当标签页关闭或您点击 Clear 时,数据即被清除 - “→ Claude”按钮仅复制到您的剪贴板 —— 它不会自动发送到任何地方 ## 版本历史 ### v5.0 — 隐蔽 + CDP 域 (当前版本) - 完全移除 inject.js —— 零页面修改 - 新增 Debugger 域(脚本源代码提取) - 新增 Log 域(控制台捕获) - 新增 Audits 域(Chrome 安全发现) - 新增 Runtime 执行上下文追踪 - Glassmorphism 暗色 UI 重新设计 - 全报告导出(Markdown 下载) - 智能 Claude 按钮(根据大小智能选择剪贴板/下载) - 修复了路径检测中 `/app/` 的误报 - 过滤了执行上下文中的 chrome-extension 噪音 ### v4.1 — 运行时分析 - 框架状态提取(Angular、React、Vue) - XHR/Fetch 拦截(在 v5 中为提升隐蔽性已移除) - 原型链遍历 - 临时 DOM 检测 ### v4.0 — Deep 模式 - chrome.debugger 集成 - 响应体扫描(35 种模式) - Auth 标头捕获 - WebSocket 帧捕获 - TLS 证书分析 - IDOR 路径参数检测 - 25 个 endpoint 自动标记 ### v3.0–v3.5 - 60 多种机密信息模式 - 80 多种技术指纹 - CSP 分析 - CORS 检测 ## 免责声明 PenScope 是一款用于授权安全测试和教育目的的被动观察工具。它仅读取您的浏览器已经接收到的数据。在测试您不拥有的系统之前,请务必获取适当的授权。 ## 许可证 MIT
标签:API发现, DevSecOps, DOM扫描, Web安全, 上游代理, 前端安全, 威胁情报, 安全工具库, 实时处理, 密码管理, 开发者工具, 数据可视化, 数据泄露, 浏览器扩展, 网络协议分析, 网络安全, 自定义脚本, 蓝队分析, 被动侦察, 隐私保护, 零请求