Как найти список записей CNAME, указывающих на конкретный адрес?

Вопрос или проблема

Я провожу эксперимент по безопасности и мне нужно определить домены, которые указывают на определенный поддомен. Интересно, есть ли способ найти CNAME для всех доменов в каком-то списке?

Или мне необходимо полностью искать по списку .com и просматривать, чтобы найти все случаи CNAME?

Интересно, есть ли способ найти CNAME для всех доменов в каком-то списке?

Нет. Нет правильного способа сделать это. Записи CNAME хранятся в файловых зонах, которые хранятся на разных серверах имен. И нет общего способа получить всю файловую зону с сервера имен. Пока у вас нет доступа ко всем серверам имен в мире, вы не сможете найти все CNAME, указывающие на домен (что, очевидно, невозможно).

Или мне необходимо полностью искать по списку .com и просматривать, чтобы найти все случаи CNAME?

Даже если вы скачаете файл зоны для TLD (да, это возможно: http://jordan-wright.com/blog/2015/09/30/how-to-download-a-list-of-all-registered-domain-names/), все, что вы получите – это список серверов имен, используемых для всех вторых уровней доменов. Затем вам нужно будет просмотреть каждый сервер имен в списке и рекурсивно запросить его файловую зону, которую они в большинстве случаев не предоставят.


Одним приемлемым решением в вашем случае было бы логировать активность пользователей.

  • Если вы являетесь владельцем определенного поддомена, для которого вы хотите получить CNAME, и веб-сервер размещен на этом сервере, вы можете логировать заголовок HOST в HTTP-запросе, чтобы получить возможную запись CNAME.

  • Если вы являетесь сетевым администратором вашей сети (т.е. у вас есть доступ к локальному DNS-серверу), вы можете логировать все DNS-запросы, которые разрешаются в желаемые CNAME.

Как конечный пользователь, где серверы имен настроены неправильно, вы не можете просмотреть DNS, чтобы получить список всех ресурсных записей (что, как я думаю, вы и спрашиваете).

Если доменное имя настроено неправильно (или если у вас есть повышенные привилегии, что я предполагаю, у вас нет), вы можете выполнить “трансфер зоны”, который выгрузит содержимое зоны – посмотрите здесь, но, в Linux, это так же просто, как выполнить dig axfr domain.name @dns.server.name

Если у вас есть доступ к устройству или вы можете перехватить сетевой трафик, где находится “определенный поддомен”, и если целевой трафик – “http”, вы можете перехватить HTTP-заголовки, чтобы получить список запросов (если вы управляете веб-сервером, вы можете создать лог-файл, чтобы получить эту информацию, которую можете просмотреть)

Наконец, если у вас есть список доменов и вы знаете поддомен, который ищете для каждого домена, возможно написать скрипт для запроса поддомена для каждого домена и логировать это. (Но подозреваю, что это не то, о чем вы спрашиваете?)

Я тоже недавно об этом думал, и невозможно сделать это напрямую без сбора огромного количества данных. Но к счастью, Merklemap собрал множество DNS-запросов в свой набор данных объемом 418 ГБ (41 ГБ в сжатом виде). Используя эти данные, вы можете, например, выяснить, какие домены указывают на определенный CNAME. Это не полная информация, но она содержит много доменов.

Этот набор данных хранится в формате JSON с разделением по новому строку, и его обработка требует много места на диске и некоторого времени для вычислений.

Если кто-то заинтересован, я написал, как анализировать этот набор данных DNS для CNAME, используя duckdb.

Ответ или решение

Поиск списка CNAME записей, указывающих на конкретный адрес, представляет собой сложную задачу, поскольку в DNS инфраструктуре отсутствует централизованная база данных, которая могла бы ответить на такой запрос. В связи с этим, стоит рассмотреть ограниченные, но полезные подходы к решению данной задачи.

Теория (Theory)

DNS (Domain Name System) является иерархической структурой, в которой разные доменные имена распределяются между разными зонами. Каждая зона управляется своим nameserver, и функциональность CNAME заключена в указании, что определенное доменное имя является псевдонимом для другого доменного имени. Таким образом, запросы к DNS переадресовываются через CNAME на другой адрес, что часто используется для облегчения управления доменными именами.

Важно отметить, что данные о CNAME записаны в зоне, и доступ к ним ограничен соответствующим nameserver. Из-за этой дисперсии вы не можете централизованно просмотреть все CNAME, указывающие на ваш субдомен. Более того, DNS-серверы обычно не предоставляют полные записи зон по соображениям безопасности.

Пример (Example)

Например, если вы владеете доменом "example.com" и хотите узнать, какие CNAME-записи указывают на "target.example.com", ваши действия будут ограничены. Вы можете воспользоваться только методами мониторинга активности или учёта журналов сервера.

Применение (Application)

  1. Мониторинг активности сервера. Если у вас есть сервер, поддерживающий конкретный субдомен, важным опытом будет ведение журналов, где логируются все входящие HTTP-запросы. Заголовки HTTP могут содержать информацию о доменном имени, где видны CNAME.

  2. Анализ DNS запросов в сети. Если у вас есть доступ к локальному DNS-серверу, вы можете включить запись всех DNS-запросов. Это подходит, если вы администратор сети и имеете полномочия для ведения таких записей. Такие журналы могут выявить все доменные имена, делающие CNAME-запросы.

  3. Работа с существующими DNS базами данных. Существует ряд организаций и исследований, которые собирают общедоступные данные DNS. Например, Merklemap предоставляет довольно обширный набор данных DNS, который можно использовать для анализа CNAME записей. Этот метод требует технической инфраструктуры и анализа данных, но может помочь обнаружить значительное количество доменных имен, ссылающихся на целевой CNAME.

  4. Частные исследования. Для технически подкованных пользователей возможно написать скрипты, которые будут проверять DNS-записи для списка известных доменов. Скрипты могут выполнять запросы к DNS для каждого домена из списка и проверять, включает ли результат CNAME-запись, указывающую на ваш субдомен.

Заключение

Невозможно напрямую и эффективно собрать все CNAME-записи, указывающие на определенный адрес, используя только ресурсы DNS. Однако, используя методы мониторинга, регистрации и работы с большими данными, можно получить определенные результаты, которые помогут в вашем исследовании. Важно отметить, что ведение таких операций требует осведомленности в области информационной безопасности и соблюдения юридических норм, связанных с использованием и обработкой данных.

Оцените материал
Добавить комментарий

Капча загружается...