OSINT по домену: от WHOIS и DNS до typosquatting
Когда смотришь на домен снаружи, без доступа к серверу, всё равно можно вытащить кучу полезного: кто регистрировал, когда истекает, какие субдомены когда-то получали сертификат, нет ли рядом похожих доменов под фишинг. Это и есть доменный OSINT — не взлом, а сбор открытых данных.
В этой статье я пройдусь по практическому пайплайну, которым сам пользуюсь: RDAP/WHOIS → DNS → Certificate Transparency → typosquatting → быстрая проверка репутации. Без платных подписок, руками и с парой команд в терминале. Если ты уже собирал мини-SOC в Google Таблицах — найденные похожие-домены потом можно просто закинуть туда в мониторинг.
Что понадобится
— Браузер
— Терминал (Windows PowerShell / Linux / macOS)
— Python 3 (для dnstwist)
— Домен для разбора — лучше свой или тот, на который у тебя есть разрешение
— 30–40 минут
Важно помнить!: OSINT по чужим активам без контекста (багбаунти, работа, расследование) легко уходит в серую зону. Ниже разбираю технику на примере публичных сервисов и своего домена.
Шаг 1. WHOIS / RDAP — кто владеет и когда истекает
Классический WHOIS сейчас часто урезан GDPR и "privacy protect". RDAP — современный JSON-вариант тех же данных, но работает не для всех зон одинаково. Важный нюанс: прямая ссылка вида rdap.org/domain/... хорошо отрабатывает для многих gTLD (.com, .net, .org), а для .ru и .рф часто отдаёт 404. Для российских доменов удобнее обычный WHOIS-интерфейс.
Для доменов .ru / .рф открой в браузере:
https://www.nic.ru/whois/?query=example.ru
или
https://who.is/whois/example.ru
что мы смотрим в ответе?:
— даты создания и окончания (created / paid-till / expires)
— регистратор
— nameservers (NS)
— статусы (REGISTERED, DELEGATED, clientTransferProhibited и т.п.)
Для .com / .net / .org можно пробовать RDAP через браузер (вернётся JSON) или через curl:https://rdap.org/domain/example.com
curl.exe -s "https://rdap.org/domain/example.com"В JSON смотри блок events: registration / expiration.
Если срок окончания ближе чем на 30 дней — это уже сигнал. Домен с просрочкой легко уводят или перехватывают при неаккуратном продлении.
Шаг 2. DNS — что реально отвечает в сети
RDAP говорит «как зарегистрировано», DNS — «что живёт сейчас».
Минимум, который я всегда смотрю:
— A / AAAA — IP сайта
— NS — DNS-серверы
— MX — почта
— TXT — SPF, DKIM, верификации сервисов, иногда лишние хвосты
Через Google Public DNS (без установки утилит):
curl -s "https://dns.google/resolve?name=example.com&type=A"
curl -s "https://dns.google/resolve?name=example.com&type=MX"
curl -s "https://dns.google/resolve?name=example.com&type=NS"
curl -s "https://dns.google/resolve?name=example.com&type=TXT"
Если есть dig:
dig example.com A +short
dig example.com MX +short
dig example.com NS +short
dig example.com TXT +short
На что обращать внимание:
— Неожиданный IP / смена ASN после «спокойного» периода
— MX на подозрительный хостинг (часто в фишинговых схемах)
— TXT с лишними include: или странными токенами
— NS не у того регистратора / DNS-провайдера, который ты помнишь
IP из A-записи потом удобно прогнать через AbuseIPDB .

Шаг 3. Certificate Transparency — субдомены через crt.sh
Каждый публичный TLS-сертификат попадает в Certificate Transparency. Агрегатор crt.sh бесплатный и для OSINT почти magический: он показывает хосты, которые когда-то получали сертификат — включая staging, api, old, VPN-подобные имена.
JSON для скриптов:
curl.exe -s "https://crt.sh/?q=yandex.ru&output=json" | python -m json.tool
Из JSON вытаскивай уникальные имена из поля name_value. Там часто бывает:
— www, mail, api, cdn
— staging, dev, test, old
— внутренние имена, которые случайно «вылезли» наружу через сертификат
Быстро вытащить только имена (PowerShell):
curl.exe -s "https://crt.sh/?q=yandex.ru&output=json" | ConvertFrom-Json | ForEach-Object { $_.name_value -split "`n" } | Sort-Object -Unique
Важный нюанс: сертификат != живой хост. Домен мог быть в SAN год назад и уже не резолвиться. Поэтому следующий шаг — проверка, что из списка ещё живо.
Шаг 4. Отфильтровать живые субдомены
Простой способ — резолвить A-записи. В PowerShell для одного имени:
Resolve-DnsName api.example.com -Type A
Или через dns.google:
curl -s "https://dns.google/resolve?name=api.example.com&type=A"
Я обычно собираю уникальный список из crt.sh в текстовый файл и дальше:
— что резолвится → мониторю
— что не резолвится, но выглядит внутренним (intranet, vpn, admin) → в заметки: когда-то светилось, возможно ещё где-то живёт
— wildcard *.example.com → значит сертификат покрывает любой субдомен это отдельно учитывать
Находки вроде staging.example.com с открытой админкой или старым стеком — классика: на основном сайте защита жёстче, на staging забыли.
Шаг 5. Typosquatting — поиск похожих доменов
Злоумышленнику не обязательно брать твой домен. Достаточно небольшой ошибки в имени например yandex.ru - yanbex.ru
Инструмент, которым я пользуюсь чаще всего — dnstwist (открытый, на Python):
pip install dnstwist
dnstwist --registered example.com
Флаг --registered оставляет только те варианты, которые реально зарегистрированы. Без него список будет огромный и бесполезный для первого прохода.
Что смотреть в выводе:
— registered + есть A-запись — домен «живой»
— MX у lookalike — потенциальный фишинг почты
— NS / странный хостинг рядом с твоим брендом
Дополнительно глазами можно пройти:
— https://dnstwister.report/
— https://www.haveibeensquatted.com/
Внезапно оживший похожий домен с контентом под твой бренд — красный флаг. Такие имена я сразу добавляю в Domain Security Dashboard из предыдущей статьи и смотрю VirusTotal / urlscan.
Шаг 6. Быстрая проверка репутации находок
Когда есть список доменов и IP, хватает ручной/табличной проверки:
— VirusTotal — домен / URL / IP
— AbuseIPDB — IP
— urlscan.io — был ли публичный скан, как выглядит страница
— AlienVault OTX — есть ли pulses по индикатору
Для похожих доменов особенно полезен urlscan: видно, клонируют ли лендинг, какие домены на скрине, куда редиректит.
Если Malicious > 0 на VT или Abuse рейтинг заметно выше нуля — не паникуй сразу (фолзы бывают), но зафиксируй и разберись: кто хостит, когда зарегистрирован, есть ли почта, похож ли контент на фишинг.
Чеклист доменного OSINT
Чтобы не размазывать расследование, я держу такой порядок:
1. RDAP - expiration, регистратор, NS
2. DNS - A/AAAA, MX, NS, TXT
3. crt.sh - субдомены из сертификатов
4. Resolve - что из субдоменов живо
5. dnstwist --registered - lookalike
6. VT / AbuseIPDB / urlscan - репутация живых находок
7. Всё подозрительное - продолжаю мониторить
На один домен первый проход обычно занимает меньше часа. Потом уже точечно углубляешься.
Чего этот пайплайн не заменит
— Активный скан уязвимостей без разрешения
— Полная инвентаризация инфраструктуры компании
— Гарантию, что раз в crt.sh чисто - значит чисто
— Платный мониторинг бренда 24/7 (это уже другой уровень)
OSINT показывает известные и открытые следы. Это первый слой осведомлённости, а не финальный вердикт.
Итог
Доменный OSINT - это последовательная привычка: регистрация → DNS → сертификаты → похожие домены → репутация. Тут порог входа низкий, а польза конкретная - особенно если ты сопровождаешь несколько сайтов или свой pet-проект.
Собери по своему домену список субдоменов и похожих доменов и мониторь живые домены - и уже будет видно, где дыры в инвентаризации.
В следующей статье разберу IOC простыми словами: что считать индикатором компрометации и как руками прогонять хеши, IP и домены через VirusTotal, OTX и AbuseIPDB - как раз те находки, которые всплывают на шагах выше.
Комментарии
0
Комментариев пока что нет, но Вы можете стать первым!