
Un fork de l'excellent TokenTactics avec prise en charge de CAE et de l'endpoint token v2.
______ __ __ __ _ ___
/_ __/___ / /_____ ____ / /_____ ______/ /_(_)_________ _ __ |__ \
/ / / __ \/ //_/ _ \/ __ \ / __/ __ `/ ___/ __/ / ___/ ___/ | | / / __/ /
/ / / /_/ / ,< / __/ / / / / /_/ /_/ / /__/ /_/ / /__(__ ) | |/ / / __/
/_/ \____/_/|_|\___/_/ /_/ \__/\__,_/\___/\__/_/\___/____/ |___(_)____/
Ceci est une version mise à jour de TokenTactics écrite à l'origine par Stephan Borosh @rvrsh3ll et Bobby Cooke @0xBoku.
Les jetons d'accès Azure vous permettent de vous authentifier auprès de certains points de terminaison en tant qu'utilisateur qui se connecte avec un code d'appareil. Si vous disposez d'un jeton d'actualisation compatible FOCI (famille d'ID clients), vous pouvez l'utiliser pour obtenir des jetons d'accès pour tous les points de terminaison compatibles FOCI connus. Étant donné que le jeton d'actualisation contient également l'information indiquant si l'utilisateur a effectué une authentification multifacteur, vous pouvez l'utiliser. Une fois que vous avez le jeton d'accès d'un utilisateur, il peut être possible d'accéder à certaines applications telles que Outlook, SharePoint, OneDrive, Microsoft Teams, etc.
Par exemple, si vous disposez d'un jeton d'actualisation Graph ou MSGraph, vous pouvez alors vous connecter à Azure et extraire des utilisateurs, des groupes, etc. Vous pouvez ensuite, selon les politiques d'accès conditionnel, passer à un jeton Azure Core Management et exécuter AzureHound. Ensuite, obtenez un jeton d'accès Outlook et lisez/envoyez des e-mails, ou un jeton Microsoft Teams et lisez/envoyez des messages Teams !
Pour en savoir plus sur les types de jetons Azure, consultez Jetons d'accès de la plateforme d'identités Microsoft
Quelques exemples de requêtes vers des points de terminaison se trouvent dans le dossier resources. Vous y trouverez également un modèle de phishing pour le phishing par code d'appareil.
Vous pouvez également utiliser ces jetons avec AAD Internals. Nous vous recommandons vivement de découvrir cet outil étonnant.
Import-Module .\TokenTactics.psd1
Get-Help Get-EntraIDToken
Invoke-RefreshToSubstrateToken -Domain "myclient.org"
La suite de tests nécessite PowerShell 7 et Pester 5.7.1. Elle utilise des réponses HTTP simulées et ne nécessite ni identifiants Entra ID ni accès réseau.
Install-Module Pester -RequiredVersion 5.7.1 -Scope CurrentUser
pwsh ./tests/Invoke-Tests.ps1
La même suite s'exécute sur Linux, macOS et Windows pour chaque pull request.
Get-EntraIDToken -Client MSGraph
Une fois que l'utilisateur s'est connecté, le JWT s'affiche et est sauvegardé dans la variable $response. Pour accéder au jeton d'accès, utilisez $response.access_token dans votre fenêtre PowerShell pour afficher le jeton. Vous pouvez également afficher le jeton d'actualisation avec $response.refresh_token. Astuce : c'est le jeton d'actualisation qu'il vous faut pour continuer à actualiser vers de nouveaux jetons !
Get-EntraIDToken -Client DODMSGraph
[!IMPORTANT] Cette fonctionnalité a été introduite dans la v0.2.20 et nécessite PowerShell 7.0.
Si vous avez créé une clé d'accès auprès d'un fournisseur tiers comme KeePassXC, Bitwarden, 1Password ou similaire, vous pouvez exporter le matériel de clé privée.
[!CAUTION] Exporter votre matériel de clé privée est extrêmement dangereux. Assurez-vous de bien comprendre le risque avant de continuer.
Le format de fichier de clé d'accès KeePassXC est pris en charge nativement et vous pouvez pointer la cmdlet directement vers le fichier. La procédure de connexion initiale ne permet d'obtenir que le cookie ESTSAUTH requis ; vous devez ensuite utiliser Get-EntraIDTokenFromESTSCookie pour échanger ce cookie contre un jeton porteur (jeton d'accès, jeton d'actualisation et jeton d'identité).
# Retrieve the ESTSAUTH cookie value
Invoke-EntraIDPasskeyLogin -Verbose -KeyFilePath "C:\Users\Fabian\Microsoft.passkey"
# Exchange the ESTSAUTH cookie for bearer tokens
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH
Si vous avez un format de fichier non pris en charge, vous pouvez spécifier manuellement les valeurs requises et obtenir le même résultat.
Invoke-EntraIDPasskeyLogin -Verbose -UserPrincipalName "[email protected]" -UserHandle "XYZ" -CredentialId "9e9c8297-0cde-4726-8852-16c141e15bd3" -PrivateKey $PrivateKey
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH
Si vous avez obtenu un cookie sccauth à partir d'une session authentifiée sur security.microsoft.com (par exemple via Evilginx ou les DevTools du navigateur), vous pouvez l'utiliser pour récupérer des jetons d'accès Entra ID pour un large ensemble de ressources via le portail Microsoft Defender XDR.
# Retrieve a Microsoft Graph token using the sccauth cookie
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -ResourceName MicrosoftGraph
# Provide an XSRF token explicitly to skip the bootstrapping request
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -XSRF "your_xsrf_value" -ResourceName Azure
# Use a custom resource URL
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -Resource "https://management.core.windows.net/"
Valeurs -ResourceName prises en charge : Azure, LogAnalytics, MATP, MCAS, MicrosoftGraph, MicrosoftOffice, Purview, PurviewACC, ThreatIntelligencePortal.
Get-EntraIDTokenFromESTSCookie -ESTSAuthCookie "0.AbcApTk..."
Ce module utilise le flux de code d'autorisation pour obtenir un jeton d'accès et un jeton d'actualisation à l'aide du cookie ESTSAuth (ou ESTSAuthPersistent). Utile si vous avez hameçonné une session via Evilginx ou si vous avez obtenu ce cookie d'une autre manière.
Assurez-vous d'utiliser le bon cookie ! ESTSAuthPersistent n'est utile que lorsqu'une politique d'accès conditionnel accorde effectivement une session persistante. Sinon, vous devez utiliser ESTSAuth. Vous pouvez généralement déterminer lequel utiliser en fonction de la longueur : le cookie le plus long est celui que vous voulez utiliser :)
Remarque : cela peut ne pas fonctionner dans tous les cas, car cela peut nécessiter une interaction de l'utilisateur. Dans ce cas, utilisez le flux de code d'appareil ci-dessus ou essayez roadtx interactiveauth --estscookie
Cette fonctionnalité a été rétroportée depuis la pull request de rotarydrone dans le dépôt d'origine.
L'un des exemples les plus marquants de ce flux OAuth2 (du moins au début de 2025) est le portail d'entreprise Intune, qui permet, pour certaines ressources, de contourner les exigences de conformité des appareils.