
AzureRT - модуль PowerShell, реализующий различные тактики Red Team для Azure.
Модуль PowerShell, реализующий различные командлеты для взаимодействия с Azure и Azure AD с точки зрения атакующего.
Полезные утилиты для работы с аутентификацией на основе маркеров доступа, переключения между интерфейсами Az, AzureAD и az cli, готовые к использованию атаки, такие как выполнение команд через Runbook, и многое другое.
Этот набор инструментов включает множество различных командлетов. В данном разделе выделены наиболее важные и полезные из них.
Типичный рабочий процесс Red Team / аудита, начинающийся с украденных учётных данных, можно описать следующим образом:
Учётные данные украдены -> Аутентификация в Azure/AzureAD -> проверка их валидности -> выяснение возможностей
Приведённые ниже командлеты идеально подходят для выполнения этой последовательности:
Connect-ART — Предоставляет различные способы аутентификации в Azure: учётные данные, PSCredential, токен.
Connect-ARTAD — Предоставляет различные способы аутентификации в Azure AD: учётные данные, PSCredential, токен.
Get-ARTWhoami — После аутентификации запустите его, чтобы проверить whoami и подтвердить свой доступ.
Get-ARTAccess — Затем, когда вы знаете, что у вас есть доступ, выясните, что вы можете сделать и что возможно, выполнив ситуационную осведомлённость Azure.
Get-ARTADAccess — Аналогично, вы можете выяснить свои возможности в рамках Azure AD.
Командлеты, реализованные в этом модуле, оказались полезными в следующих сценариях использования и атак:
Az в AzureAD и обратно.Az, AzureAD, Microsoft.Graph и az cli.Этот модуль требует предварительной установки модулей PowerShell Az и AzureAD. Модули Microsoft.Graph и az cli являются опциональными, но также очень полезными.
Перед началом работы с Azure можно использовать следующие команды для подготовки среды атакующего:
Install-Module Az -Force -Confirm -AllowClobber -Scope CurrentUser
Install-Module AzureAD -Force -Confirm -AllowClobber -Scope CurrentUser
Install-Module Microsoft.Graph -Force -Confirm -AllowClobber -Scope CurrentUser # ОПЦИОНАЛЬНО
Install-Module MSOnline -Force -Confirm -AllowClobber -Scope CurrentUser # ОПЦИОНАЛЬНО
Install-Module AzureADPreview -Force -Confirm -AllowClobber -Scope CurrentUser # ОПЦИОНАЛЬНО
Install-Module AADInternals -Force -Confirm -AllowClobber -Scope CurrentUser # ОПЦИОНАЛЬНО
Import-Module Az
Import-Module AzureAD
Хотя для AzureRT требуются только первые два модуля, хорошо иметь и остальные предустановленными.
Затем для загрузки этого модуля просто введите:
PS> . .\AzureRT.ps1
И всё готово.
Или вы можете позволить AzureRT установить и импортировать все зависимости:
PS> . .\AzureRT.ps1
PS> Import-ARTModules
Модуль будет постепенно пополняться новыми инструментами и утилитами, естественным образом распределёнными по последующим фазам цепочки атаки.
Каждый командлет имеет понятное сообщение справки с подробным описанием параметров, описания и примера использования:
PS C:\> Get-Help Connect-ART
В настоящее время включены следующие утилиты:
Get-ARTWhoami — Отображает и проверяет наш контекст аутентификации в интерфейсах Azure, AzureAD, Microsoft.Graph и AZ CLI.
Connect-ART — Вызывает Connect-AzAccount для аутентификации текущего сеанса на портале Azure с помощью предоставленного маркера доступа или учётных данных. Избавляет от необходимости указывать Tenant ID и Account ID, автоматически извлекая их из предоставленного токена.
Connect-ARTAD — Вызывает Connect-AzureAD (и опционально Connect-MgGraph) для аутентификации текущего сеанса в Azure Active Directory с помощью предоставленного маркера доступа или учётных данных. Избавляет от необходимости указывать Tenant ID и Account ID, автоматически извлекая их из предоставленного токена.
Connect-ARTADServicePrincipal — Вызывает для аутентификации текущего сеанса на портале Azure с помощью предоставленного маркера доступа или учётных данных. Избавляет от необходимости указывать Tenant ID и Account ID, автоматически извлекая их из предоставленного токена. Затем создаёт самозаверяющий сертификат PFX и связывает его с субъектом-службой для аутентификации. После этого аутентифицируется как этот субъект-служба в AzureAD и удаляет связь с сертификатом для очистки.
Get-ARTAccess — Выполняет ситуационную осведомлённость Azure.
Get-ARTADAccess — Выполняет ситуационную осведомлённость Azure AD.
Get-ARTTenants — Выводит список арендаторов (тенантов), доступных для текущего аутентифицированного пользователя (или на основе предоставленного маркера доступа).
Get-ARTDangerousPermissions — Анализирует доступные ресурсы Azure и связанные с ними разрешения пользователя, чтобы найти все опасные, которые могут быть использованы атакующим.
Get-ARTResource — Аутентифицируется на https://management.azure.com с помощью предоставленного маркера доступа и извлекает доступные ресурсы и разрешения, которые владелец токена имеет на них.
Get-ARTRoleAssignment — Отображает назначения ролей Azure RBAC для текущего субъекта в более удобном для чтения виде.
Get-ARTADRoleAssignment — Отображает назначения ролей Azure AD для текущего пользователя или для всех пользователей Azure AD.
Get-ARTADScopedRoleAssignment — Отображает назначения ролей Azure AD с областью действия для текущего пользователя или для всех пользователей Azure AD, связанные с административными единицами.
Add-ARTADGuestUser — Отправляет приглашение гостевого пользователя Azure AD по электронной почте, позволяя внешнему атакующему расширить доступ к арендатору AAD, и возвращает URL-адрес для принятия приглашения Invite Redeem URL, используемый для лёгкого принятия приглашения.
Set-ARTADUserPassword — Злоупотребляет назначением роли Authentication Administrator для сброса пароля другого пользователя (не администратора).
Add-ARTUserToGroup — Добавляет указанного пользователя Azure AD в указанную группу Azure AD.
Add-ARTUserToRole — Добавляет указанного пользователя Azure AD в указанную роль Azure AD.
Add-ARTADAppSecret — Добавляет секрет клиента в приложения Azure AD. Автор: Nikhil Mittal, @nikhil_mitt.
Invoke-ARTAutomationRunbook — Создаёт Automation Runbook в указанной учётной записи Automation и для выбранной группы рабочих ролей. Этот Runbook будет содержать команды PowerShell для выполнения на всех затронутых виртуальных машинах Azure.
Invoke-ARTRunCommand — Злоупотребляет разрешением virtualMachines/runCommand для указанной виртуальной машины Azure с целью выполнения произвольной команды PowerShell.
Update-ARTAzVMUserData — Изменяет скрипт пользовательских данных виртуальной машины Azure с помощью прямого вызова API.
Invoke-ARTCustomScriptExtension — Создаёт новое или изменяет существующее расширение пользовательских скриптов виртуальной машины Azure, что приводит к удалённому выполнению кода.
Get-ARTTenantID — Извлекает Tenant ID текущего пользователя или Tenant ID на основе указанного имени домена.
Get-ARTPRTToken — Извлекает значение PRT (Primary Refresh Token) текущего пользователя с помощью ROADtoken от Dirk-Jan Mollema.
Get-ARTPRTNonce — Извлекает значение nonce PRT (Primary Refresh Token) текущего пользователя.
Get-ARTUserId — Получает текущего пользователя или пользователя, указанного в параметре ObjectId, с помощью модуля Az.
Get-ARTSubscriptionId — Вспомогательная функция для получения текущего идентификатора подписки.
Parse-JWTtokenRT — Разбирает входной JWT-токен и выводит его в удобном виде.
Invoke-ARTGETRequest — Принимает маркер доступа и выполняет GET-запрос REST API по указанному URI. Также проверяет, имеет ли предоставленный токен требуемую аудиторию.
Import-ARTModules — Устанавливает и импортирует необходимые и опциональные модули PowerShell для деятельности Azure Red Team.
Этот и другие проекты — результат бессонных ночей и немалого труда. Если вам нравится то, что я делаю, и вы цените, что я всегда отдаю что-то взамен сообществу, Купите мне кофе (или лучше пива), чтобы просто сказать спасибо! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
Connect-AzAccountGet-ARTAccessTokenAzCli — Получает маркер доступа из az cli с помощью az account get-access-token.
Get-ARTAccessTokenAz — Получает маркер доступа из модуля Az с помощью Get-AzAccessToken.
Get-ARTAccessTokenAzureAD — Получает маркер доступа из Azure Active Directory. Автор: Simon Wahlin, @SimonWahlin.
Get-ARTAccessTokenAzureADCached — Пытается извлечь локально кэшированный маркер доступа AzureAD (https://graph.microsoft.com), сохранённый после выполнения Connect-AzureAD.
Remove-ARTServicePrincipalKey — Выполняет действия по очистке после запуска Connect-ARTADServicePrincipal.
Get-ARTRolePermissions — Отображает все предоставленные разрешения для указанной роли Azure RBAC.
Get-ARTADRolePermissions — Отображает все предоставленные разрешения для указанной роли Azure AD.
Get-ARTADDynamicGroups — Отображает динамические группы Azure AD вместе с их правилами членства пользователей, количеством участников и статусом членства текущего пользователя.
Get-ARTApplication — Выводит список корпоративных приложений Azure AD, владельцем которых является текущий пользователь (или всех существующих при использовании ключа -All), вместе с их владельцами и субъектами-службами.
Get-ARTApplicationProxy — Выводит список корпоративных приложений Azure AD, для которых настроен Application Proxy.
Get-ARTApplicationProxyPrincipals — Отображает пользователей и группы, назначенные для указанного приложения Application Proxy.
Get-ARTStorageAccountKeys — Отображает все доступные ключи учётной записи хранения.
Get-ARTKeyVaultSecrets — Выводит список всех доступных секретов Azure Key Vault. Этот командлет предполагает, что запрашивающий пользователь подключён к Azure AD с токеном KeyVaultAccessToken (с областью https://vault.azure.net) и имеет назначенную роль "Key Vault Secrets User" (или эквивалентную).
Get-ARTAutomationCredentials — Выводит список всех доступных учётных данных учётной записи Azure Automation и пытается получить их значения (невозможно получить значения!).
Get-ARTAutomationRunbookCode — Вызывает метод REST API для получения исходного кода указанного Runbook.
Get-ARTAzVMPublicIP — Извлекает публичный IP-адрес виртуальной машины Azure.
Get-ARTResourceGroupDeploymentTemplate — Отображает JSON-шаблон развёртывания группы ресурсов на основе входных параметров или извлекает все шаблоны сразу.
Get-ARTAzVMUserDataFromInside — Извлекает пользовательские данные виртуальной машины Azure изнутри ВМ, обращаясь к конечной точке метаданных экземпляра.