
Форк отличного TokenTactics с поддержкой CAE и token endpoint v2
______ __ __ __ _ ___
/_ __/___ / /_____ ____ / /_____ ______/ /_(_)_________ _ __ |__ \
/ / / __ \/ //_/ _ \/ __ \ / __/ __ `/ ___/ __/ / ___/ ___/ | | / / __/ /
/ / / /_/ / ,< / __/ / / / / /_/ /_/ / /__/ /_/ / /__(__ ) | |/ / / __/
/_/ \____/_/|_|\___/_/ /_/ \__/\__,_/\___/\__/_/\___/____/ |___(_)____/
Это обновлённая версия TokenTactics, изначально написанная Стефаном Борошем @rvrsh3ll и Бобби Куком @0xBoku.
Токены доступа Azure позволяют аутентифицироваться в определённых конечных точках от имени пользователя, который входит с помощью кода устройства. Если у вас есть FOCI (Family of Client IDs) — обновляемый токен, совместимый с FOCI, вы можете использовать его для получения токенов доступа ко всем известным конечным точкам, поддерживающим FOCI. Так как обновляемый токен также содержит информацию о том, прошёл ли пользователь многофакторную аутентификацию, вы можете использовать это. Получив токен доступа пользователя, вы можете получить доступ к определённым приложениям, таким как Outlook, SharePoint, OneDrive, MSTeams и другим.
Например, если у вас есть обновляемый токен Graph или MSGraph, вы можете подключиться к Azure и выгрузить пользователей, группы и т.д. Затем, в зависимости от политик условного доступа, вы можете переключиться на токен Azure Core Management и запустить AzureHound. Затем получить токен доступа Outlook и читать/отправлять электронные письма или токен MS Teams и читать/отправлять сообщения в Teams!
Подробнее о типах токенов Azure: Токены доступа платформы удостоверений Microsoft
В папке resources есть несколько примеров запросов к конечным точкам. Также есть пример фишингового шаблона для фишинга с использованием кода устройства.
Вы также можете использовать эти токены с AAD Internals. Мы настоятельно рекомендуем ознакомиться с этим замечательным инструментом.
Import-Module .\TokenTactics.psd1
Get-Help Get-EntraIDToken
Invoke-RefreshToSubstrateToken -Domain "myclient.org"
Набор тестов требует PowerShell 7 и Pester 5.7.1. Он использует имитированные HTTP-ответы и не требует учётных данных Entra ID или сетевого доступа.
Install-Module Pester -RequiredVersion 5.7.1 -Scope CurrentUser
pwsh ./tests/Invoke-Tests.ps1
Тот же набор тестов запускается на Linux, macOS и Windows для каждого pull request.
Get-EntraIDToken -Client MSGraph
После того как пользователь войдёт, вам будет показан JWT, и он будет сохранён в переменной $response. Чтобы получить токен доступа, используйте $response.access_token в окне PowerShell. Вы также можете отобразить обновляемый токен с помощью $response.refresh_token. Подсказка: вам понадобится обновляемый токен, чтобы продолжать обновлять его до новых токенов!
Get-EntraIDToken -Client DODMSGraph
[!IMPORTANT] Эта функция была добавлена в версии 0.2.20 и требует PowerShell 7.0
Если вы создали ключ доступа у стороннего провайдера, такого как KeePassXC, Bitwarden, 1Password или аналогичного, вы можете экспортировать закрытый ключ.
[!CAUTION] Экспорт закрытого ключа крайне опасен. Убедитесь, что вы понимаете риски, прежде чем продолжить.
Формат файла ключа доступа KeePassXC поддерживается изначально, и вы можете указать путь к файлу напрямую. Процедура начального входа получит только необходимый cookie ESTSAUTH, после чего нужно использовать Get-EntraIDTokenFromESTSCookie для обмена этого cookie на токен-носитель (токен доступа, обновляемый токен и ID-токен).
# Получить значение cookie ESTSAUTH
Invoke-EntraIDPasskeyLogin -Verbose -KeyFilePath "C:\Users\Fabian\Microsoft.passkey"
# Обменять cookie ESTSAUTH на токены-носители
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH
Если у вас неподдерживаемый формат файла, вы можете указать необходимые значения вручную и достичь той же цели.
Invoke-EntraIDPasskeyLogin -Verbose -UserPrincipalName "[email protected]" -UserHandle "XYZ" -CredentialId "9e9c8297-0cde-4726-8852-16c141e15bd3" -PrivateKey $PrivateKey
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH
Если вы получили cookie sccauth из аутентифицированной сессии на security.microsoft.com (например, через Evilginx или инструменты разработчика браузера), вы можете использовать его для получения токенов доступа Entra ID для большого набора ресурсов через портал Microsoft Defender XDR.
# Получить токен Microsoft Graph с помощью cookie sccauth
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -ResourceName MicrosoftGraph
# Явно указать XSRF-токен, чтобы пропустить запрос начальной загрузки
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -XSRF "your_xsrf_value" -ResourceName Azure
# Использовать собственный URL ресурса
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -Resource "https://management.core.windows.net/"
Поддерживаемые значения -ResourceName: Azure, LogAnalytics, MATP, MCAS, MicrosoftGraph, MicrosoftOffice, Purview, PurviewACC, ThreatIntelligencePortal.
Get-EntraIDTokenFromESTSCookie -ESTSAuthCookie "0.AbcApTk..."
Этот модуль использует поток кода авторизации для получения токена доступа и обновляемого токена с помощью cookie ESTSAuth (или ESTSAuthPersistent). Полезно, если вы перехватили сессию через Evilginx или иным образом получили этот cookie.
Обязательно используйте правильный cookie! ESTSAuthPersistent полезен только в том случае, если политика CA действительно предоставляет постоянную сессию. В противном случае используйте ESTSAuth. Обычно можно определить, какой использовать, по длине: длиннее cookie — тот, который вам нужен :)
Примечание: Это может работать не во всех случаях, так как может потребоваться взаимодействие с пользователем. Если это так, используйте поток с кодом устройства выше или попробуйте roadtx interactiveauth --estscookie
Эта функция была перенесена из pull request от rotarydrone в оригинальном репозитории.
Одним из наиболее известных примеров этого потока oauth2 (по крайней мере, на начало 2025 года) является Intune Company Portal, который для некоторых ресурсов позволяет обходить требования к соответствию устройств.
Эта информация была впервые опубликована @dirkjan, а затем представлена на Black Hat Europe более широкой аудитории @TEMP43487580
JumpsecLabs опубликовали статью в блоге и PoC в виде TokenSmith вскоре после этого.
Теперь те же возможности доступны в TokenTacticsV2.