tiennm99/mv3-detection-markers
GitHub: tiennm99/mv3-detection-markers
这是一个用于测试Chrome扩展安全扫描器的良性标记集合,模拟恶意行为以验证检测准确性。
Stars: 0 | Forks: 0
# MV3 检测标记
触发特定可疑行为签名的良性 Chrome MV3 扩展程序。用作企业扩展扫描器的测试案例。
**不会捕获或窃取任何真实用户数据。** 每个标记测试一个检测类别,并记录一个字面标记字符串(并可选地 POST 到本地测试端点)。
## 测试端点设置(可选)
标记 02 和 03 会 POST 到 `http://127.0.0.1:8080/marker`。要在加载前捕获这些 POST 请求,运行任何本地日志记录器:
```
# 快速 netcat 日志记录器(回显原始请求)
while true; do nc -l -p 8080 -q 1; done
# 或一个小型 Python 捕获器
python3 -c "
from http.server import BaseHTTPRequestHandler, HTTPServer
class H(BaseHTTPRequestHandler):
def do_POST(self):
n = int(self.headers.get('content-length', 0))
print(self.rfile.read(n).decode(errors='replace'))
self.send_response(204); self.end_headers()
HTTPServer(('127.0.0.1', 8080), H).serve_forever()
"
```
如果跳过此步,`fetch` 调用会静默失败,标记仍会记录到扩展的 service worker / content script 控制台。
## 加载步骤
1. 打开 `chrome://extensions`(Chrome MV3)或 `brave://extensions`(Brave)。
2. 开启**开发者模式**(右上角)。
3. **加载已解压的扩展程序** → 选择一个标记文件夹。
4. 记下生成的扩展 ID。
5. 对以下对象运行您的扫描器:
* 文件夹(静态分析),以及
* 加载的扩展 ID(动态/运行时分析)。
6. 记录每个标记的判定结果。
对于标记 09(清单差异),请先加载 `v1-narrow`,运行扫描器,然后移除并加载 `v2-wide`。扫描器应将权限扩展标记为基于差异的信号。
## 标记矩阵
| # | 文件夹 | 检测信号 | 真实世界示例 |
|---|---|---|---|
| 01 | `01-form-hook` | 内容脚本在 `` 上为 `input[type=password]` 添加 `keydown` 事件监听器 | 凭据键盘记录器模式 |
| 02 | `02-cookie-read` | Service worker 在安装时调用 `chrome.cookies.getAll({})` | 会话窃取模式(Cyberhaven 集群) |
| 03 | `03-beacon-c2` | `chrome.alarms` 定期 POST 到外部主机 | C2 信标 |
| 04 | `04-dnr-redirect` | `declarativeNetRequest` 静态重定向规则 | MV3 专用攻击向量(替代 MV2 webRequest 阻塞) |
| 05 | `05-broad-perms` | `` 主机权限 + cookies + scripting + webRequest + tabs 组合 | 仅清单信号 - 纯静态测试 |
| 06 | `06-programmatic-inject` | 在每个标签页 `complete` 事件时调用 `chrome.scripting.executeScript` | 无 `content_scripts` 声明的隐蔽内容脚本注入 |
| 07 | `07-clipboard-read` | 在 Ctrl+V 时调用 `navigator.clipboard.readText()` | 剪贴板窃取器模式 |
| 08 | `08-tab-capture` | 在点击操作时调用 `chrome.tabs.captureVisibleTab` | 屏幕抓取器模式 |
| 09 | `09-manifest-delta` | v1 范围狭窄 → v2 扩展到 `` + cookies + scripting | 更新投毒模式(Cyberhaven 技术) |
## 这些标记**不做什么**
* 不会读取按键值、密码内容、Cookie 值或剪贴板文本。
* 不会向非本地目标传输任何数据。
* 不会将任何内容持久化到磁盘或 `chrome.storage`。
* 不会修改表单行为、页面 DOM 或用户操作。
可在一次性的 Brave/Chrome 开发者配置文件中安全加载。仍建议使用干净的虚拟机,以免企业 EDR 的任何误报操作干扰您的日常浏览器。
## 按类别召回率评分
对于每个标记,记录:
| 标记 | 扫描器判定 | 触发的检测规则 | 备注 |
|---|---|---|---|
| 01 | 标记 / 干净 | | |
| 02 | | | |
| ... | | | |
**干净**列中的任何内容 → 表示存在差距。与先前的检测类别报告(`research-260516-0713-malicious-chrome-extension-samples-for-detection-testing.md`,§2)交叉引用,将未命中映射到缺失的规则类型。
## 移除标记
每个都是独立的扩展程序 — 通过 `chrome://extensions` → 回收站图标移除。无系统更改,无注册表项,无残留文件。
## 未解决问题
1. **清单差异 `key` 字段。** 对于要求两个版本共享同一扩展 ID(即通过 ID 比较)的扫描器,您必须向两个 `manifest.json` 文件注入一个稳定的 `key` 字段。通过 `chrome` 打包 v1 文件夹一次并复制生成的公钥来生成一个。这里跳过了,因为大多数静态扫描器按名称/文件夹进行差异比较;如果您的扫描器需要 ID 稳定性,请指出这一点。
2. 当您准备就绪时,可以添加上述任何标记的 **MV2 对应版本** — 说一声,我将一并生成它们。
标签:Chrome MV3, CMS安全, EICAR, JavaScript, Web API, 企业安全, 可疑行为模拟, 安全扫描器测试, 扩展安全扫描, 攻击模拟, 教育用途, 数据可视化, 检测标记, 浏览器扩展安全, 网络安全, 网络资产管理, 自定义脚本, 良性恶意软件, 逆向工具, 隐私保护, 驱动签名利用