Az - Azure Network

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Informations de base

Azure fournit des rĂ©seaux virtuels (VNet) qui permettent aux utilisateurs de crĂ©er des rĂ©seaux isolĂ©s au sein du cloud Azure. Dans ces VNets, des ressources telles que des machines virtuelles, des applications, des bases de donnĂ©es
 peuvent ĂȘtre hĂ©bergĂ©es et gĂ©rĂ©es en toute sĂ©curitĂ©. Le rĂ©seau dans Azure prend en charge Ă  la fois la communication au sein du cloud (entre les services Azure) et la connexion aux rĂ©seaux externes et Ă  Internet.
De plus, il est possible de connecter des VNets entre eux et avec des réseaux on-premise.

Virtual Network (VNet) & Sous-réseaux

Un Azure Virtual Network (VNet) est la reprĂ©sentation de votre propre rĂ©seau dans le cloud, offrant une isolation logique au sein de l’environnement Azure dĂ©diĂ©e Ă  votre abonnement. Les VNets vous permettent de provisionner et gĂ©rer des rĂ©seaux privĂ©s virtuels (VPN) dans Azure, hĂ©bergeant des ressources comme des Virtual Machines (VM), des bases de donnĂ©es et des services d’application. Ils offrent un contrĂŽle total sur les paramĂštres rĂ©seau, y compris les plages d’adresses IP, la crĂ©ation de sous-rĂ©seaux, les tables de routage et les gateways rĂ©seau.

Les sous-rĂ©seaux sont des subdivisions au sein d’un VNet, dĂ©finies par des plages d’adresses IP spĂ©cifiques. En segmentant un VNet en plusieurs sous-rĂ©seaux, vous pouvez organiser et sĂ©curiser les ressources selon votre architecture rĂ©seau.
Par dĂ©faut, tous les sous-rĂ©seaux au sein du mĂȘme Azure Virtual Network (VNet) peuvent communiquer entre eux sans aucune restriction.

Exemple:

  • MyVNet with an IP address range of 10.0.0.0/16.
  • Subnet-1: 10.0.0.0/24 for web servers.
  • Subnet-2: 10.0.1.0/24 for database servers.

ÉnumĂ©ration

Pour lister tous les VNets et sous-rĂ©seaux dans un compte Azure, vous pouvez utiliser l’Azure Command-Line Interface (CLI). Voici les Ă©tapes:

# 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

Groupes de sécurité réseau (NSG)

Un Network Security Group (NSG) filtre le trafic rĂ©seau entrant et sortant des ressources Azure au sein d’un Azure Virtual Network (VNet). Il contient un ensemble de rĂšgles de sĂ©curitĂ© qui peuvent indiquer quels ports ouvrir pour le trafic entrant et sortant selon le port source, l’IP source, le port de destination, et il est possible d’assigner une prioritĂ© (plus le numĂ©ro de prioritĂ© est bas, plus la prioritĂ© est Ă©levĂ©e).

Les NSG peuvent ĂȘtre associĂ©s Ă  des sous-rĂ©seaux et des NICs.

Exemples de rĂšgles :

  • Une rĂšgle entrante autorisant le trafic HTTP (port 80) depuis n’importe quelle source vers vos serveurs web.
  • Une rĂšgle sortante n’autorisant que le trafic SQL (port 1433) vers une plage d’adresses IP de destination spĂ©cifique.

ÉnumĂ©ration

# 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 est un managed, stateful firewall qui filtre le trafic (L3–L7) pour les flux est-ouest et nord-sud. DĂ©ployĂ© au niveau VNet, il centralise l’inspection de tous les sous-rĂ©seaux et se met Ă  l’échelle automatiquement pour garantir la disponibilitĂ©.

SKUs disponibles : Basic, Standard et Premium :

CritÚre/FonctionnalitéOption 1Option 2Option 3
Cas d’utilisation recommandĂ©Petites/moyennes entreprises (PME) avec des besoins limitĂ©sUsage d’entreprise gĂ©nĂ©ral, filtrage Layer 3–7Environnements hautement sensibles (par ex. traitement des paiements)
PerformanceJusqu’à 250 Mbps de dĂ©bitJusqu’à 30 Gbps de dĂ©bitJusqu’à 100 Gbps de dĂ©bit
Renseignement sur les menacesAlertes uniquementAlertes et blocage (IPs/domaines malveillants)Alertes et blocage (renseignement sur les menaces avancé)
Filtrage L3–L7Filtrage basiqueFiltrage stateful sur plusieurs protocolesFiltrage stateful avec inspection avancĂ©e
Protection avancée contre les menacesNon disponibleFiltrage basé sur le renseignement sur les menacesInclut SystÚme de détection et de prévention des intrusions (IDPS)
Inspection TLSNon disponibleNon disponiblePrend en charge la terminaison TLS entrante/sortante
DisponibilitĂ©Backend fixe (2 VMs)Mise Ă  l’échelle automatiqueMise Ă  l’échelle automatique
Facilité de gestionContrÎles basiquesGéré via Firewall ManagerGéré via Firewall Manager

ÉnumĂ©ration

# 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) vous permettent de remplacer le routage par défaut en définissant des préfixes de destination (par ex., 10.0.0.0/16 ou 0.0.0.0/0) et un next hop (Virtual Network, Internet, Virtual Network Gateway, or Virtual Appliance).

Les routes s’appliquent au niveau du sous-rĂ©seau ; toutes les VMs dans ce sous-rĂ©seau suivent la table.

Exemple :

  • Pour le trafic destinĂ© Ă  Internet, utilisez le 0.0.0.0/0 par dĂ©faut avec Internet comme next hop.
  • Pour inspecter le trafic sortant, orientez 0.0.0.0/0 vers l’IP d’un Network Virtual Appliance (NVA).

ÉnumĂ©ration

# 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 est un service d’Azure qui permet l’accĂšs privĂ© aux services Azure en garantissant que le trafic entre votre Azure virtual network (VNet) et le service circule entiĂšrement sur le rĂ©seau backbone d’Azure de Microsoft. Il intĂšgre effectivement le service dans votre VNet. Cette configuration renforce la sĂ©curitĂ© en n’exposant pas les donnĂ©es Ă  l’internet public.

Private Link peut ĂȘtre utilisĂ© avec divers services Azure, comme Azure Storage, Azure SQL Database, et des services personnalisĂ©s partagĂ©s via Private Link. Il fournit un moyen sĂ©curisĂ© de consommer des services depuis votre propre VNet ou mĂȘme depuis diffĂ©rents abonnements Azure.

Caution

Les NSGs ne s’appliquent pas aux private endpoints, ce qui signifie clairement que l’association d’un NSG à un subnet contenant le Private Link n’aura aucun effet.

Exemple :

ConsidĂ©rez un scĂ©nario oĂč vous avez une Azure SQL Database que vous souhaitez accĂ©der de façon sĂ©curisĂ©e depuis votre VNet. Normalement, cela impliquerait de traverser l’internet public. Avec Private Link, vous pouvez crĂ©er un private endpoint dans votre VNet qui se connecte directement au service Azure SQL Database. Cet endpoint fait apparaĂźtre la base de donnĂ©es comme si elle faisait partie de votre propre VNet, accessible via une adresse IP privĂ©e, garantissant ainsi un accĂšs sĂ©curisĂ© et privĂ©.

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

Lorsqu’un VNet a un Virtual Network Link vers une service Private DNS zone (par ex., privatelink.blob.core.windows.net), Azure force la rĂ©solution des noms d’hĂŽte pour les ressources enregistrĂ©es avec Private Link de ce type de service via la zone. Si la zone ne contient pas le A record requis pour une ressource que les workloads atteignent encore via son endpoint public, la rĂ©solution DNS renvoie NXDOMAIN et les clients n’atteignent jamais l’IP publique, provoquant un DoS de disponibilitĂ© sans toucher la ressource elle-mĂȘme.

Flux d’abus (DoS sur le plan de contrîle) :

  1. Obtenir des permissions RBAC permettant de créer Private Endpoints ou de modifier des Private DNS zone links.
  2. CrĂ©er un Private Endpoint pour le mĂȘme type de service dans un autre VNet (Azure crĂ©e automatiquement la service Private DNS zone et la lie Ă  ce VNet).
  3. Lier cette service Private DNS zone au VNet victime.
  4. Parce que le VNet victime force dĂ©sormais la rĂ©solution via la Private DNS zone et qu’aucun A record n’existe pour la ressource ciblĂ©e dans cette zone, la rĂ©solution de nom Ă©choue et le workload ne peut pas atteindre l’endpoint (toujours public). Cela s’applique Ă  tout service pris en charge par Private Link (storage, Key Vault, ACR, Cosmos DB, Function Apps, OpenAI, etc.).

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 accessibles via public endpoint mais sans Private Endpoint connections (risque de rupture si le lien ci‑dessus est ajoutĂ©) :
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 Ă©tendent l’espace d’adresses privĂ©es de votre virtual network et l’identitĂ© de votre VNet aux Azure services via une connexion directe. En activant les Service Endpoints, les ressources dans votre VNet peuvent se connecter de maniĂšre sĂ©curisĂ©e aux Azure services, comme Azure Storage et Azure SQL Database, via le backbone d’Azure. Ceci est particuliĂšrement utile lorsqu’ils sont combinĂ©s avec Network Security Groups (NSGs) pour un contrĂŽle granulaire du trafic.

Exemple :

  • Avec un Storage Account et Service Endpoint activĂ©s dans un VNET, il est possible d’autoriser le trafic entrant uniquement depuis un VNET dans le storage account firewall, forçant une connexion sĂ©curisĂ©e sans nĂ©cessiter d’accĂšs par IP publique pour le service de stockage.

Les Service Endpoints ne nĂ©cessitent pas d’adresses IP privĂ©es pour les services et reposent plutĂŽt sur le backbone d’Azure pour une connectivitĂ© sĂ©curisĂ©e. Ils sont plus faciles Ă  configurer comparĂ©s aux Private Links mais n’offrent pas le mĂȘme niveau d’isolation et de granularitĂ© que les 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 recommande d’utiliser Private Links dans les docs:

Service Endpoints:

  • Le trafic depuis votre VNet vers le service Azure transite par le rĂ©seau backbone de Microsoft Azure, en contournant l’internet public.
  • L’endpoint est une connexion directe au service Azure et ne fournit pas d’IP privĂ©e pour le service au sein du VNet.
  • Le service lui‑mĂȘme reste accessible via son endpoint public depuis l’extĂ©rieur de votre VNet Ă  moins que vous ne configuriez le service firewall pour bloquer ce trafic.
  • C’est une relation one-to-one entre le subnet et le service Azure.
  • Moins coĂ»teux que Private Links.

Private Links:

  • Private Link mappe les services Azure dans votre VNet via un private endpoint, qui est une interface rĂ©seau avec une adresse IP privĂ©e au sein de votre VNet.
  • Le service Azure est accĂ©dĂ© en utilisant cette adresse IP privĂ©e, donnant l’impression qu’il fait partie de votre rĂ©seau.
  • Les services connectĂ©s via Private Link ne sont accessibles que depuis votre VNet ou des rĂ©seaux connectĂ©s ; il n’y a pas d’accĂšs via l’internet public au service.
  • Il permet une connexion sĂ©curisĂ©e aux services Azure ou Ă  vos propres services hĂ©bergĂ©s dans Azure, ainsi qu’une connexion aux services partagĂ©s par d’autres.
  • Il offre un contrĂŽle d’accĂšs plus granulaire via un private endpoint dans votre VNet, par opposition Ă  un contrĂŽle d’accĂšs plus large au niveau du subnet avec les Service Endpoints.

En rĂ©sumĂ©, bien que Service Endpoints et Private Links fournissent une connectivitĂ© sĂ©curisĂ©e aux services Azure, Private Links offrent un niveau d’isolation et de sĂ©curitĂ© supĂ©rieur en garantissant que les services sont accĂ©dĂ©s de maniĂšre privĂ©e sans les exposer Ă  l’internet public. Les Service Endpoints, en revanche, sont plus faciles Ă  configurer pour des cas gĂ©nĂ©raux oĂč un accĂšs simple et sĂ©curisĂ© aux services Azure est requis sans besoin d’une IP privĂ©e dans le VNet.

Azure Front Door (AFD) & AFD WAF

Azure Front Door est un point d’entrĂ©e scalable et sĂ©curisĂ© pour la livraison rapide de vos applications web globales. Il combine divers services comme application acceleration, SSL offloading, and application layer security (through Web Application Firewall - WAF). It’s built on the concept of edge POP (Point of Presence) locations around the world to bring your applications closer to your users.

Azure Front Door provides a globally distributed network of edge locations to route and accelerate incoming traffic to your web applications (in Azure or elsewhere), improve performance, and enhance security.

Example:

  • For a global e-commerce platform with users worldwide, Azure Front Door can cache static content at edge locations and offer SSL offloading, reducing latency and providing a more responsive user experience. Additionally, it provides WAF to protect your applications from common web vulnerabilities (like SQL injection or XSS).

Azure Front Door also offers smart load balancing by routing traffic to the nearest available backend based on health probes and latency, ensuring consistent performance and availability. By integrating WAF, it helps protect against common web threats.

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

Azure Application Gateway is a équilibreur de charge de trafic web that enables you to manage traffic to your web applications. It offers Layer 7 load balancing, SSL termination, and web application firewall (WAF) capabilities in the Application Delivery Controller (ADC) as a service. Key features include URL-based routing, cookie-based session affinity, and secure sockets layer (SSL) offloading, which are crucial for applications that require complex load-balancing capabilities like global routing and path-based routing.

Exemple :

ConsidĂ©rez un scĂ©nario oĂč vous avez un site e-commerce qui comprend plusieurs sous-domaines pour diffĂ©rentes fonctions, comme les comptes utilisateur et le traitement des paiements. Azure Application Gateway can acheminer le trafic vers les serveurs web appropriĂ©s en fonction du chemin de l’URL. For example, traffic to example.com/accounts could be directed to the user accounts service, and traffic to example.com/pay could be directed to the payment processing service.
Et protégez votre site web des attaques en utilisant les capacités WAF.

ÉnumĂ©ration

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

VNet Peering

VNet Peering est une fonctionnalitĂ© d’Azure qui permet Ă  diffĂ©rents Virtual Networks (VNets) d’ĂȘtre connectĂ©s directement et de maniĂšre transparente. Through VNet peering, resources in one VNet can communicate with resources in another VNet using private IP addresses, as if they were in the same network.
VNet Peering can also used with a on-prem networks by setting up a site-to-site VPN or Azure ExpressRoute.

Azure Hub and Spoke est une architecture réseau qui exploite VNet peering pour créer un Hub VNet central qui se connecte à plusieurs Spoke VNets. Le hub contient typiquement des services partagés (tels que firewalls, DNS, ou Active Directory) tandis que les spokes hébergent les workloads applicatifs. Ce modÚle simplifie la gestion, renforce la sécurité via des contrÎles centralisés et réduit la redondance.

Exemple :

Une grande entreprise avec plusieurs dĂ©partements (Finance, HR, IT) peut crĂ©er un Hub VNet with shared services comme des firewalls et des serveurs DNS. Chaque dĂ©partement peut avoir son propre Spoke VNet qui se connecte au Hub via peering. Cela permet aux dĂ©partements de communiquer de maniĂšre sĂ©curisĂ©e et d’utiliser des services partagĂ©s sans exposer leurs ressources Ă  l’internet public.

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

VPN Site-Ă -Site

Un VPN Site-Ă -Site dans Azure Ă©tablit une connexion sĂ©curisĂ©e et persistante entre votre rĂ©seau sur site et votre Azure Virtual Network (VNet), permettant Ă  des ressources telles que les VMs dans Azure d’apparaĂźtre comme si elles faisaient partie de votre rĂ©seau local. Cette connexion est Ă©tablie via une passerelle VPN qui chiffre le trafic entre les deux rĂ©seaux.

Exemple:

Une entreprise dont le siĂšge est Ă  New York dispose d’un datacenter sur site qui doit se connecter de façon sĂ©curisĂ©e Ă  son VNet dans Azure, qui hĂ©berge ses workloads virtualisĂ©s. En configurant un VPN Site-Ă -Site, la sociĂ©tĂ© peut garantir une connectivitĂ© chiffrĂ©e entre les serveurs sur site et les VMs Azure, permettant d’accĂ©der aux ressources de maniĂšre sĂ©curisĂ©e Ă  travers les deux environnements comme si elles Ă©taient sur le mĂȘme rĂ©seau local.

ÉnumĂ©ration

# 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 est un service qui fournit une connexion privĂ©e, dĂ©diĂ©e et haut dĂ©bit entre votre infrastructure sur site et les centres de donnĂ©es Azure. Cette connexion est Ă©tablie via un fournisseur de connectivitĂ©, contournant l’internet public et offrant plus de fiabilitĂ©, des dĂ©bits supĂ©rieurs, des latences plus faibles et une sĂ©curitĂ© renforcĂ©e par rapport aux connexions Internet classiques.

Exemple :

Une multinationale nĂ©cessite une connexion cohĂ©rente et fiable Ă  ses services Azure en raison du volume Ă©levĂ© de donnĂ©es et du besoin d’un dĂ©bit important. L’entreprise choisit Azure ExpressRoute pour connecter directement son centre de donnĂ©es sur site Ă  Azure, facilitant des transferts de donnĂ©es Ă  grande Ă©chelle, tels que des sauvegardes quotidiennes et des analyses de donnĂ©es en temps rĂ©el, avec une confidentialitĂ© et une rapiditĂ© amĂ©liorĂ©es.

ÉnumĂ©ration

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

Références

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks