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安全, 上游代理, 前端安全, 威胁情报, 安全工具库, 实时处理, 密码管理, 开发者工具, 数据可视化, 数据泄露, 浏览器扩展, 网络协议分析, 网络安全, 自定义脚本, 蓝队分析, 被动侦察, 隐私保护, 零请求