Az - Azure Network

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Azure provides virtual networks (VNet) koje omogućavaju korisnicima da kreiraju izolovane mreže unutar Azure oblaka. U tim VNets, resursi kao što su Virtual Machines (VMs), aplikacije, baze podataka… mogu biti bezbedno hostovani i upravljani. Mrežna arhitektura u Azure podržava kako komunikaciju unutar oblaka (između Azure usluga), tako i konekciju prema eksternim mrežama i internetu.\ Takođe je moguće povezati VNets sa drugim VNets i sa on-premise mrežama.

Virtual Network (VNET) & Subnets

An Azure Virtual Network (VNet) is a representation of your own network in the cloud, providing logical isolation within the Azure environment dedicated to your subscription. VNets allow you to provision and manage virtual private networks (VPNs) in Azure, hosting resources like Virtual Machines (VMs), databases, and application services. They offer full control over network settings, including IP address ranges, subnet creation, route tables, and network gateways.

Subnets are subdivisions within a VNet, defined by specific IP address ranges. By segmenting a VNet into multiple subnets, you can organize and secure resources according to your network architecture.\ By default all subnets within the same Azure Virtual Network (VNet) can communicate with each other without any restrictions.

Example:

  • MyVNet sa opsegom IP adresa 10.0.0.0/16.
  • Subnet-1: 10.0.0.0/24 za web servere.
  • Subnet-2: 10.0.1.0/24 za baze podataka.

Enumeracija

Da biste nabrojali sve VNets i subnets u Azure nalogu, možete koristiti Azure Command-Line Interface (CLI). Evo koraka:

# List VNets
az network vnet list --query "[].{name:name, location:location, addressSpace:addressSpace}"

# List subnets of a VNet
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, addressPrefix:addressPrefix}" -o table

Mrežne bezbednosne grupe (NSG)

Mrežna bezbednosna grupa (NSG) filtrira mrežni saobraćaj i ka i od Azure resursa unutar Azure Virtual Network (VNet). Sadrži skup bezbednosnih pravila koja mogu odrediti koje portove otvoriti za ulazni i izlazni saobraćaj po izvornom portu, izvornoj IP adresi, portu odredišta, i moguće je dodeliti prioritet (manji broj prioriteta znači viši prioritet).

NSG se mogu povezati sa podmrežama i NIC-ovima.

Primer pravila:

  • Ulazno pravilo koje dozvoljava HTTP saobraćaj (port 80) sa bilo kog izvora ka vašim web serverima.
  • Izlazno pravilo koje dozvoljava samo SQL saobraćaj (port 1433) ka određenom rasponu odredišnih IP adresa.

Enumeracija

# List NSGs
az network nsg list --query "[].{name:name, location:location}" -o table
az network nsg show --name <nsg-name>

# Get NSG rules
az network nsg rule list --nsg-name <NSGName> --resource-group <ResourceGroupName> --query "[].{name:name, priority:priority, direction:direction, access:access, protocol:protocol, sourceAddressPrefix:sourceAddressPrefix, destinationAddressPrefix:destinationAddressPrefix, sourcePortRange:sourcePortRange, destinationPortRange:destinationPortRange}" -o table

# Get NICs and subnets using this NSG
az network nsg show --name <NSGName> --resource-group <ResourceGroupName> --query "{subnets: subnets, networkInterfaces: networkInterfaces}"

Azure Firewall

Azure Firewall je upravljani, stateful vatrozid koji filtrira saobraćaj (L3–L7) za east–west i north–south tokove. Raspoređen na nivou VNet, centralizuje inspekciju za sve podmreže i automatski se skalira radi dostupnosti.

Available SKUs: Basic, Standard, and Premium:

Criteria/FeatureOption 1Option 2Option 3
Preporučena primenaMala/srednja preduzeća (SMBs) sa ograničenim potrebamaOpšta upotreba u preduzećima, filtriranje slojeva 3–7Visoko osetljiva okruženja (npr. obrada plaćanja)
PerformanseDo 250 Mbps propusnostiDo 30 Gbps propusnostiDo 100 Gbps propusnosti
Obaveštavanje o pretnjamaSamo upozorenjaUpozorenja i blokiranje (maliciozni IP-ovi/domeni)Upozorenja i blokiranje (napredna obaveštajna analiza pretnji)
Filtriranje L3–L7Osnovno filtriranjestateful filtriranje preko protokolastateful filtriranje sa naprednom inspekcijom
Napredna zaštita od pretnjiNije dostupnoFiltriranje zasnovano na obaveštavanju o pretnjamaUključuje Intrusion Detection and Prevention System (IDPS)
TLS inspekcijaNije dostupnoNije dostupnoPodržava dolaznu i odlaznu TLS terminaciju
DostupnostFiksni backend (2 VMs)Automatsko skaliranjeAutomatsko skaliranje
Jednostavnost upravljanjaOsnovne kontroleUpravljanje preko Firewall ManagerUpravljanje preko Firewall Manager

Enumeracija

# List Azure Firewalls
az network firewall list --query "[].{name:name, location:location, subnet:subnet, publicIp:publicIp}" -o table

# Get network rules of a firewall
az network firewall network-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

# Get application rules of a firewall
az network firewall application-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

# Get nat rules of a firewall
az network firewall nat-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

Azure Route Tables

Azure Route Tables (UDR) vam omogućavaju da nadjačate podrazumevano rutiranje definisanjem odredišnih prefiksa (npr. 10.0.0.0/16 ili 0.0.0.0/0) i next hop (Virtual Network, Internet, Virtual Network Gateway, ili Virtual Appliance).

Rute se primenjuju na nivou subnet-a; svi VMs u tom subnetu prate tabelu.

Primer:

  • Za saobraćaj ka internetu, koristite podrazumevani 0.0.0.0/0 sa Internet kao next hop.
  • Da biste pregledali odlazni saobraćaj, rutirajte 0.0.0.0/0 ka IP adresi Network Virtual Appliance (NVA).

Enumeracija

# List Route Tables
az network route-table list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

# List routes for a table (summary)
az network route-table route list --resource-group <ResourceGroupName> --route-table-name <RouteTableName> --query "[].{name:name, addressPrefix:addressPrefix, nextHopType:nextHopType, nextHopIpAddress:nextHopIpAddress}" -o table

# List routes for a table (full)
az network route-table route list --resource-group <ResourceGroupName> --route-table-name <RouteTableName>

Azure Private Link je servis u Azure koji omogućava privatni pristup Azure servisima tako što osigurava da saobraćaj između vašeg Azure virtualnog mrežnog okruženja (VNet) i servisa putuje u potpunosti unutar Microsoft-ove Azure backbone mreže. Efektivno dovodi servis u vaš VNet. Ovo podešavanje povećava bezbednost tako što ne izlaže podatke javnom internetu.

Private Link se može koristiti sa različitim Azure servisima, kao što su Azure Storage, Azure SQL Database, i prilagođeni servisi deljeni putem Private Link. Pruža siguran način korišćenja servisa iz vašeg VNet-a ili čak iz različitih Azure pretplata.

Caution

NSGs se ne primenjuju na private endpoints, što jasno znači da povezivanje NSG-a sa subnet-om koji sadrži Private Link neće imati efekta.

Primer:

Zamislite scenario u kojem imate Azure SQL Database kojem želite pristupiti bezbedno iz vašeg VNet-a. Obično bi to moglo uključivati prolazak kroz javni internet. Sa Private Link-om, možete kreirati private endpoint u vašem VNet-u koji se povezuje direktno na Azure SQL Database servis. Taj endpoint čini da baza izgleda kao da je deo vašeg VNet-a, dostupna preko privatne IP adrese, čime se obezbeđuje siguran i privatni pristup.

Enumeration

# List Private Link Services
az network private-link-service list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

# List Private Endpoints
az network private-endpoint list --query "[].{name:name, location:location, resourceGroup:resourceGroup, privateLinkServiceConnections:privateLinkServiceConnections}" -o table

Kada VNet ima Virtual Network Link ka service Private DNS zone (npr., privatelink.blob.core.windows.net), Azure prinuđuje rezoluciju imena hosta za Private Link registrovane resurse tog tipa servisa kroz zonu. Ako zona nema obavezni A record za resurs kojem workloadi i dalje pristupaju preko javnog endpointa, DNS rezolucija vraća NXDOMAIN i klijenti nikada ne dosegnu javni IP, uzrokujući availability DoS bez diranja samog resursa.

Abuse flow (control-plane DoS):

  1. Stekni RBAC koji dozvoljava kreiranje Private Endpoints ili izmenu Private DNS zone links.
  2. Kreiraj Private Endpoint za isti tip servisa u drugom VNet-u (Azure automatski kreira service Private DNS zone i povezuje je sa tim VNet-om).
  3. Poveži tu service Private DNS zone sa VNet-om žrtve.
  4. Pošto VNet žrtve sada prinuđuje rezoluciju preko Private DNS zone i u toj zoni ne postoji A record za ciljni resurs, rezolucija imena ne uspeva i workload ne može da dosegne (još uvek javni) endpoint. Ovo važi za bilo koji servis koji podržava Private Link (storage, Key Vault, ACR, Cosmos DB, Function Apps, OpenAI, itd.).

Discovery at scale (Azure Resource Graph):

  • VNETs linked to the blob Private DNS zone (forced resolution for PL-registered blob endpoints):
resources
| where type == "microsoft.network/privatednszones/virtualnetworklinks"
| extend
zone = tostring(split(id, "/virtualNetworkLinks")[0]),
vnetId = tostring(properties.virtualNetwork.id)
| join kind=inner (
resources
| where type == "microsoft.network/privatednszones"
| where name == "privatelink.blob.core.windows.net"
| project zoneId = id
) on $left.zone == $right.zoneId
| project vnetId
  • Storage accounts dostupni preko public endpoint ali bez Private Endpoint connections (verovatno će prestati da radi ako se doda gornji link):
Resources
| where type == "microsoft.storage/storageaccounts"
| extend publicNetworkAccess = properties.publicNetworkAccess
| extend defaultAction = properties.networkAcls.defaultAction
| extend vnetRules = properties.networkAcls.virtualNetworkRules
| extend ipRules = properties.networkAcls.ipRules
| extend privateEndpoints = properties.privateEndpointConnections
| where publicNetworkAccess == "Enabled"
| where defaultAction == "Deny"
| where (isnull(privateEndpoints) or array_length(privateEndpoints) == 0)
| extend allowedVnets = iif(isnull(vnetRules), 0, array_length(vnetRules))
| extend allowedIps = iif(isnull(ipRules), 0, array_length(ipRules))
| where allowedVnets > 0 or allowedIps > 0
| project id, name, vnetRules, ipRules

Azure Service Endpoints

Azure Service Endpoints proširuju privatni adresni prostor vaše virtualne mreže i identitet vašeg VNet-a prema Azure services putem direktne veze. Omogućavanjem service endpoints, resursi u vašem VNet-u mogu bezbedno da se povežu sa Azure services, kao što su Azure Storage i Azure SQL Database, preko Azure backbone mreže. Ovo je posebno korisno kada se kombinuje sa Network Security Groups (NSGs) za granularnu kontrolu saobraćaja.

Primer:

  • Sa Storage Account-om i Service Endpoint-om omogućenim u VNET-u, moguće je dozvoliti dolazni saobraćaj samo iz VNET-a u storage account firewall-u, prisiljavajući sigurnu vezu bez potrebe za pristupom javnim IP adresama za storage service.

Service Endpoints ne zahtevaju privatne IP adrese za servise i umesto toga se oslanjaju na Azure backbone za sigurnu konektivnost. Oni su lakši za podešavanje u poređenju sa Private Links, ali ne pružaju isti nivo izolacije i granularnosti kao Private Links.

Enumeration

# List Virtual Networks with Service Endpoints
az network vnet list --query "[].{name:name, location:location, serviceEndpoints:serviceEndpoints}" -o table

# List Subnets with Service Endpoints
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, serviceEndpoints:serviceEndpoints}"

# List Service Endpoints for a Subnet
az network vnet subnet show --resource-group <ResourceGroupName> --vnet-name <VNetName> --name <SubnetName> --query "serviceEndpoints"

Microsoft preporučuje korišćenje Private Links u docs:

Service Endpoints:

  • Saobraćaj iz vašeg VNet-a ka Azure servisu prolazi preko Microsoft Azure backbone mreže, zaobilazeći javni internet.
  • Endpoint je direktna veza ka Azure servisu i ne obezbeđuje privatnu IP adresu servisa unutar VNet-a.
  • Sam servis je i dalje dostupan preko svog javnog endpoint-a izvan vašeg VNet-a osim ako ne konfigurišete service firewall da blokira takav saobraćaj.
  • Odnos je jedan-prema-jedan između subnet-a i Azure servisa.
  • Jeftinije od Private Links.

