Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается распространённая угроза безопасности захвата субдоменов и шаги, которые вы можете предпринять для её снижения.
Что такое захват поддомена?
Захваты субдоменов — это распространённая, высокосерьёзная угроза для организаций, которые регулярно создают и удаляют множество ресурсов. Захват поддомена может произойти в том случае, если у вас присутствует запись DNS, указывающая на отозванный ресурс Azure. Такие записи DNS также известны как «зависшие» записи DNS. Записи CNAME особенно уязвимы перед этой угрозой. Захват поддоменов позволяет злоумышленникам перенаправлять трафик, предназначенный для домена организации, на сайт, выполняющий вредоносную деятельность.
Распространенный сценарий для захвата поддомена:
СОЗДАНИЕ:
Вы подготавливаете ресурс Azure с полным доменным именем (FQDN)
app-contogreat-dev-001.azurewebsites.net.Вы назначаете запись CNAME в зоне DNS с поддоменом
greatapp.contoso.com, который направляет трафик к ресурсу Azure.
ДЕКОНФИГУРИРОВАНИЕ:
Ресурс Azure выводится из эксплуатации или удаляется, когда он больше не нужен.
На этом этапе запись CNAME
greatapp.contoso.comнеобходимо удалить из зоны DNS. Если запись CNAME не удалить, она объявляется в качестве активного домена, но не направляет трафик в активный ресурс Azure. Теперь у вас есть "подвешенная" запись DNS.Подвешенный поддомен
greatapp.contoso.comтеперь уязвим и может быть захвачен при назначении на ресурс другой подписки Azure.
ЗАХВАТ:
Используя общедоступные методы и средства, злоумышленник обнаруживает "висячий" поддомен.
Злоумышленник подготавливает ресурс Azure с тем же полным доменным именем ранее управляемого вами ресурса. В этом примере —
app-contogreat-dev-001.azurewebsites.net.Трафик, отправленный в субдомен
greatapp.contoso.com, теперь направляется на ресурс злоумышленника, где он контролирует содержимость.
Риски захвата поддоменов
Если запись DNS указывает на ресурс, который недоступен, сама запись должна быть удалена из зоны DNS. Если он не удален, это так называемая "подвисшая запись DNS", что создает возможность захвата поддомена.
"Висячие" записи DNS позволяют злоумышленникам управлять связанным DNS-именем для размещения вредоносного веб-сайта или службы. Вредоносные страницы и службы в поддомене организации могут привести к следующим проблемам:
Потеря контроля над содержанием поддомена: негативная пресса о неспособности вашей организации обеспечить безопасность контента, ущерб бренду и потерю доверия.
Сбор файлов cookie от ничего не подозревающих посетителей: Веб-приложения часто открывают сессионные cookie на поддоменах (*.contoso.com). Доступ к ним может получить любой поддомен. Злоумышленники могут использовать захват субдоменов для создания аутентичной страницы, обманывать ничего не подозревающих пользователей, чтобы они её посещали, и собирать их cookies (даже защищённые куки). Распространённое заблуждение — что SSL-сертификаты защищают ваш сайт и ваши файлы cookie от захвата. Однако злоумышленник может использовать захваченный поддомен для применения и получения действительного SSL-сертификата. Действительные SSL-сертификаты предоставляют им доступ к защищенным файлам cookie и могут дополнительно повысить мнимую законность вредоносного сайта.
Фишинговые кампании: злоумышленники часто используют в фишинговых кампаниях поддомены, выглядящие как подлинные. Риск распространяется как на вредоносные сайты, так и на записи MX. MX-записи могут позволить злоумышленникам получать письма, адресованные на легитимные субдомены, связанные с надёжными брендами.
Дополнительные риски: Вредоносные сайты могут перерасти в классические атаки, такие как XSS, CSRF, CORS BYPASS и другие.
Обнаружение "висячих" записей DNS
Чтобы найти в организации записи DNS, которые могут быть "висячими", используйте инструменты PowerShell, размещённые в GitHub "Get-DanglingDnsRecords".
Этот инструмент помогает перечислить все домены с CNAME, связанным с существующим ресурсом Azure, созданным в ваших подписках или арендаторах.
Если ваши записи CNAME указаны в других службах DNS и указывают на ресурсы Azure, укажите записи CNAME во входном файле программного инструмента.
Этот инструмент поддерживает ресурсы Azure, перечисленные в следующей таблице. Инструмент извлекает или принимает в качестве входных данных все записи CNAME клиента.
| Услуга | Тип | Свойство FQDN | Пример |
|---|---|---|---|
| Azure Front Door (облачное сетевое решение от Microsoft) | microsoft.network/frontdoors | properties.cName | abc.azurefd.net |
| Хранилище BLOB-объектов Azure | майкрософт.хранилище/хранилищныеучетныезаписи | properties.primaryEndpoints.blob | abc.blob.core.windows.net |
| Azure CDN | microsoft.cdn/profiles/endpoints | свойства.hostName | abc.azureedge.net |
| общедоступные IP-адреса; | microsoft.network/publicipaddresses | properties.dnsSettings.fqdn | abc.EastUs.cloudapp.azure.com |
| Диспетчер трафика Azure | microsoft.network/trafficmanagerprofiles | properties.dnsConfig.fqdn | abc.trafficmanager.net |
| Экземпляр контейнера Azure | microsoft.containerinstance/containergroups | properties.ipAddress.fqdn | abc.EastUs.azurecontainer.io |
| Управление API Azure | microsoft.apimanagement/service | properties.hostnameConfigurations.hostName | abc.azure-api.net |
| Служба приложений Azure | microsoft.web/sites | properties.defaultHostName | abc.azurewebsites.net |
| Служба приложений Azure — слоты | microsoft.web/sites/slots | properties.defaultHostName | abc-def.azurewebsites.net |
Предварительные условия
Выполните запрос от имени пользователя, который имеет:
- По крайней мере, ролевой доступ
Readerк подпискам Azure. - Доступ на чтение к Azure Resource Graph.
Если вы глобальный администратор арендатора вашей организации, следуйте рекомендациям в Elevate access, чтобы управлять всеми подписками и группами управления Azure и получать доступ ко всем подпискам вашей организации.
Совет
Учитывайте ограничения на частоту запросов и постраничный вывод в Azure Resource Graph, если у вас крупная среда Azure.
Узнайте подробные сведения о работе с большими наборами данных ресурса Azure.
Чтобы избежать этих ограничений, в инструменте используется пакетная подписка.
Выполнение скрипта
Для получения дополнительной информации о скрипте PowerShell см. Get-DanglingDnsRecords.ps1.
Устранение "висячих" записей DNS
Просмотрите зоны DNS и определите записи CNAME, которые не имеют целевых адресов или захваченные. Если вы обнаружите поддомены, которые зависают или захвачены, удалите уязвимые поддомены и минимизируйте риски, используя следующие шаги:
Из зоны DNS удалите все записи CNAME, указывающие на полные доменные имена ресурсов, которые больше не нужны.
Чтобы направить трафик к ресурсам, которыми вы управляете, подготовьте дополнительные ресурсы с FQDN, указанными в записях CNAME висячих поддоменов.
Проверьте код приложения на наличие ссылок на конкретные поддомены и обновите неправильные или устаревшие ссылки на поддомены.
Проверьте, произошёл ли какой-либо компромисс, и примите меры в соответствии с процедурами реагирования на инциденты вашей организации. Советы и лучшие практики для расследования:
Если логика вашего приложения приводит к передаче секретов, таких как учетные данные OAuth, в поддомены или если информация, чувствительная к конфиденциальности, передаётся в эти поддомены, эти данные могут быть раскрыты третьим лицам.
Поймите, почему запись CNAME не была удалена из вашей DNS-зоны при удалении ресурса, и предпринимайте шаги для правильного обновления DNS-записей при удалении ресурсов Azure в будущем.
Защита от появления "висячих" записей DNS
Сделайте процессы, предотвращающие зависание DNS-записей и последующие захваты субдоменов, важной частью вашей программы безопасности.
В следующих разделах описаны функции сервиса Azure, которые могут помочь создать профилактические меры. Разработайте другие методы предотвращения этой проблемы с помощью лучших практик вашей организации или стандартных операционных процедур.
Включение Microsoft Defender для Службы приложений
интегрированная платформа защиты облачных рабочих нагрузок (CWPP) Microsoft Defender для облака предлагает ряд планов по защите ресурсов и рабочих нагрузок Azure, гибридных и многооблачных ресурсов и рабочих нагрузок.
План Microsoft Defender для Службы приложений включает обнаружение "висячих" записей DNS. Когда вы включите этот план, вы получаете оповещения о безопасности, если отключите сайт App Service, но не удаляете его пользовательский домен из вашего DNS-регистратора.
Защита DNS от Microsoft Defender для облака доступна независимо от того, управляете ли вы доменами через Azure DNS или через внешний регистратор доменов, а также применяется к App Service как на Windows, так и на Linux.
Для получения дополнительной информации об этой функции и других преимуществах этих планов Microsoft Defender см. раздел «Введение в Microsoft Defender for App Service».
Использование записей псевдонимов Azure DNS
Azure DNS alias records может предотвратить зависающие ссылки, связывая жизненный цикл DNS-записи с ресурсом Azure. Например, рассмотрим запись DNS, которая квалифицирована как запись-псевдоним и указывает на общедоступный IP-адрес или профиль диспетчера трафика. Если удалить эти базовые ресурсы, запись псевдонима DNS станет пустым набором записей. Запись псевдонимов DNS больше не ссылается на удалённый ресурс. Алиасные записи имеют ограничения в том, что они могут защищать. В настоящее время список ограничен следующим образом:
- Azure Front Door (облачное сетевое решение от Microsoft)
- Профили диспетчера трафика
- Конечные точки сети (CDN) доставки содержимого Azure
- Общедоступные IP-адреса
Несмотря на ограниченное количество услуг сегодня, используйте записи псевдонимов для защиты от захвата субдоменов, когда это возможно.
Дополнительные сведения см. в статье Возможности записей-псевдонимов Azure DNS.
Используйте проверку пользовательского домена в Службе приложений Azure.
При создании DNS-записей для Служба приложений Azure создайте asuid.{subdomain} запись TXT с идентификатором верификации домена. Когда такая запись TXT существует, ни одна другая подписка Azure не может проверить пользовательский домен или взять его под контроль.
Эти записи не мешают кому-либо создать экземпляр Служба приложений Azure с тем же именем, что и в вашей записи CNAME. Без возможности доказать право собственности на доменное имя злоумышленники не могут получать трафик или контролировать контент.
Для получения дополнительной информации см. Сопоставление существующего пользовательского DNS-имени с Служба приложений Azure.
Создание и автоматизация процессов для устранения угрозы
Разработчикам и командам эксплуатации следует выполнять процедуры очистки, чтобы избежать угроз, связанных с висячими DNS-записями. Следующие практики помогают вашей организации избежать этой угрозы.
Чтобы создать процедуры для предотвращения:
Обучите разработчиков приложений перенаправлять адреса при удалении ресурсов.
Добавьте задачу "Удалить запись DNS" в списке обязательных проверок при выводе службы из эксплуатации.
- Добавьте блокировки удаления для всех ресурсов, у которых есть настраиваемая запись DNS. "Блокировка на удаление служит индикатором того, что сопоставление должно быть удалено до аннулирования ресурса." Такие меры работают только в сочетании с внутренними образовательными программами.
Создание процедур для обнаружения:
Регулярно просматривайте свои записи DNS, чтобы убедиться, что поддомены сопоставлены с ресурсами Azure, а также что:
- Наличие: Проверьте свои зоны DNS на наличие ресурсов, указывающих на поддомены Azure, такие как *.azurewebsites.net или *.cloudapp.azure.com (см. справочный список доменов Azure).
- Вы владеете: Подтвердите, что вы владеете всеми ресурсами, на которые нацелены ваши DNS-поддомены.
Поддерживайте каталог услуг конечных точек полного доменного имени (FQDN) Azure и владельцев приложений. Используйте Azure Resource Graph, портал Azure или другой процесс инвентаризации активов, чтобы регулярно экспортировать информацию о конечных точках FQDN для доступных ресурсов. Если у вас есть доступ ко всем подпискам в вашем арендаторе, включите все подписки в инвентарь. Если нет, задокументируйте, какие подписки покрывает инвентарь.
Создайте процедуры для исправления:
- Когда ваша команда обнаруживает висячие DNS-записи, проверьте, не произошла ли какая-либо компрометация.
- Выясните, почему адрес не был перенаправлен при удалении ресурса.
- Удалите запись DNS, если она больше не используется, или укажите на правильный ресурс Azure (FQDN), принадлежащий вашей организации.
Очистите указатели DNS или вернуте DNS
При удалении классического облачного сервиса Azure сохраняет соответствующее DNS-имя в соответствии с политикой Azure DNS. В период резервирования повторно использовать это DNS-имя могут только подписки, принадлежащие арендатору Microsoft Entra той подписки, которой это DNS-имя изначально принадлежало. После истечения срока бронирования любая подписка Azure может претендовать на DNS-имя. Резервирование DNS даёт вам время очистить ассоциации или указания на имя DNS, либо вернуть имя DNS в Azure. Удаляйте нежелательные DNS-записи как можно скорее. Вы можете получить зарезервированное DNS-имя, добавив имя облачного сервиса в DNS-зону этого облака.
- Общедоступно:
cloudapp.net - Лунный кекс:
chinacloudapp.cn - Фэрфакс:
usgovcloudapp.net - Черный лес:
azurecloudapp.de
Например, размещённый сервис в Public с именем test имеет DNS-имя test.cloudapp.net.
Пример: подписки A и B являются единственными подписками, относящимися к арендатору Microsoft Entra AB. Подписка A содержит классический облачный сервис с именем test и DNS-именем test.cloudapp.net. Когда вы удаляете облачный сервис, Azure сохраняет DNS-имя test.cloudapp.net. В период бронирования только подписка A или подписка B может претендовать на DNS-имя test.cloudapp.net , создав классический облачный сервис под названием test. Никакие другие подписки не могут получить это. После окончания периода резервирования любая подписка Azure может воспользоваться test.cloudapp.net.
Следующие шаги
Дополнительные сведения о связанных службах и функциях Azure, которые можно использовать для защиты от захвата поддоменов, см. на следующих страницах.
Включите Microsoft Defender for App Service — получайте оповещения при обнаружении зависающих DNS-записей.
Предотвращение появления "висячих" записей DNS с помощью Azure DNS
Использование идентификатора проверки домена при добавлении личных доменов в Службе приложений Azure
Краткое руководство. Запуск первого запроса Resource Graph с помощью Azure PowerShell