
Fordere beim Web Account Manager (WAM) Entra ID-Token an
askWAM fordert Microsoft Entra Zugriffstoken stillschweigend über den Windows Web
Account Manager (WAM) an. Es wird als .NET Framework-Client, als eigenständiger nativer
x64-Client und als x64 Beacon Object File mit einem CNA-Befehladapter bereitgestellt.
Alle Frontends können Konten auflisten, die für den Client sichtbar sind, und eine Identität über ihre opake WAM-Konto-ID oder den exakten Benutzernamen ansprechen. Sie fallen niemals auf interaktive Authentifizierung zurück.
Über diesen Ablauf angeforderte Token erben die folgenden Details:
Diese Art der Token-Anforderung funktioniert auch, wenn Token Protection erzwungen wird.
CAE-Token können mit dem --cae-Flag angefordert werden.
1fec8e78-bce4-4aaf-ab1b-5451cc387264https://graph.microsoft.com/.defaultorganizations--hide unterdrückt sieDer Standard-Graph-Scope wird nur ausgewählt, wenn weder --scope noch --resource
angegeben wird.
Der Scope-Modus akzeptiert einen oder mehrere v2-Scopes. Er hängt
openid offline_access profile an und setzt die WAM-Anforderungseigenschaft wam_compat=2.0.
askwam --scope https://graph.microsoft.com/.default
Der Resource-Modus implementiert WAMs v1-kompatiblen Ablauf. Er sendet einen leeren Scope, setzt
die WAM-Anforderungseigenschaft resource und setzt wam_compat nicht.
askwam --resource https://graph.microsoft.com
--scope und --resource schließen sich gegenseitig aus.
--enum Konten auflisten, ohne ein Token anzufordern
--account-id <id> Eine exakte opake WAM-Konto-ID auswählen
--username <username> Einen exakten, eindeutigen Benutzernamen auswählen
--cae Das vordefinierte xms_cc/cp1-Claims-Objekt senden
--claims-json <json> Ein rohes OAuth-Claims-Objekt oder eine Challenge senden
Der .NET-Client unterstützt zusätzlich --claims-file <path>, um ein rohes OAuth-
Claims-Objekt aus einer UTF-8-Datei zu lesen. --cae schließt sich mit benutzerdefinierter
Claims-Eingabe gegenseitig aus. Fügen Sie cp1 in das rohe Objekt ein, wenn eine benutzerdefinierte
Challenge ebenfalls CAE erfordert.
Die Bereitstellung erfordert Windows mit .NET Framework 4.8. Das Release-Verzeichnis enthält die Anwendung und ihre Laufzeitkonfiguration; es enthält keine private .NET- oder WinRT-Laufzeit.
Das Erstellen erfordert standardmäßig das .NET SDK und die Windows SDK 10.0.26100.0-Metadaten.
Setzen Sie die MSBuild-Eigenschaft WindowsMetadataPath, wenn ein anderes installiertes
Windows 10- oder Windows 11-SDK verwendet wird.
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
Der Client schreibt einfache name=value-Zeilen. Er dekodiert oder druckt keine JWT-Claims.
Das Erstellen erfordert Visual Studio 2022 C++ Build Tools und ein Windows 10- oder Windows 11-SDK. Die Kontoauflistung erfordert Windows 10 Version 1803 oder neuer.
.\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
Die Release-Executable ist statisch mit der C-Laufzeit verlinkt und verwendet die im System enthaltene WinRT-API-Oberfläche. Ihr maschinenlesbares Ergebnisformat ist JSON.
Erstellen Sie das x64 BOF und laden Sie src\bof\askwam.cna in 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"]}}}
Das Build-Skript prüft den BOF-Einstiegspunkt und die Allowlist für undefinierte Symbole. Wenn
-BofLintPath oder BOFLINT_PATH auf Outflanks boflint.py verweist, validiert es außerdem
das Release-Objekt für die Loader-Profile von Cobalt Strike, Outflank C2 und Core Impact.
Das Projekt liefert außerdem src\bof\extension.json zum Laden des Release-BOF als
Sliver-Erweiterung. Mythic Apollo benötigt keine entsprechende Sidecar-Datei; sein
execute_coff-Befehl akzeptiert das Objekt und dieselbe typisierte Argumentsequenz.
Siehe src\bof\README.md für beide Integrationen und den Vertrag für gepackte Argumente.
Offizielle Dokumentation:
Ähnliche Projekte:
Dieses Projekt wurde von Codex unter Verwendung von GPT 5.6 Sol erstellt.