
Solicita tokens de Entra ID al Administrador de cuentas web (WAM)
askWAM solicita tokens de acceso de Microsoft Entra de forma silenciosa a través del Administrador de cuentas web de Windows (WAM). Se distribuye como un cliente de .NET Framework, un cliente nativo x64 independiente y un Beacon Object File x64 con un adaptador de comandos CNA.
Todos los frontends pueden enumerar las cuentas visibles para el cliente y dirigirse a una identidad mediante su ID de cuenta WAM opaco o su nombre de usuario exacto. Nunca recurren a la autenticación interactiva.
Los tokens solicitados a través de este flujo heredarán los siguientes detalles:
Esta forma de solicitar tokens también funciona cuando Token Protection está aplicado.
Los tokens CAE se pueden solicitar con el flag --cae.
1fec8e78-bce4-4aaf-ab1b-5451cc387264https://graph.microsoft.com/.defaultorganizations--hide la suprimeEl scope predeterminado de Graph se selecciona solo cuando no se proporciona ni --scope ni --resource.
El modo scope acepta uno o más scopes v2. Añade
openid offline_access profile y establece la propiedad de solicitud wam_compat=2.0 de WAM.
askwam --scope https://graph.microsoft.com/.default
El modo resource implementa el flujo compatible con v1 de WAM. Envía un scope vacío, establece la propiedad de solicitud resource de WAM y no establece wam_compat.
askwam --resource https://graph.microsoft.com
--scope y --resource son mutuamente excluyentes.
--enum Enumerate accounts without requesting a token
--account-id <id> Select an exact opaque WAM account ID
--username <username> Select one exact, unique username
--cae Send the predefined xms_cc/cp1 claims object
--claims-json <json> Send a raw OAuth claims object or challenge
El cliente .NET además admite --claims-file <path> para leer un objeto de claims OAuth sin procesar desde un archivo UTF-8. --cae es mutuamente excluyente con la entrada de claims personalizados. Incluya cp1 en el objeto sin procesar cuando un challenge personalizado también requiera CAE.
La implementación requiere Windows con .NET Framework 4.8. El directorio de la release contiene la aplicación y su configuración de runtime; no contiene un runtime privado de .NET ni de WinRT.
La compilación requiere el SDK de .NET y los metadatos del Windows SDK 10.0.26100.0 de forma predeterminada. Establezca la propiedad MSBuild WindowsMetadataPath cuando utilice otro SDK de Windows 10 u Windows 11 instalado.
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
El cliente escribe líneas simples con formato name=value. No decodifica ni imprime claims de JWT.
La compilación requiere Visual Studio 2022 C++ Build Tools y un SDK de Windows 10 u Windows 11. La enumeración de cuentas requiere Windows 10 versión 1803 o posterior.
.\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
El ejecutable de la release está enlazado estáticamente al runtime de C y utiliza la superficie de la API WinRT incluida. Su formato de resultado legible por máquina es JSON.
Compile el BOF x64 y cargue src\bof\askwam.cna en 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"]}}}
El script de compilación verifica el punto de entrada del BOF y la lista de permitidos de símbolos no definidos. Cuando -BofLintPath o BOFLINT_PATH apuntan al boflint.py de Outflank, también valida el objeto de la release para los perfiles de loader de Cobalt Strike, Outflank C2 y Core Impact.
El proyecto también incluye src\bof\extension.json para cargar el BOF de la Release como una extensión de Sliver. Mythic Apollo no necesita un archivo sidecar equivalente; su comando execute_coff acepta el objeto y la misma secuencia de argumentos tipados. Consulte src\bof\README.md para ambas integraciones y el contrato de argumentos empaquetados.
Documentación oficial:
Proyectos similares:
Este proyecto fue creado por Codex usando GPT 5.6 Sol.