askWAM 通过 Windows Web 账户管理器(WAM)静默请求 Microsoft Entra 访问令牌。它提供三种形式:.NET Framework 客户端、独立的原生 x64 客户端,以及带有 CNA 命令适配器的 x64 Beacon Object File。
所有前端都可以枚举客户端可见的账户,并通过其不透明的 WAM 账户 ID 或精确用户名来定位某个身份。它们绝不会回退到交互式身份验证。
通过此流程请求的令牌将继承以下详细信息:
这种请求令牌的方式在强制执行令牌保护(Token Protection)时同样有效。
可以使用 --cae 标志请求 CAE 令牌。
1fec8e78-bce4-4aaf-ab1b-5451cc387264https://graph.microsoft.com/.defaultorganizations--hide 会抑制输出仅当既未提供 --scope 也未提供 --resource 时,才会选择默认的 Graph 作用域。
作用域模式接受一个或多个 v2 作用域。它会追加
openid offline_access profile 并设置 WAM 的 wam_compat=2.0 请求属性。
askwam --scope https://graph.microsoft.com/.default
资源模式实现 WAM 的 v1 兼容流程。它发送空作用域,设置
WAM resource 请求属性,并且不设置 wam_compat。
askwam --resource https://graph.microsoft.com
--scope 和 --resource 互斥。
--enum 枚举账户而不请求令牌
--account-id <id> 选择精确的不透明 WAM 账户 ID
--username <username> 选择一个精确且唯一的用户名
--cae 发送预定义的 xms_cc/cp1 声明对象
--claims-json <json> 发送原始 OAuth 声明对象或质询
.NET 客户端还额外支持 --claims-file <path>,用于从 UTF-8 文件读取原始 OAuth
声明对象。--cae 与自定义声明输入互斥。当自定义质询同时需要 CAE 时,请在原始对象中包含 cp1。
部署需要带有 .NET Framework 4.8 的 Windows。发布目录包含应用程序及其运行时配置;它不包含私有的 .NET 或 WinRT 运行时。
构建默认需要 .NET SDK 和 Windows SDK 10.0.26100.0 元数据。
使用其他已安装的 Windows 10 或 Windows 11 SDK 时,请设置 WindowsMetadataPath MSBuild 属性。
dotnet build .\src\dotnet\AskWAM.csproj --configuration Release
.\src\dotnet\bin\Release\net48\askwam.exe --enum
.\src\dotnet\bin\Release\net48\askwam.exe --resource https://graph.microsoft.com --hide
该客户端输出纯 name=value 行。它不会解码或打印 JWT 声明。
构建需要 Visual Studio 2022 C++ Build Tools 以及 Windows 10 或 Windows 11 SDK。账户枚举需要 Windows 10 版本 1803 或更高版本。
.\src\native\build.ps1 -Configuration Release
.\src\native\bin\Release\askwam.exe --enum
.\src\native\bin\Release\askwam.exe --resource https://graph.microsoft.com --hide
发布的可执行文件静态链接到 C 运行时,并使用系统内置的 WinRT API 接口。其机器可读的结果格式为 JSON。
构建 x64 BOF 并在 Cobalt Strike 中加载 src\bof\askwam.cna:
.\src\bof\build.ps1 -Configuration Release
askwam --enum
askwam --account-id <id-from-enum>
askwam --resource https://graph.microsoft.com --hide
askwam --cae --hide
askwam --claims-json {"access_token":{"xms_cc":{"values":["cp1"]}}}
构建脚本会检查 BOF 入口点和未定义符号允许列表。当
-BofLintPath 或 BOFLINT_PATH 指向 Outflank 的 boflint.py 时,它还会针对 Cobalt Strike、Outflank C2 和 Core Impact 加载器配置文件验证发布对象。
该项目还附带 src\bof\extension.json,用于将 Release BOF 作为
Sliver 扩展加载。Mythic Apollo 不需要等效的附属文件;其
execute_coff 命令接受该对象以及相同的类型化参数序列。
有关这两种集成以及打包参数约定,请参阅 src\bof\README.md。
官方文档:
类似项目:
本项目由 Codex 使用 GPT 5.6 Sol 创建。