Поиск поддоменов домена

Получите список имён хостов домена, которые встречаются в публичных журналах Certificate Transparency: быстрая опись того, на что выпускался TLS-сертификат.

Откуда берётся список

Каждый публично доверенный TLS-сертификат записывается в журналы Certificate Transparency — открытые реестры, в которые можно только добавлять записи и наличия которых требуют браузеры. Поэтому имена хостов внутри каждого сертификата публичны. OrbitProbe ищет по этим журналам через crt.sh и собирает имена, относящиеся к введённому вами домену.

Таким образом, список отражает сертификаты, а не DNS. Имя может быть в списке и уже не существовать; имя, которое всегда пользовалось только wildcard-сертификатом или не имело сертификата вовсе, в список не попадёт. Wildcard-записи вроде *.example.com показываются отдельно, потому что они покрывают имена, не раскрывая их.

Для чего это полезно

Владельцы находят так забытые хосты: тестовую площадку трёхлетней давности, тестовую систему, которую поднял подрядчик, сертификат, выпущенный кем-то, у кого не должно было быть такой возможности. Это ещё и самый быстрый способ убедиться, что сертификаты публичны, а значит, не стоит помещать секреты в имена хостов.

Для собственных доменов проверяйте каждое незнакомое имя через проверку DNS, чтобы увидеть, разрешается ли оно до сих пор. Используйте инструмент для доменов, за которые вы отвечаете или которые уполномочены оценивать.

Как пользоваться этим инструментом

  1. Введите домен. Введите или вставьте доменное имя, например example.com. Подойдёт и полный URL: схема, путь и начальное www будут отброшены.
  2. Выполните поиск в журналах сертификатов. Инструмент запрашивает в публичных журналах Certificate Transparency сертификаты, выпущенные для имён этого домена.
  3. Изучите имена. Имена хостов, найденные в сертификатах, показаны с датой последнего сертификата. Список неполный: имена без публичного сертификата в него не попадают.

То же самое в командной строке

Та же проверка из терминала. В командах используется example.com: замените его своим именем.

  • Имена из crt.sh (нужен jq)curl -s "https://crt.sh/?q=%25.example.com&output=json" | jq -r ".[].name_value" | sort -u

Частые вопросы

Как найти все поддомены домена?

Полного публичного списка не существует: DNS не позволяет перечислять имена. Журналы Certificate Transparency — лучший открытый источник, и они показывают каждое имя, на которое выпускался публичный сертификат.

Почему в списке нет поддомена, о котором я знаю?

Вероятно, у него никогда не было собственного публичного сертификата: он может использовать wildcard-сертификат, обычный HTTP или внутренний удостоверяющий центр.

Существует ли ещё поддомен из списка?

Не обязательно. Журнал хранит сертификаты бессрочно. Выполните проверку DNS для этого имени, чтобы увидеть, разрешается ли оно сегодня.

Можно ли не допустить попадания моих поддоменов в эти журналы?

Нет, если они используют публично доверенные сертификаты. Wildcard-сертификат скрывает отдельные имена; внутренний удостоверяющий центр позволяет избежать журналов, но ему доверяют только устройства, которыми вы управляете.

Почему поиск завершился ошибкой или по тайм-ауту?

Сервис поиска по журналам общий и иногда работает медленно, особенно для доменов с большим числом сертификатов. Неудавшийся поиск показывается как сбой и никогда как «поддоменов нет». Повторите попытку через минуту.