
Web Account Manager(WAM)에 Entra ID 토큰을 요청합니다
askWAM은 Windows WAM(Web Account Manager)을 통해 Microsoft Entra 액세스 토큰을 자동으로 요청합니다. .NET Framework 클라이언트, 독립 실행형 네이티브 x64 클라이언트, 그리고 CNA 명령 어댑터가 포함된 x64 Beacon Object File로 제공됩니다.
모든 프런트엔드는 클라이언트에 표시되는 계정을 열거할 수 있으며, 불투명한 WAM 계정 ID 또는 정확한 사용자 이름으로 ID를 지정할 수 있습니다. 대화형 인증으로 폴백하는 경우는 없습니다.
이 흐름을 통해 요청된 토큰은 다음 세부 정보를 상속합니다:
이 토큰 요청 방식은 Token Protection이 적용된 경우에도 작동합니다. CAE 토큰은 --cae 플래그로 요청할 수 있습니다.
1fec8e78-bce4-4aaf-ab1b-5451cc387264https://graph.microsoft.com/.defaultorganizations--hide로 억제기본 Graph 범위는 --scope와 --resource가 모두 제공되지 않은 경우에만 선택됩니다.
범위 모드는 하나 이상의 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 로더 프로필에 대해 릴리스 객체도 검증합니다.
이 프로젝트는 또한 Release BOF를 Sliver 확장으로 로드하기 위한 src\bof\extension.json을 제공합니다. Mythic Apollo는 동등한 사이드카 파일이 필요하지 않으며, 해당 execute_coff 명령은 객체와 동일한 타입 지정 인수 시퀀스를 받습니다. 두 통합과 패킹된 인수 계약에 대해서는 src\bof\README.md를 참조하세요.
공식 문서:
유사 프로젝트:
이 프로젝트는 Codex가 GPT 5.6 Sol을 사용하여 만들었습니다.