Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
TATS — 分析并跟踪来自 Burp、mitmproxy 或 Chrome DevTools 捕获的 OAuth 2.0、OIDC 和 Microsoft Entra ID 令牌。可视化令牌生命周期,检测高风险作用域,并通过交互式仪表板导出令牌以供重放。 | Kitploit
工具/GitHubGitHub/icemoonhsv/tats
Web安全渗透测试身份与访问管理 (IAM)身份验证日志分析
GitHubicemoonhsv/tats

TATS

分析并跟踪来自 Burp、mitmproxy 或 Chrome DevTools 捕获的 OAuth 2.0、OIDC 和 Microsoft Entra ID 令牌。可视化令牌生命周期,检测高风险作用域,并通过交互式仪表板导出令牌以供重放。

查看仓库
393661个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

TATS — Token 分析与追踪系统

跨捕获的网络流量追踪 OAuth 2.0、OIDC 和 Microsoft Entra ID 令牌。将 Burp Suite XML 导出、mitmproxy 流文件或实时 Chrome DevTools Protocol 流摄取到单个 SQLite 数据库中,然后提供交互式 Web 仪表板,用于过滤令牌、遍历交换、发现高风险作用域、导出令牌以供重放,并将令牌生命周期可视化为 Mermaid 图。

状态: TATS 在个人 / 参与测试使用场景下已稳定。针对 Microsoft 365 / Entra 生态系统(FOCI、BroCI/NAA、ESTSAUTH 会话 Cookie、entrascopes.com 增强)进行了优化,但也可用于任何标准 OAuth/OIDC 流量。


为什么存在

当你通过 Burp / mitmproxy 代理一个长时间的 Microsoft 365 或 Azure 会话时,产生的捕获数据非常庞大,而大多数工具要么:

  • 一次只显示一个令牌(Burp 的 JWT 扩展),或者
  • 不遵循 Microsoft 的 OAuth 方言(FOCI、BroCI、ESTSAUTH Cookie),或者
  • 不追踪 WebSocket 帧,而 Teams / Skype / SignalR 正是在其中发送令牌,或者
  • 不告诉你哪些令牌当前仍然有效。

此工具提取每一个观察到的 access / refresh / id 令牌,对它们进行指纹识别以便跨来源关联同一令牌,解码 JWT 声明,将 Microsoft 客户端 / 资源 GUID 对照 entrascopes.com 进行解析,并将整个图景渲染为单个仪表板——包括一个 refresh-token 链视图,用于追踪 FOCI 跨应用交换和 BroCI 嵌套应用令牌签发。

本项目主要面向研究和教育目的,但提供了命令预览和令牌导出等功能选项,可支持某些攻击性工具。


功能

核心

  • 一个工具中的三种摄取来源:
    • ingest — Burp Suite “Save items” XML 导出
    • mitm — mitmproxy .mitm 流文件(HTTP 和 WebSocket 帧)
    • cdp — 通过 DevTools Protocol 实时附加到 Chrome / Edge (实时,无需代理 CA 即可捕获 TLS 解密后的 HTTP 和 WebSocket 帧;通过浏览器级自动附加追踪每个现有标签页以及运行期间打开的每个标签页)
  • 一个规范 SQLite 存储,仪表板从中读取。每次摄取过程都可以使用 --append 运行以合并到现有数据库;令牌会被 upsert(使用次数 + 观察到的生命周期累积),事件和交换会被追加,行的 source_tag 记录每个见过该令牌的摄取过程。
  • 实时 Web 仪表板,由 stdlib HTTP 服务器提供。每 5 秒轮询数据库,并在底层数据变化时重新渲染——因此正在运行的 CDP 捕获会近乎实时地更新仪表板。
  • 核心路径无专有依赖。 Burp 摄取、数据库层、Web UI 和 CDP 附加均仅使用 stdlib。mitmproxy 导入是唯一可选依赖(pip install mitmproxy)。

令牌分类与增强

  • OAuth 正文键(access_token、refresh_token、id_token)和 Cookie 名称启发式规则决定令牌类型。
  • Microsoft 会话 Cookie(ESTSAUTH、ESTSAUTHPERSISTENT、ESTSAUTHLIGHT、SignInStateCookie)被明确识别为 refresh 等效令牌(否则它们会被通用的 “auth” Cookie 提示错误分类)。
  • JWT 声明(header + payload)被解码并原样存储——绝不截断。
  • Microsoft FOCI(Family of Client IDs)通过令牌端点响应中的 foci 字段检测。
  • Microsoft BroCI / Nested App Authentication 通过请求正文中的 brk_client_id、brk_redirect_uri 和 brk-<guid>:// 重定向方案检测。
  • 可选的 --enrich 标志从 https://entrascopes.com/ 获取 firstpartyscopes.json 和 resources.json,并将 appid / azp / aud GUID 解析为带可点击链接的友好名称。

仪表板卡片

  • 摘要磁贴 — 令牌计数、主机、交换(带有 FOCI / BroCI 标注)以及增强状态指示器。
  • 用户 — 按 upn / preferred_username / unique_name / email / name 对令牌分桶,回退到 sub@iss 或 oid,并单独呈现仅应用和未知身份桶。当用户出现在 ≥2 个 source_tag 中时,每个身份行会显示一个 captures 徽章(跨捕获存活,这是 --append 研究的核心信号),外加一个 first_seen → last_seen 时间跨度,以及一个 timeline 按钮,用于在 Sequence-diagram 标签页上高亮该用户的每个令牌。
  • 令牌有效性 — 当前有效与已过期 access token 的计数、refresh-token 过期状态(对于不透明令牌显示 “unknown expiry”),以及一个 top-3 “next to expire” 列表,每 30 秒自动刷新。
  • 客户端 — 交换中出现过的每个不同应用(appid / azp / 表单正文 client_id / brk_client_id / brk_nested_id),带有 FOCI / brokerable / broker / nested 徽章。
  • 受众 — 观察到的每个 aud 声明,尽可能解析为 entrascopes 资源名称。
  • 租户 — 不同的 tid 值,以及令牌 / 用户 / 应用计数。
  • 主机 — 每个主机的事件、不同 bearer 接收方、不同签发者和交换计数。
  • 特权作用域与角色 — 将每个令牌的 scp / scope / roles 与一份精选的高影响 Microsoft Graph 权限和 Azure 资源作用域监视列表进行比对。
  • 受众 / 主机不匹配 — 标记每个 (token, host) 对,其中令牌被用于与其 aud 声明不一致的主机(表明凭据泄露或滥用)。
  • 认证方法(amr)— pwd / mfa / pop / smartcard 分布。
  • 安全功能 — 标记 Continuous Access Evaluation(xms_cc=CP1)、持有证明绑定(cnf 声明,并跨受众检测共享 kid)、step-up 认证要求(acrs)以及 acr 认证上下文级别。每一行都可点击,并将 Tokens 标签页过滤为仅显示携带该标记的令牌。
  • Refresh-token 链 — 遍历交换边以识别轮换谱系、最长链长度和空闲 refresh token。每条链显示一个 Δ scopes 列(跨跳添加 / 移除的作用域,悬停时显示完整的逐跳差异),并标记其中添加的作用域匹配特权作用域监视列表的链,带有 ⚠ priv 徽章——这是 FOCI / BroCI 式权限扩展研究信号。
  • 来源 — 按 source_tag 统计令牌计数,以便查看每次摄取过程产生了多少行。

Tokens / Exchanges 标签页

  • 点击列标题进行排序。
  • 多选复选框驱动一个工具栏:
    • Highlight in Graph — 对选中节点加黄色强调。
    • Isolate in Graph — 仅重绘显示选中令牌及其交换对象的图。
    • Show in Sequence — 为选中令牌显示聚焦的序列图。
  • 点击一行可展开内联面板,其中包含完整 JWT header + payload(原始 JSON)、所有事件、相关交换、可重放导出按钮(raw / Bearer / curl / JSON / roadtx token cache),以及一个命令预览块,包含 roadtx describe、roadtx auth、curl、Python requests 和 PowerShell Invoke-RestMethod 的可复制粘贴片段。
  • 过滤器: 类型 chips(access / refresh / id / unknown)、格式 chips(jwt / opaque)、used / unused 下拉框、有效性下拉框(any / valid / expired / unknown expiry)、FOCI-only、BroCI-only、has-app-match、has-resource-match,以及跨 fp / sample / claims / host / app / resource / source_tag / user 的自由文本搜索。
  • CSV / JSON 导出当前已过滤 + 排序的行。
  • URL hash 持久化 — 活动标签页和每个过滤器状态都会序列化到 URL hash,因此指向特定过滤视图的链接可共享。

WebSocket 支持

  • mitmproxy 和 CDP 捕获会保留每个 WebSocket 文本 / 二进制帧负载。帧内容会使用与处理 HTTP 正文相同的 JSON / form / raw-JWT 遍历器扫描令牌。
  • 在帧中找到的令牌会生成事件,角色为 ws-frame-sent / ws-frame-received,来源为 ws[body_json[<key>]],并带有一个 ws_session_id,用于将单个 WebSocket 连接内的所有帧分组。
  • 握手会作为普通 HTTP 事件捕获,因此带入升级过程的 Cookie / bearer 令牌也会被追踪。

隐私

  • 数据库存储每个观察到的令牌的 SHA-256 指纹(前 12 个十六进制字符)和 12 字符前缀。完整令牌字符串绝不会离开输入文件。

  • 解码后的 JWT 声明内容(header + payload,包括 oid、sub、upn、email、tid、作用域列表等)默认原样存储,因为它们正是分析的全部意义。只要存在 JWT,就应将数据库和任何共享的仪表板 URL 视为敏感信息。

  • --redact-claims(可用于 ingest、mitm 和 cdp)会在列出的声明值进入数据库之前,将其替换为稳定的哈希占位符。默认字段列表涵盖 sub、oid、upn、email、name、unique_name、preferred_username、emails、mail、ipaddr、given_name、family_name。传入显式的逗号分隔列表(例如 --redact-claims sub,upn,oid)可覆盖默认值。相同输入始终映射到相同占位符,因此仪表板的 Users / Tenants 分组仍然有效,而不会泄露用户身份。

  • --store-tokens(可用于 ingest、mitm 和 cdp,默认关闭)选择将完整令牌字符串写入数据库,以便仪表板可以提供:

    • Copy raw / Copy Bearer / Copy curl 操作。
    • 下载令牌 JSON(raw + claims + observed events)。
    • 复制 / 下载为 roadtools token cache(将文件放入 .roadtools_auth,任何 roadtx 子命令都会读取它)。
    • 每个令牌的 Command preview 块,使用令牌实际的 tid、appid 和 aud 声明预填最常见的重放调用——roadtx describe、roadtx auth、curl、Python requests、PowerShell Invoke-RestMethod。
    • /api/export?fps=... 在一个 JSON 包中返回最多 200 个令牌(raw、claims、events、exchanges),供下游工具使用。

    启用此项会将数据库变成一份完整的凭据——重放任何捕获会话所需的每个字节都在其中。可与 --redact-claims 结合使用以清理解码后的 JWT 视图,但请注意原始令牌内部仍携带未脱敏的声明编码。当该标志关闭时,仪表板的命令预览块仍会渲染,只是使用 <TOKEN> 作为占位符,因此可作为语法参考;导出按钮会渲染一个提示,要求重新摄取。


安装

要求

  • Python 3.10+(使用适合 match 语句的类型语法和现代 dataclasses)。已在 3.12 上测试。
  • 无需构建步骤。克隆仓库并直接运行 python -m tats。

可选依赖

需求安装
mitm 子命令pip install mitmproxy
从 Chrome / Edge 实时捕获无 — 使用 stdlib WebSocket 客户端
--enrich(entrascopes.com)无 — 使用 urllib.request

快速安装

从检出目录运行(无需安装):```bash git clone tats cd tats python -m tats --help

仪表盘的 HTML / CSS / JS 位于 `tats/static/`,并在首次导入时加载,因此无需构建步骤——直接从检出目录运行该模块即可。

**作为包安装(会提供 `tats` 控制台脚本):**```bash
pip install .                # core only
pip install .[mitm]          # + mitmproxy flow file support
pip install .[test]          # + pytest for the test suite
pip install .[all]           # everything

安装完成后,你可以通过其短名称调用该工具:```bash tats ingest engagement.xml -o tokens.db --enrich tats serve tokens.db

如果你只需要 Burp / CDP 路径,该文件完全自包含,仅依赖 Python 标准库——无需安装或额外依赖。

---

## 快速开始

**分析 Burp XML 导出文件并打开仪表盘:**```bash
tats ingest examples/fixture.xml -o tokens.db --enrich
tats serve tokens.db

将 Burp 捕获与 mitmproxy 流文件合并到一个数据库中:```bash tats ingest engagement.xml -o tokens.db --enrich tats mitm chat-session.mitm -o tokens.db --enrich --append tats serve tokens.db

**从 Chrome 浏览器实时捕获(可查看 TLS 解密后的 HTTP + WebSocket 帧,无需代理 CA)——让工具启动浏览器:**```bash
# Terminal 1 — auto-launch Chrome / Edge / Chromium / Brave
tats cdp -o tokens.db --enrich --launch-chrome

# Terminal 2 — open the dashboard (auto-refreshes every 5 s)
tats serve tokens.db

当你按下 Ctrl-C 终止 cdp 命令时,启动的浏览器会被终止,其临时配置文件也会被删除。

如果你更愿意附加到一个已经运行的浏览器,请使用 --remote-debugging-port=9222 --user-data-dir=/tmp/cdp-profile 启动它,并在运行 cdp 时不带 --launch-chrome。

在共享数据库之前对其进行脱敏(PII 脱敏):```bash tats ingest engagement.xml -o tokens.db
--enrich --redact-claims

every sub / oid / upn / email / name / unique_name / preferred_username

(and a few related claims) is replaced with a stable hash placeholder

脱敏是内容稳定的:相同的值映射到相同的占位符,因此仪表板的按用户分组仍然有效,而无需显示用户。

一旦数据开始流入,仪表板的标题会显示 `live · updated <time>`。

---

## 子命令

每个子命令都接受 `--help` 以获取规范选项列表。下面的说明解释了*何时*以及*如何*使用每一个子命令。

### 全局标志

这些标志适用于每个子命令,并且位于子命令名称*之前*:
下载工具