Private Links:

  • Private Link mapira Azure servise u vaš VNet preko private endpoint-a, koji je mrežni interfejs sa privatnom IP adresom unutar vašeg VNet-a.
  • Azure servis se pristupa koristeći ovu privatnu IP adresu, što ga čini vidljivim kao da je deo vaše mreže.
  • Servisi povezani preko Private Link-a mogu se pristupiti samo iz vašeg VNet-a ili povezanih mreža; nema pristupa servisu preko javnog interneta.
  • Omogućava sigurnu vezu ka Azure servisima ili vašim servisima hostovanim u Azure-u, kao i vezu ka servisima koje dele drugi.
  • Pruža granularniju kontrolu pristupa putem private endpoint-a u vašem VNet-u, za razliku od šire kontrole pristupa na nivou subnet-a sa service endpoints.

Ukratko, i Service Endpoints i Private Links obezbeđuju sigurnu povezanost sa Azure servisima, ali Private Links nude viši nivo izolacije i bezbednosti time što osiguravaju da se servisi pristupaju privatno bez izlaganja javnom internetu. Service Endpoints, s druge strane, su lakši za postavljanje u opštim slučajevima gde je potreban jednostavan, siguran pristup Azure servisima bez potrebe za privatnom IP adresom u VNet-u.

Azure Front Door (AFD) & AFD WAF

Azure Front Door je skalabilna i sigurna ulazna tačka za brzu isporuku vaših globalnih web aplikacija. Ona objedinjuje razne servise kao što su akceleracija aplikacija, SSL offloading i sigurnost na aplikativnom sloju (putem Web Application Firewall - WAF). Izgrađena je na konceptu edge POP (Point of Presence) lokacija širom sveta kako bi približila vaše aplikacije korisnicima.

Azure Front Door obezbeđuje globalno distribuiranu mrežu edge lokacija za usmeravanje i ubrzavanje dolaznog saobraćaja ka vašim web aplikacijama (u Azure-u ili drugde), poboljšava performanse i povećava bezbednost.

Primer:

  • Za globalnu e-commerce platformu sa korisnicima širom sveta, Azure Front Door može keširati statički sadržaj na edge lokacijama i ponuditi SSL offloading, smanjujući latenciju i obezbeđujući responzivnije korisničko iskustvo. Dodatno, pruža WAF da zaštiti vaše aplikacije od uobičajenih web ranjivosti (kao što su SQL injection ili XSS).

Azure Front Door takođe nudi inteligentno balansiranje opterećenja usmeravanjem saobraćaja ka najbližem dostupnom backend-u na osnovu health probes i latencije, obezbeđujući konzistentne performanse i dostupnost. Integracijom WAF, pomaže u zaštiti od uobičajenih web pretnji.

Enumeration

# List Azure Front Door profiles
az afd profile list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

# List AFD endpoints
az afd endpoint list --profile-name <ProfileName> --resource-group <ResourceGroupName> --query "[].{name:name, hostName:hostName, state:resourceState}" -o table

# Classic Azure Front Door (v1) profiles
az network front-door list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

# Classic Azure Front Door WAF policies
az network front-door waf-policy list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

Azure Application Gateway i Azure Application Gateway WAF

Azure Application Gateway je load balancer za web saobraćaj koji vam omogućava da upravljate saobraćajem ka vašim web aplikacijama. Nudi Layer 7 load balancing, SSL termination, i web application firewall (WAF) mogućnosti u okviru Application Delivery Controller (ADC) kao servisa. Ključne karakteristike uključuju URL-based routing, cookie-based session affinity i secure sockets layer (SSL) offloading, koje su ključne za aplikacije koje zahtevaju složene mogućnosti balansiranja opterećenja poput global routing i path-based routing.

Primer:

Razmotrite scenario gde imate e-commerce web sajt koji uključuje više poddomena za različite funkcije, kao što su korisnički nalozi i obrada plaćanja. Azure Application Gateway može usmeravati saobraćaj ka odgovarajućim web serverima na osnovu URL puta. Na primer, saobraćaj ka example.com/accounts može biti usmeren na servis za korisničke naloge, a saobraćaj ka example.com/pay može biti usmeren na servis za obradu plaćanja.
I zaštititi vaš web sajt od napada koristeći WAF mogućnosti.

Enumeracija

# List the Web Application Firewall configurations for your Application Gateways
az network application-gateway waf-config list --gateway-name <AppGatewayName> --resource-group <ResourceGroupName> --query "[].{name:name, firewallMode:firewallMode, ruleSetType:ruleSetType, ruleSetVersion:ruleSetVersion}" -o table

VNet Peering & HUB and Spoke topologije

VNet Peering

VNet Peering je funkcija u Azure koja omogućava da se različite Virtual Networks (VNets) povežu direktno i bešavno. Kroz VNet peering, resursi u jednom VNet-u mogu komunicirati sa resursima u drugom VNet-u koristeći privatne IP adrese, kao da su u istoj mreži.
VNet Peering se takođe može koristiti sa on-prem mrežama postavljanjem site-to-site VPN ili Azure ExpressRoute.

Azure Hub and Spoke je mrežna arhitektura koja koristi VNet peering da kreira centralni Hub VNet koji se povezuje sa više Spoke VNets. Hub obično sadrži deljene servise (kao što su firewalls, DNS, ili Active Directory), dok spokes hostuju aplikacijska radna opterećenja. Ovaj dizajn pojednostavljuje upravljanje, povećava sigurnost kroz centralizovane kontrole i smanjuje redundanciju.

Primer:

Veliko preduzeće sa više odeljenja (Finance, HR, IT) može kreirati Hub VNet sa deljenim servisima kao što su firewalls i DNS serveri. Svako odeljenje može imati svoj Spoke VNet koji se povezuje sa Hub via peering. Ovo omogućava odeljenjima da sigurno komuniciraju i koriste deljene servise bez izlaganja svojih resursa javnom internetu.

Enumeration

# List all VNets in your subscription
az network vnet list --query "[].{name:name, location:location, addressSpace:addressSpace}" -o table

# List VNet Peerings
az network vnet peering list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, remoteVnetId:remoteVirtualNetwork.id, allowForwardedTraffic:allowForwardedTraffic, allowGatewayTransit:allowGatewayTransit}"

# List Shared Resources (e.g., Azure Firewall) in the Hub
az network firewall list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

Site-to-Site VPN

A Site-to-Site VPN in Azure uspostavlja sigurnu i trajnu konekciju sa vaše on-premises mreže do vaše Azure Virtual Network (VNet), omogućavajući resursima kao što su VMs unutar Azure da se pojavljuju kao da su na vašoj lokalnoj mreži. Ova veza se uspostavlja kroz VPN gateway koji enkriptuje saobraćaj između dve mreže.

Primer:

Preduzeće sa glavnom kancelarijom u New Yorku ima on-premises data centar koji treba da se sigurno poveže sa svojim VNet in Azure, koji hostuje njegova virtualizovana radna opterećenja. Podesivši Site-to-Site VPN, kompanija može obezbediti enkriptovanu konekciju između on-premises servera i Azure VMs, omogućavajući siguran pristup resursima u oba okruženja kao da su na istoj lokalnoj mreži.

Enumeration

# List VPN Gateways
az network vnet-gateway list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

# List VPN Connections
az network vpn-connection list --gateway-name <VpnGatewayName> --resource-group <ResourceGroupName> --query "[].{name:name, connectionType:connectionType, connectionStatus:connectionStatus}" -o table

Azure ExpressRoute

Azure ExpressRoute je servis koji obezbeđuje privatnu, namensku, visokobrzinsku vezu između vaše on-premises infrastrukture i Azure data centara. Ova veza se uspostavlja preko provajdera konektivnosti, zaobilazeći javni internet i nudeći veću pouzdanost, veće brzine, niže latencije i viši nivo bezbednosti u odnosu na tipične internet veze.

Primer:

Multinacionalna korporacija zahteva konzistentnu i pouzdanu vezu ka svojim Azure servisima zbog velikog obima podataka i potrebe za velikim propusnim opsegom. Kompanija se odlučuje za Azure ExpressRoute da direktno poveže svoj on-premises data center sa Azure-om, olakšavajući prenose podataka velikih razmera, poput dnevnih rezervnih kopija i analitike podataka u realnom vremenu, uz poboljšanu privatnost i brzinu.

Enumeration

# List ExpressRoute Circuits
az network express-route list --query "[].{name:name, location:location, resourceGroup:resourceGroup, serviceProviderName:serviceProviderName, peeringLocation:peeringLocation}" -o table

Reference

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks