Az - Azure Network
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Basic Information
Azure надає віртуальні мережі (VNet), що дозволяють користувачам створювати ізольовані мережі в межах Azure cloud. У цих VNet ресурси, такі як віртуальні машини, додатки, бази даних… можуть безпечно розміщуватися та керуватися. Мережеві можливості в Azure підтримують як внутрішню взаємодію в хмарі (між Azure services), так і підключення до зовнішніх мереж та інтернету.
Крім того, можливо підключати VNet до інших VNet та до локальних мереж (on-premise).
Virtual Network (VNET) & Subnets
Azure Virtual Network (VNet) — це уявлення вашої власної мережі в cloud, що забезпечує логічну ізоляцію в середовищі Azure, присвячену вашій підписці. VNets дозволяють створювати та керувати віртуальними приватними мережами (VPNs) в Azure, розміщуючи ресурси, такі як Virtual Machines (VMs), бази даних та application services. Вони дають повний контроль над налаштуваннями мережі, включно з діапазонами IP-адрес, створенням підмереж, маршрутними таблицями та мережевими шлюзами.
Subnets — це підрозділи всередині VNet, визначені певними діапазонами IP-адрес. Розбиваючи VNet на кілька підмереж, ви можете організувати та захистити ресурси відповідно до архітектури мережі.
За замовчуванням усі підмережі в межах однієї Azure Virtual Network (VNet) можуть спілкуватися між собою без будь-яких обмежень.
Example:
MyVNetwith 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.
Enumeration
Щоб перелічити всі VNet та підмережі в обліковому записі Azure, можна використовувати Azure Command-Line Interface (CLI). Ось кроки:
# 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
Групи мережевої безпеки (NSG)
Група мережевої безпеки (NSG) фільтрує мережевий трафік як у напрямку до, так і від ресурсів Azure в межах Azure Virtual Network (VNet). Вона містить набір правил безпеки, які можуть вказувати які порти відкривати для вхідного та вихідного трафіку за портом джерела, IP джерела, портом призначення, і можна призначити пріоритет (чим менший номер пріоритету, тим вищий пріоритет).
NSG можуть бути асоційовані з підмережами та NIC.
Приклади правил:
- Вхідне правило, яке дозволяє HTTP-трафік (порт 80) з будь-якого джерела до ваших веб-серверів.
- Вихідне правило, яке дозволяє лише SQL-трафік (порт 1433) до конкретного діапазону IP-адрес призначення.
Enumeration
# 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 — це керований файрвол зі збереженням стану, який фільтрує трафік (L3–L7) для потоків east-west та north-south. Розгорнутий на рівні VNet, він централізує інспекцію для всіх підмереж і автоматично масштабується для забезпечення доступності.
Доступні SKU: Basic, Standard, та Premium:
| Criteria/Feature | Option 1 | Option 2 | Option 3 |
|---|---|---|---|
| Recommended Use Case | Малі/середні підприємства (SMBs) з обмеженими потребами | Загальне корпоративне використання, фільтрація Layer 3–7 | Дуже чутливі середовища (наприклад, обробка платежів) |
| Performance | До 250 Mbps пропускної здатності | До 30 Gbps пропускної здатності | До 100 Gbps пропускної здатності |
| Threat Intelligence | Тільки оповіщення | Оповіщення та блокування (шкідливі IP/домени) | Оповіщення та блокування (розширена розвідка загроз) |
| L3–L7 Filtering | Базова фільтрація | Фільтрація зі збереженням стану між протоколами | Фільтрація зі збереженням стану з розширеною інспекцією |
| Advanced Threat Protection | Недоступно | Фільтрація на основі розвідки загроз | Включає систему виявлення і запобігання вторгнень (IDPS) |
| TLS Inspection | Недоступно | Недоступно | Підтримує TLS-термінацію для вхідного та вихідного трафіку |
| Availability | Фіксований бекенд (2 VMs) | Автомасштабування | Автомасштабування |
| Ease of Management | Базові контролі | Керується через Firewall Manager | Керується через Firewall Manager |
Перерахування
# 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 Таблиці маршрутів (UDR)
Azure Таблиці маршрутів (UDR) дозволяють перевизначати маршрутизацію за замовчуванням, визначаючи префікси призначення (наприклад, 10.0.0.0/16 або 0.0.0.0/0) та наступний хоп (Віртуальна мережа, Інтернет, Віртуальний шлюз мережі або Віртуальний пристрій).
Маршрути застосовуються на рівні підмережі; всі VMs у цій підмережі слідують таблиці.
Приклад:
- Для трафіку, спрямованого в Інтернет, використовуйте маршрут за замовчуванням
0.0.0.0/0з Інтернетом як наступним хопом. - Щоб інспектувати вихідний трафік, направте
0.0.0.0/0на IP-адресу Network Virtual Appliance (NVA).
Enumeration
# 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
Azure Private Link — це сервіс в Azure, який забезпечує приватний доступ до Azure services, гарантуючи, що трафік між вашим Azure virtual network (VNet) та сервісом прямує виключно по Microsoft’s Azure backbone network. Фактично це інтегрує сервіс у ваш VNet. Така конфігурація підвищує безпеку, оскільки дані не потрапляють у публічний інтернет.
Private Link можна використовувати з різними Azure services, такими як Azure Storage, Azure SQL Database та custom services, shared via Private Link. Він надає безпечний спосіб споживати сервіси зсередини вашого власного VNet або навіть з різних Azure subscriptions.
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.
Example:
Розглянемо сценарій, де у вас є Azure SQL Database, до якої ви хочете безпечно підключатися з вашого VNet. Зазвичай це могло б вимагати проходження через публічний інтернет. За допомогою Private Link ви можете створити private endpoint у вашому VNet, який підключається безпосередньо до служби Azure SQL Database. Цей endpoint робить базу даних ніби частиною вашого VNet, доступною через private IP address, забезпечуючи тим самим безпечний і приватний доступ.
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
DNS OverDoS через service Private DNS zone links
Коли VNet має Virtual Network Link до service Private DNS zone (наприклад, privatelink.blob.core.windows.net), Azure примушує вирішувати імена хостів для ресурсів, зареєстрованих через Private Link, цього типу сервісу через цю зону. Якщо в зоні відсутній необхідний A record для ресурсу, до якого робочі навантаження все ще звертаються через його публічну кінцеву точку, DNS-перетворення повертає NXDOMAIN, і клієнти ніколи не досягають публічної IP-адреси, спричиняючи availability DoS без безпосереднього торкання самого ресурсу.
Abuse flow (control-plane DoS):
- Отримати RBAC, який дозволяє створювати Private Endpoints або змінювати Private DNS zone links.
- Створити Private Endpoint для того ж типу сервісу в іншому VNet (Azure автоматично створює service Private DNS zone і зв’язує її з тим VNet).
- Зв’язати ту service Private DNS zone з постраждалим VNet.
- Оскільки постраждалий VNet тепер примушує вирішення через Private DNS zone, і в цій зоні не існує
Arecord для цільового ресурсу, розв’язування імен не вдається, і навантаження не може дістатися до (все ще публічної) кінцевої точки. Це стосується будь-якого сервісу, що підтримує Private Link (storage, Key Vault, ACR, Cosmos DB, Function Apps, OpenAI тощо).
Discovery at scale (Azure Resource Graph):
- VNETs, пов’язані з blob Private DNS zone (примусове вирішення для 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 доступні через public endpoint, але без Private Endpoint connections (ймовірно перестануть працювати, якщо додати посилання вище):
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 розширюють приватний адресний простір вашої віртуальної мережі та ідентичність вашого VNet до Azure services через пряме з’єднання. Увімкнувши Service Endpoints, ресурси у вашому VNet можуть безпечно підключатися до Azure services, таких як Azure Storage і Azure SQL Database, через магістральну мережу Azure. Це особливо корисно в поєднанні з Network Security Groups (NSGs) для детального контролю трафіку.
Приклад:
- Якщо в VNET для Storage Account і Service Endpoint увімкнено, можна дозволити вхідний трафік тільки з VNET у межах фаєрволу storage account, забезпечуючи безпечне з’єднання без необхідності public IP-доступу до storage service.
Service Endpoints не вимагають приватних IP-адрес для сервісів і натомість покладаються на магістральну мережу Azure для безпечного з’єднання. Вони легші в налаштуванні порівняно з Private Links, але не забезпечують такого ж рівня ізоляції та детальності управління як Private Links.
Перерахування
# 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"
Відмінності між Service Endpoints та Private Links
Microsoft рекомендує використовувати Private Links у docs:
.png)
Service Endpoints:
- Трафік з вашого VNet до служби Azure проходить по магістральній мережі Microsoft Azure, оминаючи публічний інтернет.
- Endpoint — це пряме з’єднання зі службою Azure і не надає приватної IP-адреси для служби всередині VNet.
- Сама служба все ще доступна через свій публічний endpoint ззовні вашого VNet, якщо ви не налаштуєте брандмауер служби для блокування такого трафіку.
- Відносини «один-до-одного» між підмережею та службою Azure.
- Дешевше, ніж Private Links.
Private Links:
- Private Link відображає служби Azure у вашому VNet через private endpoint, який є мережевим інтерфейсом з приватною IP-адресою всередині вашого VNet.
- До служби Azure звертаються за цією приватною IP-адресою, що робить її подібною до частини вашої мережі.
- Служби, підключені через Private Link, доступні лише з вашого VNet або підключених мереж; немає доступу через публічний інтернет.
- Це дозволяє встановити безпечне з’єднання до служб Azure або до ваших власних служб, розміщених в Azure, а також до служб, якими діляться інші.
- Надає більш детальний контроль доступу через private endpoint у вашому VNet, на відміну від ширшого контролю доступу на рівні підмережі з service endpoints.
Підсумовуючи, хоча і Service Endpoints, і Private Links забезпечують безпечне підключення до служб Azure, Private Links забезпечують вищий рівень ізоляції та безпеки, гарантуючи приватний доступ до служб без їхнього виставлення в публічний інтернет. Service Endpoints, з іншого боку, простіші у налаштуванні для загальних випадків, коли потрібен простий, безпечний доступ до служб Azure без необхідності приватної IP-адреси у VNet.
Azure Front Door (AFD) & AFD WAF
Azure Front Door — масштабований і безпечний вхідний пункт для швидкої доставки ваших глобальних веб-застосунків. Він об’єднує різні сервіси, такі як прискорення застосунків, SSL offloading та безпека на рівні додатку (через Web Application Firewall - WAF). Він побудований на концепції edge POP (Point of Presence) локацій по всьому світу, щоб наблизити ваші застосунки до користувачів.
Azure Front Door надає глобально розподілену мережу edge-локацій для маршрутизації та прискорення вхідного трафіку до ваших веб-застосунків (в Azure чи поза ним), покращує продуктивність та підвищує безпеку.
Приклад:
- Для глобальної e-commerce платформи з користувачами по всьому світу, Azure Front Door може кешувати статичний контент на edge-локаціях та пропонувати SSL offloading, зменшуючи затримки та забезпечуючи більш відзивчивий досвід користувача. Додатково він надає WAF для захисту ваших застосунків від поширених веб-уразливостей (наприклад SQL injection або XSS).
Azure Front Door також пропонує інтелектуальне балансування навантаження, маршрутизуючи трафік до найближчого доступного бекенду на основі перевірок стану (health probes) та затримок, забезпечуючи стабільну продуктивність і доступність. Інтеграція WAF допомагає захиститися від поширених веб-загроз.
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 та Azure Application Gateway WAF
Azure Application Gateway — це балансувальник навантаження веб‑трафіку, який дає змогу керувати трафіком до ваших веб‑застосунків. Він пропонує Layer 7 load balancing, SSL termination, та web application firewall (WAF) в ролі сервісу Application Delivery Controller (ADC). Ключові можливості включають маршрутизацію на основі URL, прив’язку сесій на основі cookie та відвантаження secure sockets layer (SSL), що є критично важливим для застосунків, які потребують складних можливостей балансування навантаження, таких як глобальна маршрутизація та маршрутизація на основі шляхів.
Приклад:
Розгляньте сценарій, коли у вас є інтернет-магазин, який містить кілька піддоменів для різних функцій, наприклад облікових записів користувачів та обробки платежів. Azure Application Gateway може маршрутизувати трафік до відповідних веб‑серверів на основі URL‑шляху. Наприклад, трафік на example.com/accounts може бути спрямований до сервісу облікових записів користувачів, а трафік на example.com/pay — до сервісу обробки платежів.\ І захищати ваш вебсайт від атак за допомогою можливостей WAF.
Enumeration
# 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 топології
VNet Peering
VNet Peering — це функція в Azure, яка дозволяє підключати різні Virtual Networks (VNets) безпосередньо та прозоро. Через VNet peering ресурси в одному VNet можуть спілкуватися з ресурсами в іншому VNet, використовуючи приватні IP-адреси, ніби вони знаходяться в одній мережі.
VNet Peering також можна використовувати з on-prem мережами шляхом налаштування site-to-site VPN або Azure ExpressRoute.
Azure Hub and Spoke — це мережева архітектура, яка використовує VNet peering для створення центрального Hub VNet, що підключається до кількох Spoke VNets. У хабі зазвичай розміщуються спільні сервіси (наприклад, фаєрволи, DNS або Active Directory), тоді як Spoke VNets хостять робочі навантаження додатків. Такий дизайн спрощує управління, підвищує безпеку завдяки централізованому контролю та зменшує дублювання.
Приклад:
Велика організація з кількома відділами (Finance, HR, IT) може створити Hub VNet with shared services, наприклад фаєрволи та DNS-сервери. Кожен відділ може мати власний Spoke VNet, який підключається до Hub через peering. Це дозволяє відділам безпечно взаємодіяти та використовувати спільні сервіси без експонування своїх ресурсів у публічному інтернеті.
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
Site-to-Site VPN в Azure встановлює захищене та постійне з’єднання між вашою on-premises мережею та вашою Azure Virtual Network (VNet), що дозволяє ресурсам, таким як VMs в Azure, виглядати так, ніби вони перебувають у вашій локальній мережі. Це з’єднання створюється через VPN gateway, який шифрує трафік між двома мережами.
Приклад:
Компанія з головним офісом у Нью-Йорку має on-premises дата-центр, який потрібно безпечно підключити до свого VNet в Azure, що розміщує її віртуалізовані робочі навантаження. Налаштувавши Site-to-Site VPN, компанія забезпечує шифроване з’єднання між on-premises серверами та Azure VMs, що дозволяє безпечно отримувати доступ до ресурсів у обох середовищах так, ніби вони знаходяться в одній локальній мережі.
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 — це сервіс, який забезпечує приватне, виділене, високошвидкісне з’єднання між вашою локальною інфраструктурою та Azure дата-центрами. Це з’єднання реалізується через провайдера підключення, минаючи публічний інтернет і пропонуючи більшу надійність, вищі швидкості, нижчу затримку та підвищену безпеку порівняно зі звичайними інтернет-з’єднаннями.
Приклад:
Багатонаціональна корпорація потребує стабільного та надійного з’єднання з своїми сервісами Azure через великий обсяг даних та необхідність високої пропускної спроможності. Компанія обирає Azure ExpressRoute для прямого підключення свого локального дата-центру до Azure, що полегшує масштабні передачі даних, такі як щоденні резервні копії та аналітика в режимі реального часу, з підвищеною приватністю та швидкістю.
Перерахування
# List ExpressRoute Circuits
az network express-route list --query "[].{name:name, location:location, resourceGroup:resourceGroup, serviceProviderName:serviceProviderName, peeringLocation:peeringLocation}" -o table
Посилання
- DNS OverDoS: Чи занадто приватні Private Endpoints?
- Конфігурація Azure Private Endpoint DNS
- Відкат Private DNS до інтернету
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
HackTricks Cloud

