Az - Rete Azure

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Informazioni di base

Azure fornisce reti virtuali (VNet) che permettono agli utenti di creare reti isolate all’interno del cloud Azure. All’interno di queste VNet, risorse come macchine virtuali, applicazioni, database… possono essere ospitate e gestite in modo sicuro. Il networking in Azure supporta sia la comunicazione all’interno del cloud (tra servizi Azure) sia la connessione a reti esterne e a internet.\
Inoltre, è possibile connettere le VNet con altre VNet e con reti on-premise.

Virtual Network (VNET) & Subnets

Una Azure Virtual Network (VNet) è la rappresentazione della tua rete nel cloud, fornendo isolamento logico all’interno dell’ambiente Azure dedicato alla tua sottoscrizione. Le VNet permettono di creare e gestire virtual private networks (VPNs) in Azure, ospitando risorse come macchine virtuali (VMs), database e servizi applicativi. Offrono il controllo completo sulle impostazioni di rete, inclusi gli intervalli di indirizzi IP, la creazione di subnet, le tabelle di routing e i gateway di rete.

Subnet sono suddivisioni all’interno di una VNet, definite da specifici intervalli di indirizzi IP. Segmentando una VNet in più subnet, puoi organizzare e proteggere le risorse secondo la tua architettura di rete.\
Per impostazione predefinita tutte le subnet all’interno della stessa Azure Virtual Network (VNet) possono comunicare tra di loro senza alcuna restrizione.

Esempio:

  • MyVNet con un intervallo di indirizzi IP 10.0.0.0/16.
  • Subnet-1: 10.0.0.0/24 per server web.
  • Subnet-2: 10.0.1.0/24 per server database.

Enumerazione

Per elencare tutte le VNet e le subnet in un account Azure, puoi usare Azure Command-Line Interface (CLI). Ecco i passaggi:

# 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

Network Security Groups (NSG)

Un Network Security Group (NSG) filtra il traffico di rete sia in entrata che in uscita dalle risorse Azure all’interno di una Azure Virtual Network (VNet). Contiene un insieme di regole di sicurezza che possono indicare quali porte aprire per il traffico in ingresso e in uscita per porta sorgente, IP sorgente, porta di destinazione ed è possibile assegnare una priorità (più basso è il numero di priorità, maggiore è la priorità).

Gli NSG possono essere associati a subnet e NIC.

Esempi di regole:

  • Una regola in ingresso che permette traffico HTTP (porta 80) da qualsiasi sorgente verso i tuoi web server.
  • Una regola in uscita che consente solo traffico SQL (porta 1433) verso un intervallo specifico di indirizzi IP di destinazione.

Enumerazione

# 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 è un firewall gestito e con stato che filtra il traffico (L3–L7) per flussi est-ovest e nord-sud. Distribuito a livello di VNet, centralizza l’ispezione per tutte le subnet e si ridimensiona automaticamente per garantire la disponibilità.

SKU disponibili: Basic, Standard e Premium:

Criteria/FeatureOption 1Option 2Option 3
Caso d’uso consigliatoPiccole/Medie imprese (SMBs) con esigenze limitateUso aziendale generale, filtraggio Layer 3–7Ambienti altamente sensibili (es. elaborazione pagamenti)
PrestazioniFino a 250 Mbps di throughputFino a 30 Gbps di throughputFino a 100 Gbps di throughput
Intelligence sulle minacceSolo avvisiAvvisi e blocco (IP/domini malevoli)Avvisi e blocco (intelligence avanzata sulle minacce)
Filtraggio L3–L7Filtraggio di baseFiltraggio stateful attraverso i protocolliFiltraggio stateful con ispezione avanzata
Protezione avanzata dalle minacceNon disponibileFiltraggio basato su intelligence sulle minacceInclude un sistema di rilevamento e prevenzione delle intrusioni (IDPS)
Ispezione TLSNon disponibileNon disponibileSupporta la terminazione TLS in ingresso e in uscita
DisponibilitàBackend fisso (2 VM)Ridimensionamento automaticoRidimensionamento automatico
Facilità di gestioneControlli baseGestito tramite Firewall ManagerGestito tramite Firewall Manager

Enumerazione

# 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

Tabelle di routing di Azure

Azure Route Tables (UDR) consentono di sovrascrivere il routing di default definendo prefissi di destinazione (es., 10.0.0.0/16 o 0.0.0.0/0) e un next hop (Virtual Network, Internet, Virtual Network Gateway, or Virtual Appliance).

Le route si applicano a livello di subnet; tutte le VM in quella subnet seguono la tabella.

Esempio:

  • Per il traffico verso Internet, usa il default 0.0.0.0/0 con Internet come next hop.
  • Per ispezionare il traffico in uscita, instrada 0.0.0.0/0 verso l’IP di una Network Virtual Appliance (NVA).

Enumerazione

# 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 è un servizio di Azure che consente l’accesso privato ai servizi Azure garantendo che il traffico tra la tua virtual network (VNet) di Azure e il servizio transiti interamente nel backbone di Azure di Microsoft. Porta di fatto il servizio nella tua VNet. Questa configurazione migliora la sicurezza evitando di esporre i dati a Internet pubblico.

Private Link può essere utilizzato con vari servizi Azure, come Azure Storage, Azure SQL Database e servizi personalizzati condivisi tramite Private Link. Fornisce un modo sicuro per fruire dei servizi dalla tua VNet o anche da diverse sottoscrizioni Azure.

Caution

NSGs do not apply to private endpoints, which clearly means that associating an NSG with a subnet that contains the Private Link will have no effect.

Esempio:

Considera uno scenario in cui hai un Azure SQL Database che vuoi accedere in modo sicuro dalla tua VNet. Normalmente questo potrebbe implicare il transito su Internet pubblico. Con Private Link puoi creare un private endpoint nella tua VNet che si connette direttamente al servizio Azure SQL Database. Questo endpoint fa apparire il database come se fosse parte della tua VNet, accessibile tramite un indirizzo IP privato, garantendo così un accesso sicuro e privato.

Enumerazione

# 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

Quando una VNet ha una Virtual Network Link verso una service Private DNS zone (es., privatelink.blob.core.windows.net), Azure forza la risoluzione dei nomi host per le risorse registrate con Private Link di quel tipo di servizio attraverso la zona. Se la zona manca del A record richiesto per una risorsa a cui i carichi di lavoro accedono ancora tramite il suo endpoint pubblico, la risoluzione DNS restituisce NXDOMAIN e i client non raggiungono mai l’IP pubblico, causando un availability DoS senza toccare direttamente la risorsa.

Abuse flow (control-plane DoS):

  1. Ottenere RBAC che consenta di creare Private Endpoints o modificare i Private DNS zone links.
  2. Creare un Private Endpoint per lo stesso tipo di servizio in un altro VNet (Azure crea automaticamente la service Private DNS zone e la collega a quel VNet).
  3. Collegare quella service Private DNS zone al VNet vittima.
  4. Poiché il VNet vittima ora forza la risoluzione tramite la Private DNS zone e non esiste alcun A record per la risorsa target in quella zona, la risoluzione dei nomi fallisce e il carico di lavoro non può raggiungere l’endpoint (ancora pubblico). Questo vale per qualsiasi servizio supportato da Private Link (storage, Key Vault, ACR, Cosmos DB, Function Apps, OpenAI, ecc.).

Discovery at scale (Azure Resource Graph):

  • VNETs collegati alla blob Private DNS zone (risoluzione forzata per endpoint blob registrati con PL):
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 raggiungibili tramite endpoint pubblico ma senza connessioni Private Endpoint (probabilmente si romperà se il link sopra viene aggiunto):
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 estendono lo spazio di indirizzi privati della tua virtual network e l’identità della tua VNet ai servizi Azure tramite una connessione diretta. Abilitando i service endpoints, le risorse nella tua VNet possono connettersi in modo sicuro ai servizi Azure, come Azure Storage e Azure SQL Database, sulla rete backbone di Azure. Questo è particolarmente utile se combinato con Network Security Groups (NSGs) per un controllo granulare del traffico.

Esempio:

  • Con Storage Account e Service Endpoint abilitato in una VNET, è possibile consentire il traffico in ingresso solo da una VNET nel firewall dell’account di storage, imponendo una connessione sicura senza necessità di accesso tramite public IP per il servizio di storage.

Service Endpoints non richiedono indirizzi IP privati per i servizi e si appoggiano invece al backbone di Azure per la connettività sicura. Sono più facili da configurare rispetto ai Private Links ma non offrono lo stesso livello di isolamento e granularità dei Private Links.

Enumerazione

# 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 consiglia di utilizzare Private Links nella docs:

Service Endpoints:

  • Il traffico dalla tua VNet verso il servizio Azure viaggia sulla rete backbone di Microsoft Azure, evitando l’internet pubblico.
  • L’endpoint è una connessione diretta al servizio Azure e non fornisce un private IP per il servizio all’interno della VNet.
  • Il servizio è comunque accessibile tramite il suo public endpoint dall’esterno della tua VNet, a meno che tu non configuri il service firewall per bloccare tale traffico.
  • È una relazione one-to-one tra la subnet e il servizio Azure.
  • Meno costoso rispetto a Private Links.

Private Links:

  • Private Link mappa i servizi Azure nella tua VNet tramite un private endpoint, che è un’interfaccia di rete con un private IP all’interno della tua VNet.
  • Il servizio Azure viene raggiunto usando questo private IP, facendo apparire il servizio come parte della tua rete.
  • I servizi connessi tramite Private Link possono essere raggiunti solo dalla tua VNet o dalle reti connesse; non c’è accesso dall’internet pubblico al servizio.
  • Permette una connessione sicura ai servizi Azure o ai tuoi servizi ospitati in Azure, così come una connessione ai servizi condivisi da altri.
  • Fornisce un controllo accessi più granulare tramite un private endpoint nella tua VNet, a differenza di un controllo più ampio a livello di subnet con service endpoints.

In sintesi, mentre sia Service Endpoints che Private Links offrono connettività sicura ai servizi Azure, Private Links offrono un livello maggiore di isolamento e sicurezza assicurando che i servizi siano accessibili privatamente senza esporli all’internet pubblico. Service Endpoints, d’altro canto, sono più facili da configurare per casi generali in cui è richiesto un accesso semplice e sicuro ai servizi Azure senza la necessità di un private IP nella VNet.

Azure Front Door (AFD) & AFD WAF

Azure Front Door è un punto di ingresso scalabile e sicuro per la consegna veloce delle tue applicazioni web globali. Combina vari servizi come accelerazione delle applicazioni, SSL offloading e security a livello applicativo (tramite Web Application Firewall - WAF). È costruito sul concetto di edge POP (Point of Presence) distribuiti nel mondo per avvicinare le tue applicazioni ai tuoi utenti.

Azure Front Door fornisce una rete globalmente distribuita di edge locations per instradare e accelerare il traffico in ingresso verso le tue applicazioni web (in Azure o altrove), migliorare le prestazioni e aumentare la sicurezza.

Esempio:

  • Per una piattaforma e-commerce globale con utenti in tutto il mondo, Azure Front Door può memorizzare nella cache i contenuti statici nelle edge locations e offrire SSL offloading, riducendo la latenza e fornendo un’esperienza utente più reattiva. Inoltre, fornisce WAF per proteggere le tue applicazioni dalle comuni vulnerabilità web (come SQL injection o XSS).

Azure Front Door offre anche un bilanciamento intelligente del carico instradando il traffico verso il backend disponibile più vicino basandosi su health probes e latenza, garantendo prestazioni e disponibilità costanti. Integrando WAF, aiuta a proteggere contro le comuni minacce web.

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 e Azure Application Gateway WAF

Azure Application Gateway è un bilanciatore di carico per traffico web che ti consente di gestire il traffico verso le tue applicazioni web. Offre bilanciamento del carico a Layer 7, terminazione SSL e funzionalità di web application firewall (WAF) nell’Application Delivery Controller (ADC) come servizio. Le funzionalità principali includono instradamento basato su URL, affinità di sessione basata su cookie e offloading del Secure Sockets Layer (SSL), fondamentali per applicazioni che richiedono capacità di bilanciamento del carico complesse come il routing globale e il routing basato sul percorso.

Esempio:

Considera uno scenario in cui hai un sito e-commerce che include più sottodomini per funzioni diverse, come account utente e elaborazione pagamenti. Azure Application Gateway può instradare il traffico verso i web server appropriati in base al percorso URL. Ad esempio, il traffico verso example.com/accounts potrebbe essere indirizzato al servizio account utente, e il traffico verso example.com/pay potrebbe essere indirizzato al servizio di elaborazione pagamenti.
E proteggere il tuo sito dagli attacchi usando le funzionalità WAF.

Enumerazione

# 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 & topologie Hub and Spoke

VNet Peering

VNet Peering è una funzionalità di Azure che consente a diverse Virtual Networks (VNets) di essere connesse in modo diretto e trasparente. Attraverso VNet Peering, le risorse in un VNet possono comunicare con risorse in un altro VNet usando indirizzi IP privati, come se fossero nella stessa rete.
VNet Peering può essere usato anche con reti on-prem configurando una site-to-site VPN o Azure ExpressRoute.

Azure Hub and Spoke è un’architettura di rete che sfrutta VNet peering per creare un Hub VNet centrale che si connette a più Spoke VNets. L’hub tipicamente contiene servizi condivisi (come firewalls, DNS o Active Directory) mentre gli spoke ospitano i carichi applicativi. Questo design semplifica la gestione, migliora la sicurezza tramite controlli centralizzati e riduce la ridondanza.

Esempio:

Una grande azienda con più dipartimenti (Finance, HR, IT) può creare un Hub VNet con servizi condivisi come firewalls e server DNS. Ogni dipartimento può avere il proprio Spoke VNet che si collega all’Hub via peering. Questo permette ai dipartimenti di comunicare in modo sicuro e utilizzare servizi condivisi senza esporre le loro risorse a Internet pubblico.

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

Una Site-to-Site VPN in Azure stabilisce una connessione sicura e persistente dalla tua rete on-premises alla tua Azure Virtual Network (VNet), permettendo a risorse come le VMs all’interno di Azure di apparire come se fossero sulla tua rete locale. Questa connessione viene stabilita tramite un VPN gateway che cifra il traffico tra le due reti.

Esempio:

Un’azienda con sede principale a New York ha un data center on-premises che deve connettersi in modo sicuro alla sua VNet in Azure, che ospita i suoi carichi di lavoro virtualizzati. Configurando una Site-to-Site VPN, l’azienda può garantire connettività cifrata tra i server on-premises e le VM in Azure, permettendo l’accesso sicuro alle risorse in entrambi gli ambienti come se fossero nella stessa rete locale.

Enumerazione

# 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 è un servizio che fornisce una connessione privata, dedicata e ad alta velocità tra la tua infrastruttura on-premises e i data center Azure. Questa connessione è effettuata tramite un provider di connettività, evitando la rete pubblica e offrendo maggiore affidabilità, velocità superiori, latenze ridotte e una sicurezza più elevata rispetto alle connessioni Internet tradizionali.

Esempio:

Una multinazionale necessita di una connessione costante e affidabile ai suoi servizi Azure a causa dell’elevato volume di dati e della necessità di elevata larghezza di banda. L’azienda opta per Azure ExpressRoute per collegare direttamente il proprio data center on-premises ad Azure, facilitando trasferimenti di dati su larga scala, come backup giornalieri e analisi dei dati in tempo reale, con maggiore privacy e velocità.

Enumerazione

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

Riferimenti

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks