
Запросить у Web Account Manager (WAM) токены Entra ID
askWAM запрашивает токены доступа Microsoft Entra без взаимодействия с пользователем через Windows Web Account Manager (WAM). Поставляется как клиент .NET Framework, автономный нативный клиент x64 и x64 Beacon Object File с адаптером команд CNA.
Все фронтенды могут перечислять учётные записи, видимые клиенту, и нацеливаться на идентификатор по его непрозрачному WAM account ID или точному имени пользователя. Они никогда не переходят к интерактивной аутентификации.
Токены, запрошенные через этот поток, унаследуют следующие данные:
Этот способ запроса токенов также работает при включённой Token Protection.
CAE-токены можно запрашивать с флагом --cae.
1fec8e78-bce4-4aaf-ab1b-5451cc387264https://graph.microsoft.com/.defaultorganizations--hide подавляет егоScope Graph по умолчанию выбирается только тогда, когда не указаны ни --scope, ни --resource.
Режим scope принимает один или несколько v2 scope. Он добавляет
openid offline_access profile и устанавливает свойство запроса WAM wam_compat=2.0.
askwam --scope https://graph.microsoft.com/.default
Режим resource реализует v1-совместимый поток WAM. Он отправляет пустой scope, устанавливает
свойство запроса WAM resource и не устанавливает wam_compat.
askwam --resource https://graph.microsoft.com
--scope и --resource взаимоисключающие.
--enum Перечислить учётные записи без запроса токена
--account-id <id> Выбрать точный непрозрачный WAM account ID
--username <username> Выбрать одно точное, уникальное имя пользователя
--cae Отправить предопределённый объект claims xms_cc/cp1
--claims-json <json> Отправить сырой объект claims OAuth или challenge
Клиент .NET дополнительно поддерживает --claims-file <path> для чтения сырого объекта claims OAuth из файла UTF-8. --cae взаимоисключающий с пользовательским вводом claims. Включайте cp1 в сырой объект, когда пользовательский challenge также требует CAE.
Развёртывание требует Windows с .NET Framework 4.8. Каталог релиза содержит приложение и его конфигурацию среды выполнения; он не содержит приватной среды выполнения .NET или WinRT.
Сборка требует .NET SDK и метаданные Windows SDK 10.0.26100.0 по умолчанию.
Установите свойство MSBuild WindowsMetadataPath при использовании другого установленного
Windows 10 или Windows 11 SDK.
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. Он не декодирует и не выводит claims 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 runtime и использует встроенную поверхность WinRT API. Его машиночитаемый формат результата — JSON.
Соберите x64 BOF и загрузите src\bof\askwam.cna в Cobalt Strike:
.\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 и allowlist неопределённых символов. Когда
-BofLintPath или BOFLINT_PATH указывает на boflint.py от Outflank, он также валидирует
релизный объект для профилей загрузчика Cobalt Strike, Outflank C2 и Core Impact.
Проект также поставляет src\bof\extension.json для загрузки Release BOF как
расширения Sliver. Mythic Apollo не нуждается в эквивалентном sidecar-файле; его
команда execute_coff принимает объект и ту же типизированную последовательность аргументов.
См. src\bof\README.md для обеих интеграций и контракта упакованных аргументов.
Официальная документация:
Похожие проекты:
Этот проект был создан Codex с использованием GPT 5.6 Sol.