
Um fork do excelente TokenTactics com suporte para CAE e token endpoint v2
______ __ __ __ _ ___
/_ __/___ / /_____ ____ / /_____ ______/ /_(_)_________ _ __ |__ \
/ / / __ \/ //_/ _ \/ __ \ / __/ __ `/ ___/ __/ / ___/ ___/ | | / / __/ /
/ / / /_/ / /,< / __/ / / / / /_/ /_/ / /__/ /_/ / /__(__ ) | |/ / / __/
/_/ \____/_/|_|\___/_/ /_/ \__/\__,_/\___/\__/_/\___/____/ |___(_)____/
Esta é uma versão atualizada do TokenTactics originalmente escrito por Stephan Borosh @rvrsh3ll e Bobby Cooke @0xBoku.
Os tokens de acesso do Azure permitem autenticar-se em determinados endpoints como um utilizador que inicia sessão com um código de dispositivo. Se possuir um token de atualização compatível com FOCI (Family of Client IDs), pode usá-lo para obter tokens de acesso para todos os endpoints compatíveis com FOCI conhecidos. Uma vez que o token de atualização também contém a informação se o utilizador realizou autenticação multifator, pode usar isso. Depois de ter o token de acesso de um utilizador, pode ser possível aceder a determinadas aplicações como Outlook, SharePoint, OneDrive, MSTeams e outras.
Por exemplo, se tiver um token de atualização do Graph ou MSGraph, pode conectar-se ao Azure e listar utilizadores, grupos, etc. Dependendo das políticas de acesso condicional, pode depois mudar para um token do Azure Core Management e executar o AzureHound. Depois, obter um token de acesso do Outlook e ler/enviar e-mails ou do MS Teams e ler/enviar mensagens de equipa!
Para mais informações sobre tipos de tokens do Azure: Microsoft identity platform access tokens
Existem alguns exemplos de pedidos a endpoints na pasta resources. Há também um modelo de phishing de exemplo para phishing de código de dispositivo.
Pode também usar estes tokens com o AAD Internals. Recomendamos vivamente que verifique esta excelente ferramenta.
Import-Module .\TokenTactics.psd1
Get-Help Get-EntraIDToken
Invoke-RefreshToSubstrateToken -Domain "myclient.org"
O conjunto de testes requer o PowerShell 7 e o Pester 5.7.1. Utiliza respostas HTTP simuladas e não necessita de credenciais do Entra ID ou acesso à rede.
Install-Module Pester -RequiredVersion 5.7.1 -Scope CurrentUser
pwsh ./tests/Invoke-Tests.ps1
O mesmo conjunto é executado em Linux, macOS e Windows para cada pull request.
Get-EntraIDToken -Client MSGraph
Depois de o utilizador iniciar sessão, será apresentado o JWT e este será guardado na variável $response. Para aceder ao token de acesso, use $response.access_token na sua janela do PowerShell para exibir o token. Pode também exibir o token de atualização com $response.refresh_token. Dica: vai querer o token de atualização para continuar a atualizar para novos tokens!
Get-EntraIDToken -Client DODMSGraph
[!IMPORTANT] Esta funcionalidade foi introduzida na v0.2.20 e requer o PowerShell 7.0
Se criou uma chave de acesso num fornecedor terceiro como KeePassXC, Bitwarden, 1Password ou similar, pode exportar o material da chave privada.
[!CAUTION] Exportar o material da sua chave privada é extremamente perigoso. Certifique-se de que compreende o risco antes de prosseguir.
O formato de ficheiro de chave de acesso do KeePassXC é suportado nativamente e pode apontar o cmdlet diretamente para o ficheiro. O procedimento de início de sessão inicial apenas obterá o cookie ESTSAUTH necessário e terá de usar Get-EntraIDTokenFromESTSCookie para trocar este cookie por um token Bearer (token de acesso, token de atualização e token de ID).
# Obter o valor do cookie ESTSAUTH
Invoke-EntraIDPasskeyLogin -Verbose -KeyFilePath "C:\Users\Fabian\Microsoft.passkey"
# Trocar o cookie ESTSAUTH por tokens Bearer
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH
Se tiver um formato de ficheiro não suportado, pode especificar manualmente os valores necessários e alcançar o mesmo objetivo.
Invoke-EntraIDPasskeyLogin -Verbose -UserPrincipalName "[email protected]" -UserHandle "XYZ" -CredentialId "9e9c8297-0cde-4726-8852-16c141e15bd3" -PrivateKey $PrivateKey
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH
Se obteve um cookie sccauth de uma sessão autenticada em security.microsoft.com (por exemplo, através do Evilginx ou das DevTools do navegador), pode usá-lo para recuperar tokens de acesso do Entra ID para um vasto conjunto de recursos através do portal Microsoft Defender XDR.
# Obter um token do Microsoft Graph usando o cookie sccauth
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -ResourceName MicrosoftGraph
# Fornecer um token XSRF explicitamente para evitar o pedido de bootstrap
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -XSRF "your_xsrf_value" -ResourceName Azure
# Usar um URL de recurso personalizado
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -Resource "https://management.core.windows.net/"
Valores suportados para -ResourceName: Azure, LogAnalytics, MATP, MCAS, MicrosoftGraph, MicrosoftOffice, Purview, PurviewACC, ThreatIntelligencePortal.
Get-EntraIDTokenFromESTSCookie -ESTSAuthCookie "0.AbcApTk..."
Este módulo utiliza o fluxo de código de autorização para obter um token de acesso e um token de atualização usando o cookie ESTSAuth (ou ESTSAuthPersistent). Útil se tiver pescado uma sessão através do Evilginx ou obtido este cookie de outra forma.
Certifique-se de que usa o cookie correto! ESTSAuthPersistent só é útil quando uma política de CA concede efetivamente uma sessão persistente. Caso contrário, deve usar ESTSAuth. Normalmente, pode saber qual usar pelo comprimento: o cookie mais longo é o que deve usar :)
Nota: Isto pode não funcionar em todos os casos, pois pode exigir interação do utilizador. Se for o caso, use o fluxo de Código de Dispositivo acima ou tente roadtx interactiveauth --estscookie
Esta funcionalidade foi portada do pull request por rotarydrone no repositório original.
Um dos exemplos mais proeminentes deste fluxo oauth2 (pelo menos no início de 2025) é o Intune Company Portal, que permite, para alguns recursos, contornar os requisitos de conformidade do dispositivo.
Esta informação foi publicada pela primeira vez por @dirkjan e depois divulgada na Black Hat Europe para um público mais vasto por @TEMP43487580
A JumpsecLabs publicou um artigo de blogue e um POC sob a forma de TokenSmith pouco depois.
Agora as mesmas capacidades estão disponíveis no TokenTacticsV2.