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

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

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

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

工具目录

分类

查看所有分类
Loading categories
TokenTacticsV2 — 出色的TokenTactics的一个分支,支持CAE和token endpoint v2 | Kitploit
工具/GitHubGitHub/f-bader/tokentacticsv2
钓鱼工具渗透测试云安全身份与访问管理 (IAM)身份验证红队
GitHubf-bader/tokentacticsv2

TokenTacticsV2

出色的TokenTactics的一个分支,支持CAE和token endpoint v2

查看仓库
444514天前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
root@kitploit:~
  ______      __                 __             __  _                     ___ 
 /_  __/___  / /_____  ____     / /_____ ______/ /_(_)_________   _   __ |__ \
  / / / __ \/ //_/ _ \/ __ \   / __/ __ `/ ___/ __/ / ___/ ___/  | | / / __/ /
 / / / /_/ / ,< /  __/ / / /  / /_/ /_/ / /__/ /_/ / /__(__  )   | |/ / / __/ 
/_/  \____/_/|_|\___/_/ /_/   \__/\__,_/\___/\__/_/\___/____/    |___(_)____/     

TokenTactics v2

这是 TokenTactics 的更新版本,原作者为 Stephan Borosh @rvrsh3ll 和 Bobby Cooke @0xBoku。

Azure JSON Web Token(“JWT”)操作工具集

Azure 访问令牌允许您以通过设备代码登录的用户身份向特定端点进行身份验证。如果您拥有 FOCI(客户端 ID 家族) 可用的刷新令牌,则可以使用它来获取所有已知 FOCI 能力端点 的访问令牌。由于刷新令牌还包含用户是否已完成多重身份验证的信息,因此您可以利用这一点。一旦拥有用户的访问令牌,就可能访问某些应用程序,如 Outlook、SharePoint、OneDrive、MSTeams 等。

例如,如果您拥有 Graph 或 MSGraph 刷新令牌,则可以连接到 Azure 并转储用户、组等。然后,根据条件访问策略,您可以切换到 Azure Core Management 令牌并运行 AzureHound。接着,获取 Outlook 访问令牌读取/发送电子邮件,或获取 MS Teams 访问令牌读取/发送 Teams 消息!

有关 Azure 令牌类型的更多信息,请参阅 Microsoft 标识平台访问令牌。

resources 文件夹中包含一些端点请求示例。此外,还有一个用于设备代码钓鱼的示例钓鱼模板。

您也可以将这些令牌与 AAD Internals 一起使用。我们强烈建议您查看这个出色的工具。

安装与使用

root@kitploit:~
Import-Module .\TokenTactics.psd1
Get-Help Get-EntraIDToken
Invoke-RefreshToSubstrateToken -Domain "myclient.org"

测试

测试套件需要 PowerShell 7 和 Pester 5.7.1。它使用模拟的 HTTP 响应,无需 Entra ID 凭据或网络访问。

root@kitploit:~
Install-Module Pester -RequiredVersion 5.7.1 -Scope CurrentUser
pwsh ./tests/Invoke-Tests.ps1

相同的测试套件可在 Linux、macOS 和 Windows 上运行,适用于每个拉取请求。

使用设备代码流程获取刷新令牌

root@kitploit:~
Get-EntraIDToken -Client MSGraph

用户登录后,您将看到 JWT,并将其保存在 $response 变量中。要访问访问令牌,请在 PowerShell 窗口中使用 $response.access_token 显示令牌。您也可以使用 $response.refresh_token 显示刷新令牌。提示:您需要刷新令牌来不断刷新为新令牌!

DOD/Mil 设备代码

root@kitploit:~
Get-EntraIDToken -Client DODMSGraph

使用密钥登录

[!IMPORTANT] 此功能在 v0.2.20 中引入,需要 PowerShell 7.0

如果您在第三方提供商(如 KeePassXC、Bitwarden、1Password 等)中创建了密钥,则可以导出私钥材料。

[!CAUTION] 导出私钥材料极其危险。请确保在继续之前了解相关风险。

KeePassXC 密钥文件格式原生受支持,您可以直接将 cmdlet 指向该文件。初始登录过程仅会获取所需的 ESTSAUTH cookie,您需要使用 Get-EntraIDTokenFromESTSCookie 将此 cookie 交换为持有者令牌(访问令牌、刷新令牌和 ID 令牌)。

root@kitploit:~
# 检索 ESTSAUTH cookie 值
Invoke-EntraIDPasskeyLogin -Verbose -KeyFilePath "C:\Users\Fabian\Microsoft.passkey"
# 将 ESTSAUTH cookie 交换为持有者令牌
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH

如果您有不支持的文件格式,可以手动指定所需的值来实现相同目标。

root@kitploit:~
Invoke-EntraIDPasskeyLogin -Verbose -UserPrincipalName "[email protected]" -UserHandle "XYZ" -CredentialId "9e9c8297-0cde-4726-8852-16c141e15bd3" -PrivateKey $PrivateKey
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH

使用 SCCAUTH cookie 获取访问令牌

如果您从已认证的 security.microsoft.com 会话(例如通过 Evilginx 或浏览器 DevTools)获取了 sccauth cookie,则可以使用它通过 Microsoft Defender XDR 门户获取大量资源的 Entra ID 访问令牌。

root@kitploit:~
# 使用 sccauth cookie 检索 Microsoft Graph 令牌
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -ResourceName MicrosoftGraph

# 明确提供 XSRF 令牌以跳过启动请求
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -XSRF "your_xsrf_value" -ResourceName Azure

# 使用自定义资源 URL
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -Resource "https://management.core.windows.net/"

支持的 -ResourceName 值:Azure, LogAnalytics, MATP, MCAS, MicrosoftGraph, MicrosoftOffice, Purview, PurviewACC, ThreatIntelligencePortal。

从 ESTSAuth* Cookie 获取刷新令牌

root@kitploit:~
Get-EntraIDTokenFromESTSCookie -ESTSAuthCookie "0.AbcApTk..."

此模块使用授权代码流程,通过 ESTSAuth(或 ESTSAuthPersistent)cookie 获取访问令牌和刷新令牌。如果您通过 Evilginx 钓取了会话或以其他方式获取了此 cookie,这将非常有用。

请确保使用正确的 cookie!ESTSAuthPersistent 仅在 CA 策略实际授予持久会话时才有用。否则,您应该使用 ESTSAuth。通常可以根据长度判断使用哪个,较长的 cookie 是您想要使用的 :)

注意:这并非在所有情况下都有效,因为它可能需要用户交互。如果是这种情况,请使用上述设备代码流程,或尝试 roadtx interactiveauth --estscookie

此功能从原作者仓库中 rotarydrone 的 拉取请求 反向移植而来。

使用授权代码流程获取刷新令牌

此 oauth2 流程 最著名的示例之一(至少在 2025 年初)是 Intune 公司门户,它允许一些资源绕过设备合规性要求。

此信息首先由 @dirkjan 发布,随后由 @TEMP43487580 在 Black Hat Europe 上广泛发布。不久之后,JumpsecLabs 发布了博文 和 POC TokenSmith。现在,TokenTacticsV2 也提供了相同的能力。

Get-AzureAuthorizationCode 将生成一个 URL,您可以用于身份验证。

Get-EntraIDTokenFromAuthorizationCode 可以使用完整 URL,也可以使用参数 AuthorizationCode 和 RedirectUrl 将授权代码交换为访问令牌和刷新令牌。之后,您可以像往常一样尝试访问其他资源。

如何使用新的 cmdlet

刷新到新的访问令牌

如果您未指定刷新令牌,cmdlet 将默认使用 $response.refresh_token。

root@kitploit:~
Invoke-RefreshToOutlookToken -domain "myclient.org"

$OutlookToken.access_token

使用访问令牌连接到 AzureAD

root@kitploit:~
Connect-AzureAD -AadAccessToken $response.access_token -AccountId [email protected]

使用访问令牌连接到 MgGraph

root@kitploit:~
Invoke-RefreshToMSGraphToken -Domain "myclient.org"
Connect-MgGraph -AccessToken $MSGraphToken.access_token -Scopes "User.Read.All","Group.ReadWrite.All"

清除令牌

这将移除所有令牌变量。

root@kitploit:~
Clear-Token -Token All

持续访问评估

通过持续访问评估,微软实施了额外的安全措施,同时将访问令牌的最长生存期延长至 24 小时。某些支持 CAE 的服务(如 MSGraph、Exchange、Teams 和 SharePoint)可以根据 Azure AD 触发的某些事件阻止访问令牌。目前这些关键事件是:

  • 用户帐户被删除或禁用
  • 用户的密码被更改或重置
  • 为用户启用多重身份验证
  • 管理员明确撤销用户的所有刷新令牌
  • Azure AD Identity Protection 检测到高风险用户(不适用于 Teams 和 SharePoint Online)
root@kitploit:~
Invoke-RefreshToMSGraphToken -Domain "myclient.org" -UseCAE
if ((Parse-JWTtoken $MSGraphToken.access_token).ValidForHours -gt 23) { "MSGraph 令牌支持 CAE" }

与 AAD Internals 一起使用

如果您也安装了 AADInternals,则可以使用创建的访问令牌。

root@kitploit:~
Invoke-RefreshToMSTeamsToken -UseCAE -Domain "myclient.org"
Set-AADIntTeamsStatusMessage -Message "我的酷状态消息" -AccessToken $MSTeamsToken.access_token -Verbose

命令

root@kitploit:~
Get-Command -Module TokenTactics

仅导出受支持的用户面向命令;解析、PKCE、通用刷新和 FIDO 加密辅助工具保留为私有实现细节。

作者与贡献者

  • @rvrsh3ll TokenTactics 作者(原始版)
  • @0xBoku TokenTactics 合著者(原始版)及研究员
  • @f-bader 更新 TokenTactics 以支持 V2 端点和 CAE 等附加功能。TokenTacticsV2 维护者
  • @Pri3st 添加了获取存储和密钥保管库访问令牌以及自定义用户代理的功能

TokenTactic 的方法深受 Dr Nestori Syynimaa 在 https://o365blog.com/ 上出色研究的影响。

变更日志

0.3.0 (2026-07-13)

  • 添加固定的 Pester 5 测试运行器、跨平台 GitHub Actions 检查、测试报告以及强制覆盖基线。
  • 为设备代码、cookie、授权代码、SCCAUTH、刷新令牌和密钥流程添加确定性模拟覆盖。
  • 修复令牌清理、URL 解码、UTC JWT 时间戳、PEM 验证、Yammer 作用域、CAE cookie 支持、PurviewACC 租户标头以及密钥断言构造。
  • 仅导出受支持的用户面向命令和兼容性别名。先前由通配符导出公开的实现辅助工具现为私有;脚本应改用相应的公共命令。

0.2.22 (2026-04-03)

  • 添加 Get-EntraIDTokenFromSCCAUTHCookie,用于使用来自 security.microsoft.com 的 sccauth cookie 检索各种资源(Azure、MicrosoftGraph、MATP、MCAS、Purview 等)的 Entra ID 访问令牌。可选接受 XSRF 令牌;如果省略,则自动引导。支持可选的 TenantId 参数,用于标头注入和 PurviewACC 资源构造。

0.2.20 (2026-01-01)

  • 将所有 Get-Azure cmdlet 重命名为 Get-EntraID
  • 添加向后兼容的别名
  • 改进 ConvergedSignIn 中断的错误处理
  • 添加 Invoke-EntraIDPasskeyLogin 以自动化密钥登录流程。这将保存 ESTSAUTH cookie 和 web 会话作为全局变量,供其他 cmdlet(如 Get-EntraIDTokenFromESTSCookie)重复使用
  • 为 Invoke-EntraIDPasskeyLogin、Get-EntraIDTokenFromCookie、Get-EntraIDTokenFromRefreshTokenCredentialCookie 和 Get-EntraIDTokenFromESTSCookie 添加代理支持

0.2.14 (2025-09-11)

  • 为 cmdlet Get-AzureAuthorizationCode 添加参数 -Username 以预填 login_hint 参数
  • 在 cmdlet Get-AzureAuthorizationCode 中添加参数 -CopyToClipboard

0.2.13 (2025-07-29)

  • 修复自定义用户代理参数

0.2.12 (2025-06-22)

  • 添加对当前运行空间的感知,如果作为 PSTask 运行(例如在 Foreach-Object -parallel 中),则最小化输出

0.2.11 (2025-06-08)

  • 添加使用新的 -CustomUserAgent 属性自由定义任何 UserAgent 的能力。感谢 Pri3st

0.2.10 (2025-02-25)

  • 错误修复:类型初始化错误

0.2.9 (2025-02-17)

  • 为 Get-EntraIDToken 添加 ResourceTenant 以支持 B2B 设备代码钓鱼
  • 切换 Azure 管理客户端 ID
  • 添加 UseCodeVerifier 以支持代码交换证明密钥 (PKCE)
  • 向某些函数添加 UseV1Endpoint 以支持更广泛的端点测试

0.2.8 (2025-01-18)

  • 添加 Get-AzureTokenFromRefreshTokenCredentialCookie(“x-ms-RefreshTokenCredential”)并模块化 Get-AzureTokenFromCookie
  • 添加参数以选择 Get-AzureTokenFromESTSCookie 的 cookie 类型(ESTSAuth, ESTSAUTHPERSISTENT)
  • 为 Get-AzureTokenFromAuthorizationCode 添加 Get-AzureAuthorizationCode 输出的示例输出
  • 改进输出和更详细的错误处理

0.2.7 (2025-01-08)

  • 扩展 Get-AzureTokenFromESTSCookie 以支持 appverify 端点
  • 改进 Get-AzureTokenFromESTSCookie 的 cookie 管理

0.2.6 (2025-01-04)

  • 修复 Get-AzureAuthorizationCode 和 Get-AzureTokenFromAuthorizationCode 中自定义作用域的错误
  • 更改 Get-AzureAuthorizationCode 的默认重定向 URI

0.2.5 (2025-01-04)

  • 添加新的 cmdlet Get-AzureAuthorizationCode 和 Get-AzureTokenFromAuthorizationCode
    这些 cmdlet 深受 @gladstomych 维护的 TokenSmith 启发
  • 添加新 cmdlet Invoke-RefreshToDeviceRegistrationToken,这是 AADInternals cmdlet Get-AccessTokenForAADJoin 的 TokenTactics 版本
  • 为 Invoke-RefreshToToken 添加 v1 端点支持(使用 UseV1Endpoint)。这是添加 Invoke-RefreshToDeviceRegistrationToken 所必需的
  • 为 ConvertFrom-JWTtoken 添加管道支持
  • 为 Get-ForgedUserAgent 添加默认值

0.2.1 (2023-07-21)

  • 支持 Linux 作为设备平台
  • 支持 OS/2 作为设备平台 😁

0.2.2 (2023-07-22)

  • 反向移植 Yammer 令牌支持
  • 反向移植切换到允许的 PowerShell 动词,添加向后兼容的别名

0.2.3 (2023-07-23)

  • 反向移植 rotarydrone 的拉取请求,将 ESTSAuth 转换为访问令牌

v2 中的新功能

  • 切换到 Azure AD OAuth2 端点的 v2.0 版本
  • 支持持续访问评估,使用新的 -UseCAE 开关
  • 将 ClientId 设为参数
  • 更改了 MSTeams 的 client_id
  • 添加了对 OneDrive 和 SharePoint 的支持
  • 在 ConvertFrom-JWTtoken 输出中添加了人类可读格式的 IssuedAt、NotBefore、ExpirationDate 和 ValidForHours
  • 支持密钥登录
  • 重构了代码库以便于维护
下载工具