Як знайти піддомени сайту: журнали сертифікатів, DNS і їхні обмеження
Щоб знайти піддомени сайту, не звертаючись до його серверів, шукайте в журналах Certificate Transparency (CT). Кожен публічний HTTPS-сертифікат потрапляє в ці відкриті журнали разом з іменами, для яких його випущено, тож запит до crt.sh або Cert Spotter за example.com поверне імена на кшталт mail., staging. чи old-shop.example.com. Потім перевірте кожне ім’я в DNS: які ще існують і куди ведуть. Наш безкоштовний пошук піддоменів робить обидва кроки. Важливе застереження: жоден спосіб ззовні не дає гарантовано повного списку — він є лише в DNS-зоні домену, яку бачить власник.
Способи пошуку піддоменів: порівняння
| Спосіб | Тип | Що знаходить | Що пропускає |
|---|---|---|---|
| Журнали Certificate Transparency (crt.sh, Cert Spotter) | Пасивний | Усі імена, на які колись випускали публічний сертифікат, зокрема старі | Імена лише під wildcard-сертифікатом, імена без HTTPS, внутрішні |
| Пасивний DNS та агрегатори (наприклад, subfinder) | Пасивний | Імена, які бачили резолвери, краулери й різні відкриті джерела | Охоплення залежить від джерел, багатьом потрібні API-ключі |
Пошуковики (site:example.com -www) | Пасивний | Публічні хости з проіндексованими сторінками | Усе, чого немає в індексі |
| Перебір за словником | Активний | Типові імена: dev, vpn, staging | Незвичні імена; надсилає багато запитів — лише для своїх доменів |
| Передача зони (AXFR) | Активний | Усю зону, якщо сервер налаштовано неправильно | На правильно налаштованому сервері майже завжди відмова |
| Панель DNS-провайдера | Доступ власника | Повний перелік записів | Лише для ваших доменів |
Спосіб 1: журнали Certificate Transparency
Центри сертифікації публікують випущені сертифікати у відкриті журнали CT, куди можна лише дописувати, а браузери на кшталт Chrome і Safari довіряють публічним сертифікатам, тільки якщо ті є в журналах. У сертифікаті перелічено імена, для яких він дійсний, тому журнали фактично зберігають історію всіх імен домену, де хтось вмикав HTTPS.
- Відкрийте crt.sh і введіть
%.example.com(%— символ підстановки, так ви отримаєте всі піддомени). - Дивіться колонку Matching Identities. Журнали зберігають записи назавжди, тож чимало імен — це історія.
- Для чистого списку візьміть JSON і приберіть дублі:
curl -s 'https://crt.sh/?q=%25.example.com&output=json' \
| jq -r '.[].name_value' \
| tr 'A-Z' 'a-z' | sed 's/^\*\.//' | sort -u
%25 — це закодований в URL знак %. Поле name_value може містити кілька імен через перенесення рядка; jq -r виведе їх окремими рядками. crt.sh — безкоштовний громадський сервіс і під навантаженням часто відповідає помилкою 502 або не відповідає зовсім: поки ми писали цю статтю 13 жовтня 2026 року, так траплялося раз у раз. Тоді повторіть пізніше або скористайтеся Cert Spotter:
curl -s 'https://api.certspotter.com/v1/issuances?domain=example.com&include_subdomains=true&expand=dns_names' \
| jq -r '.[].dns_names[]' | sort -u
За документацією API SSLMate, Cert Spotter віддає лише непрострочені сертифікати, а без ключа дозволяє обмежену кількість запитів на годину для особистого використання чи ознайомлення. Отже: crt.sh — це історія, Cert Spotter — поточний стан.
Спосіб 2: перевірити, які піддомени живі в DNS
Ім’я в журналі сертифікатів доводить лише те, що сертифікат колись випускали. Що існує зараз, покаже DNS:
# чи розв’язується ім’я і куди?
dig +short staging.example.com
# це псевдонім (CNAME)? на який хост?
dig +short CNAME staging.example.com
# повна відповідь: дивіться «status:» — NOERROR або NXDOMAIN
dig staging.example.com
# перевірка wildcard DNS: випадкове ім’я НЕ має розв’язуватися
dig +short pp-test-8f3k2.example.com
- NXDOMAIN — імені більше немає, лишився тільки старий сертифікат. Це історія, а не проблема.
- NOERROR з адресою — піддомен живий. Переконайтеся, що він вам потрібен і оновлюється.
- NOERROR без запису A/AAAA — ім’я є, але без адреси (наприклад, лише MX або TXT). Зазвичай це нормально.
- CNAME веде на ім’я, якого не існує — висячий запис. Докладніше в розділі про захоплення піддомену.
Якщо випадкове ім’я з останньої команди розв’язалося, у домену ввімкнено wildcard DNS: відповідає будь-яке ім’я, і «розв’язується» нічого не каже про конкретний піддомен.
Чому повного списку піддоменів ззовні не буває
- Wildcard-сертифікати. Якщо сервіси працюють під
*.example.com, у журналах буде лише зірочка, без конкретних імен. - Імена без публічного HTTPS. Хости лише на HTTP, поштові імена та внутрішні сервіси із сертифікатами приватного центру в журнали CT не потрапляють.
- У DNS немає запиту «покажи все». Резолвер відповідає на питання про імена, які ви вже знаєте. Єдиний стандартний спосіб вивантажити зону — передача зони, а стороннім сервери в ній відмовляють.
- Старі імена лишаються в журналах. Список завжди змішує живі й давно видалені імена — саме тому потрібна перевірка DNS.
Активні методи: перебір і передача зони
Активні методи надсилають запити в інфраструктуру цілі. Це звична практика тестування безпеки — на власних системах або там, де тестувати явно дозволили.
- Перебір за словником перевіряє в DNS тисячі ймовірних імен (
dev,api,vpn,staging…). OWASP Amass поєднує збирання відкритих даних з активною розвідкою; subfinder працює лише з пасивними джерелами. - Передача зони (AXFR) — механізм, яким вторинні DNS-сервери копіюють зону (RFC 5936). Перевірте свій домен так:
dig NS example.com +short
dig AXFR example.com @ns1.example.com
Правильно налаштований сервер відповість «Transfer failed» або відмовить. Якщо ваш сервер віддає всю зону будь-кому, дозвольте AXFR лише своїм вторинним серверам.
Висячий CNAME і захоплення піддомену
Типова історія: під акцію зробили promo.example.com — CNAME на example-promo.herokuapp.com. Потім застосунок видалили, а запис у DNS лишився. Якщо платформа дозволяє будь-кому створити застосунок (бакет, сторінку) з тим самим ім’ям, зловмисник займе його й показуватиме на вашому піддомені свій вміст — із вашим доменом в адресному рядку. Це називають subdomain takeover, захоплення піддомену.
Сам собою висячий CNAME — ще не доведена вразливість: деякі платформи не дають зайняти звільнене ім’я, а підтвердити ризик можна лише на боці самої платформи. Але виправити дешево: видаліть CNAME або знову створіть ресурс у провайдера, якщо піддомен іще потрібен.
Що робити зі знайденими піддоменами
- Вивантажте список і позначте всі імена, про які ви не знали.
- Видаліть висячі CNAME і записи старих тестових стендів та завершених акцій.
- Адмінки, staging і внутрішні сервіси закрийте авторизацією або доступом за IP і не лишайте на застарілих версіях CMS.
- Перевірте важливі живі піддомени: сертифікат — перевіркою SSL, записи — перевіркою DNS, ознаки шкідливого коду й застарілого ПЗ — сканером безпеки сайту.
- Повторюйте пошук час від часу: кожен новий сертифікат додає імена в журнали.
Як знайти піддомени в PromoPilot
Введіть домен у пошук піддоменів. Імена беруться з crt.sh (уся історія сертифікатів); якщо crt.sh не відповів — із Cert Spotter (лише чинні сертифікати), і інструмент про це скаже. Список імен кешується на 24 години. Далі інструмент:
- нормалізує імена (нижній регістр, без
*., лише сам домен і його піддомени); - перевіряє в DNS до 300 імен — спершу з найсвіжішими сертифікатами — через публічний DNS-over-HTTPS Cloudflare (запасний — Google): записи A, потім AAAA для імен без A;
- показує статус кожного імені (є в DNS, немає в DNS, без A/AAAA, висячий CNAME), ланцюжок CNAME і дату завершення найсвіжішого сертифіката;
- перевіряє wildcard DNS випадковим ім’ям і позначає такі рядки, а також попереджає про знайдені wildcard-сертифікати;
- називає сервіс за висячим CNAME, якщо він зі списку платформ, де захоплення можливе (Amazon S3, Azure, Heroku, GitHub Pages, Netlify, Shopify та інші);
- дає відфільтрувати таблицю й завантажити її в CSV.
Ліміти: 15 пошуків на добу без акаунта, 45 — із безкоштовним акаунтом, у Pro добового ліміту немає; не більше 6 пошуків на хвилину.
Чого інструмент не робить
- Жодного перебору за словником, сканування портів і HTTP-запитів до знайдених хостів. Тому ризик захоплення він може позначити, але не підтвердити.
- Бачить лише імена з публічними сертифікатами. Імена під wildcard-сертифікатом або без HTTPS у списку не з’являться.
- Для доменів із величезною кількістю сертифікатів список обмежено 5000 унікальних імен, а DNS за один запуск перевіряється для 300 із них.
Що почитати далі
- Перевірка SSL-сертифіката — термін, ланцюжок, протоколи.
- Перевірка DNS-записів домену — A, CNAME, MX, TXT і що вони означають.
- Як перевірити сайт на безпеку — загальний чек-лист.