
Оглавление
1. Введение: почему Passive DNS — основа расследования доменов2. Как работает Passive DNS: механизм сбора и хранения данных
3. Анатомия поддельного домена: как атакующие создают инфраструктуру
4. Фаза 1 — Базовый запрос: первый Passive DNS-поиск за 5 минут
5. Фаза 2 — Разворачивание инфраструктуры: от одного домена к сети
6. Фаза 3 — Временной анализ: когда и как появилась угроза
7. Фаза 4 — Перекрёстная верификация: WHOIS, сертификаты, ASN
8. Инструменты Passive DNS: полный обзор бесплатных и платных сервисов
9. Python-скрипт `passivedns_hunter.py`: автоматизация поиска
10. Typosquatting и homograph-атаки: обнаружение доменов-двойников
11. Мониторинг в реальном времени: как поймать домен в момент регистрации
12. Практические кейсы: разбор реальных фишинговых кампаний
13. Защита организации: как выстроить систему обнаружения
14. FAQ: 12 горячих вопросов о Passive DNS
15. Чек-лист: расследование поддельного домена за 20 минут
16. Заключение: Passive DNS как базовый навык аналитика угроз
1. Введение: почему Passive DNS — основа расследования доменов
Когда злоумышленник регистрирует домен `sberbank-online.ru` или `paypa1.com`, он рассчитывает на одно: жертва не заметит подмены. Техника Passive DNS позволяет не только обнаружить такой домен, но и восстановить всю инфраструктуру атаки — другие домены, IP-адреса, временну́ю шкалу и связи с ранее известными угрозами.
Passive DNS (пассивный DNS) — это метод сбора и хранения DNS-резолюций, которые наблюдались в реальном трафике, без активного опроса серверов. В отличие от обычного DNS-запроса, который показывает текущее состояние, Passive DNS хранит историю: какой IP-адрес имел домен полгода назад, какие ещё домены жили на том же сервере, как менялась инфраструктура.
| Что даёт Passive DNS | Обычный DNS-запрос | Passive DNS |
|---|---|---|
| Текущий IP домена | ✅ | ✅ |
| IP домена 6 месяцев назад | ❌ | ✅ |
| Все домены, жившие на одном IP | ❌ | ✅ |
| Дата первого появления домена в сети | ❌ | ✅ |
| Связь с другими вредоносными доменами | ❌ | ✅ |
| Поддомены, зафиксированные в реальном трафике | ❌ | ✅ |
> 🔴 Ключевой принцип: атакующие меняют домены, но редко меняют инфраструктуру. Один обнаруженный фишинговый домен через Passive DNS раскрывает десятки связанных — зарегистрированных на те же IP, те же серверы имён, ту же регистраторскую почту.
Техника используется в трёх основных сценариях: расследование инцидентов (ретроспективный анализ угрозы), проактивная охота за угрозами (threat hunting) и защита бренда (обнаружение доменов-двойников). В этом руководстве разобраны все три — с конкретными инструментами, командами и Python-кодом для автоматизации.
> *💡 Статья носит образовательный и профессиональный характер. Все техники применяются исключительно в легальных целях: расследование угроз, защита организации, OSINT-анализ публично доступной DNS-информации.*
2. Как работает Passive DNS: механизм сбора и хранения данных
Чтобы эффективно использовать Passive DNS, необходимо понимать, откуда берутся данные и какие у них ограничения.
2.1 Источники данных Passive DNS
Passive DNS-данные собираются сенсорами, встроенными в различные точки интернет-инфраструктуры:
DNS-резолверы провайдеров. Крупные провайдеры и DNS-сервисы (Cloudflare, OpenDNS, Google Public DNS) фиксируют резолюции, которые проходят через их инфраструктуру. Каждый раз, когда браузер пользователя спрашивает «какой IP у домена X», эта пара фиксируется с временно́й меткой.
Honeypot-сенсоры исследовательских организаций. Компании вроде Farsight Security (DNSDB), VirusTotal, Cisco Umbrella разворачивают собственные сети пассивных сенсоров для сбора DNS-трафика в разных регионах.
Данные из вредоносного ПО. Антивирусные лаборатории извлекают DNS-запросы из образцов вредоносного ПО при динамическом анализе в песочницах.
Краулеры и сканеры. Системы вроде Shodan, Censys, ZoomEye активно сканируют интернет и фиксируют DNS-данные как часть своих результатов.
2.2 Структура Passive DNS-записи
Каждая запись в Passive DNS-базе содержит следующие поля:
text
{
"rrname": "sberbank-online.ru.", // доменное имя (запрос)
"rrtype": "A", // тип записи (A, MX, NS, CNAME...)
"rdata": "185.220.101.45", // значение (IP-адрес, сервер)
"time_first": "2024-03-15T10:22:31Z", // первое наблюдение
"time_last": "2024-09-07T18:45:12Z", // последнее наблюдение
"count": 4821 // количество раз, когда видели эту пару
}
Поле `count` особенно ценно: малое число наблюдений при свежей дате `time_first` — классический признак нового фишингового домена, который ещё не получил широкого трафика, но уже используется.
2.3 Ограничения метода
Passive DNS — мощный инструмент, но у него есть принципиальные ограничения, которые нужно учитывать:
Неполнота покрытия. Ни одна база не перехватывает 100% DNS-трафика. Домены, которые резолвировались только в изолированных сетях или через приватные резолверы, могут отсутствовать в базах.
Задержка индексации. Новые домены появляются в Passive DNS-базах через несколько часов или дней после начала активности — не мгновенно.
Ложноположительные срабатывания. IP-адреса на хостингах с виртуальным хостингом (shared hosting) могут обслуживать тысячи доменов. Наличие домена на том же IP, что и вредоносный, само по себе не является доказательством злого умысла.
Исторические данные ограничены. Большинство бесплатных баз хранит данные за последние 12–24 месяца. Для более глубокого ретроспективного анализа нужны платные подписки.
3. Анатомия поддельного домена: как атакующие создают инфраструктуру
Прежде чем искать поддельные домены, необходимо понять логику их создания. Атакующие следуют предсказуемым паттернам — и именно это делает их уязвимыми для обнаружения через Passive DNS.
3.1 Типичные техники создания поддельных доменов
Typosquatting (опечатки в домене)
Наиболее массовая техника. Злоумышленник регистрирует домен, максимально похожий на легитимный, с расчётом на опечатку при наборе:
sberbank
.ru → sberbamk.ru, sberbannk.ru, sberbnk.ru
tinkoff.ru → tiinkoff.ru, tinkof.ru, tinkoff-bank.ru
Homograph-атака (визуально идентичные символы)
Использование символов из других алфавитов, визуально неотличимых от латинских:
google
.com → gооgle.com (второй вариант — с кириллическими «о»)
apple.com → аpple.com (кириллическая «а»)
Такие домены выглядят идентично в большинстве браузеров, но являются разными DNS-именами.
Комбо-домены (добавление слов)
Добавление слов, усиливающих доверие:
sberbank
.ru → sberbank-online.ru, sberbank-lk.ru, sberbank-support.ru
Замена TLD (доменной зоны)
Использование похожих или нестандартных зон:
google
.com → google.net, google.xyz, google.ru-safe.com
Субдомен-мимикрия
Легитимное имя прячется в субдомен вредоносного домена:
sberbank
.ru.phishing-site.com
login.google.com.malicious.xyz
3.2 Инфраструктурные паттерны атакующих
Большинство фишинговых кампаний создаётся по одному шаблону:
1. Регистрация пакета из 10–50 похожих доменов за раз (через единый аккаунт регистратора)
2. Размещение всех доменов на одном или нескольких IP-адресах (часто — bulletproof-хостинг)
3. Использование одних и тех же серверов имён для всей партии доменов
4. Короткое время жизни: домены активны от нескольких часов до 2–3 недель
Именно эти паттерны позволяют через один обнаруженный домен находить остальные: они живут на том же IP, используют те же NS-серверы и зарегистрированы в одно время.
| Паттерн | Как обнаружить через Passive DNS |
|---|---|
| Пакетная регистрация | Все домены имеют одинаковый `time_first` |
| Общий IP | Reverse IP lookup в Passive DNS |
| Общие NS-серверы | Поиск по `rrtype: NS` |
| Короткое время жизни | Малый интервал time_first — time_last |
| Общий регистратор / почта WHOIS | Перекрёстный WHOIS-анализ |
4. Фаза 1 — Базовый запрос: первый Passive DNS-поиск за 5 минут
Начинаем с самого простого: проверяем конкретный подозрительный домен через бесплатные инструменты.
4.1 VirusTotal — стартовая точка
VirusTotal предоставляет бесплатный Passive DNS через веб-интерфейс и API. Для начала — через браузер.
Шаг 1: Перейдите на `virustotal.com/gui/domain/`
Шаг 2: Введите подозрительный домен, например `sberbank-lk.ru`
Шаг 3: Перейдите на вкладку Relations → раздел Resolutions
Что читать в результате:
ip
Address First Seen Last Seen # Detections
185.220.101.45 2024-03-10 2024-04-22 47/90 engines
Поле `# Detections` показывает, сколько антивирусных движков VirusTotal пометили этот IP как вредоносный. Значение выше 5 — серьёзный признак угрозы.
4.2 RiskIQ Community / Microsoft Defender Threat Intelligence
После приобретения RiskIQ компанией Microsoft сервис стал доступен частично бесплатно через Community-аккаунт. Регистрация: `ti.defender.microsoft.com`.
Шаг 1: Зарегистрируйтесь с корпоративным email
Шаг 2: В строке поиска введите домен
Шаг 3: Вкладка DNS → историческая таблица резолюций
Преимущество перед VirusTotal: глубина истории до 5+ лет, более детальная разбивка по типам DNS-записей (A, MX, NS, CNAME).
4.3 SecurityTrails — самый удобный интерфейс для начинающих
`securitytrails.com` предоставляет 50 бесплатных запросов в месяц без API.
Базовый запрос для домена:
1
. Перейдите на securitytrails.com/domain/sberbank-lk.ru/dns
2. Вкладка "Historical Data" → тип записи "A"
3. Таблица покажет: дату, IP, провайдера хостинга
Ключевая функция SecurityTrails: Reverse IP — показывает все домены, которые когда-либо жили на одном IP. Это и есть главная точка разворачивания инфраструктуры атакующего.
securitytrails
.com/list/ip/185.220.101.45
4.4 Что искать в результатах первого запроса
Признаки вредоносного домена в Passive DNS:
- `time_first` и `time_last` разделяет менее 30 дней (короткоживущий домен)
- IP принадлежит хостинговым провайдерам с плохой репутацией (OVH abuse-listed, bulletproof-хостинг)
- На том же IP за тот же период жили другие домены-опечатки известных брендов
- NS-серверы — анонимный хостинг или Cloudflare Workers с нестандартными именами
- Нет MX-записи (нет почты) — но есть A-запись: типично для фишинговых страниц без бизнес-логики
5. Фаза 2 — Разворачивание инфраструктуры: от одного домена к сети
Один обнаруженный домен — это только вход в граф инфраструктуры. Фаза 2 — методичное разворачивание от него к связанным объектам.
5.1 Pivot по IP-адресу (Reverse IP)
Получили IP из Passive DNS → ищем все домены на этом IP за исследуемый период.
Через SecurityTrails API:
bash
curl -H "APIKEY: YOUR_KEY" \
"https://api.securitytrails.com/v1/browse?ipv4=185.220.101.45"
Через VirusTotal API:
bash
curl -H "x-apikey: YOUR_KEY" \
"https://www.virustotal.com/api/v3/ip_addresses/185.220.101.45/resolutions?limit=40"
Что вы получите: список из десятков или сотен доменов, которые жили на этом IP. Среди них — потенциально вся партия фишинговых доменов из одной кампании.
5.2 Pivot по NS-серверам
Если фишинговые домены используют одинаковые серверы имён — это сильный индикатор единой инфраструктуры.
Получить NS-записи через Passive DNS:
bash
<h2 id="cherez-dnsdb-farsight-trebuet-akkaunt">Через DNSDB Farsight (требует аккаунт)</h2>
curl -H "X-API-Key: YOUR_KEY" \
"https://api.dnsdb.info/dnsdb/v2/lookup/rrset/name/*.sberbank-lk.ru/NS"
Через dig (стандартная утилита):
bash
dig NS sberbank-lk.ru
<h2 id="poluchaem-ns1-attacker-hosting-com-ns2-attacker-hosting-com">Получаем: ns1.attacker-hosting.com, ns2.attacker-hosting.com</h2>
<h2 id="teper-ischem-drugie-domeny-s-temi-zhe-ns-cherez-securitytrails">Теперь ищем другие домены с теми же NS через SecurityTrails:</h2>
curl -H "APIKEY: YOUR_KEY" \
"https://api.securitytrails.com/v1/search/list?filter[ns]=ns1.attacker-hosting.com"
5.3 Pivot по CNAME и MX записям
Фишинговые домены иногда используют общий CNAME-редирект или поддельные MX-серверы для перехвата почты. Эти записи также являются точками разворачивания.
bash
<h2 id="poisk-vseh-domenov-ispolzuyuschih-opredelyonnyy-cname-target">Поиск всех доменов, использующих определённый CNAME-таргет</h2>
curl -H "APIKEY: YOUR_KEY" \
"https://api.securitytrails.com/v1/search/list?filter[cname]=malicious-redirect.com"
5.4 Построение графа инфраструктуры
После нескольких pivot-шагов у вас накопится набор взаимосвязанных объектов. Визуализируйте их в виде графа:
text
[домен sberbank-lk.ru]
↓ resolves to
[IP 185.220.101.45]
↓ also hosts
[домен sberbank-support.ru] ←→ [домен sberbamk.ru]
↓ share NS
[ns1.attacker-hosting.com]
↓ also used by
[домен tinkoff-lk.ru] → [домен tinkof-bank.ru]
Такой граф показывает, что перед вами — единая кампания, нацеленная на несколько российских банков одновременно.
6. Фаза 3 — Временной анализ: когда и как появилась угроза
Временна́я шкала DNS-активности раскрывает жизненный цикл атаки и помогает установить связь с конкретными инцидентами.
6.1 Построение временно́й шкалы домена
Для каждого подозрительного домена собираем все датированные события:
text
Дата регистрации (WHOIS creation_date) → 2024-03-08
Первое наблюдение в Passive DNS → 2024-03-10 (через 2 дня)
Пик DNS-запросов (max count) → 2024-03-15 — 2024-03-22
Смена IP-адреса → 2024-03-28
Последнее наблюдение в Passive DNS → 2024-04-22
Дата добавления в блок-листы → 2024-04-05
Интервал между регистрацией и первым наблюдением в 2 дня типичен для заранее подготовленной инфраструктуры. Если этот интервал измеряется неделями — домен мог быть зарегистрирован впрок и введён в действие позже.
6.2 Сопоставление с инцидентами
Если у вас есть данные о конкретных инцидентах (фишинговых письмах, жалобах пользователей), сопоставьте их даты с пиком DNS-активности домена. Совпадение пика трафика и даты инцидента — сильное подтверждение атрибуции.
python
<h2 id="primer-korrelyatsii-cherez-pandas">Пример корреляции через pandas</h2>
import pandas as pd
dns_activity = pd.DataFrame({
'date': ['2024-03-10', '2024-03-15', '2024-03-22', '2024-04-05'],
'count': [12, 4821, 3102, 45]
})
incidents = pd.DataFrame({
'date': ['2024-03-16', '2024-03-19'],
'description': ['Фишинговое письмо в банк X', 'Жалоба клиента']
})
<h2 id="vizualizatsiya-sovpadeniy-pokazhet-chto-oba-intsidenta-prishlis-na-pik-trafika">Визуализация совпадений покажет, что оба инцидента пришлись на пик трафика</h2>6.3 Признаки «Fast Flux» DNS
Fast Flux — техника, при которой IP-адрес домена меняется каждые несколько минут или часов, затрудняя блокировку. В Passive DNS это выглядит как:
domain
: c2-server.example.com
time_first: 2024-05-01T10:00:00Z → rdata: 91.108.4.1
time_first: 2024-05-01T10:05:00Z → rdata: 185.220.101.45
time_first: 2024-05-01T10:11:00Z → rdata: 194.165.16.29
time_first: 2024-05-01T10:18:00Z → rdata: 45.142.212.100
Смена IP каждые 5–15 минут при высоком `count` — характерный признак Fast Flux. Такие домены часто используются как C2 (Command and Control) серверы ботнетов.
7. Фаза 4 — Перекрёстная верификация: WHOIS, сертификаты, ASN
Passive DNS в изоляции даёт мощную картину, но верификация через дополнительные источники превращает предположение в доказательство.
7.1 WHOIS-анализ
WHOIS-данные домена содержат регистрационную информацию, которую можно использовать для атрибуции.
bash
whois sberbank-lk.ru
<h2 id="klyuchevye-polya-dlya-analiza">Ключевые поля для анализа:</h2>
<h2 id="creation-date-2024-03-08-data-registratsii">creation_date: 2024-03-08 ← дата регистрации</h2>
<h2 id="registrant-email-admin-mail-ru-mozhet-byt-obschim-dlya-vsey-kampanii">registrant_email: admin@mail.ru ← может быть общим для всей кампании</h2>
<h2 id="name-server-ns1-attacker-hosting-com">name_server: ns1.attacker-hosting.com</h2>
<h2 id="registrar-reg-ru">registrar: REG.RU</h2>> ⚠️ После введения GDPR и аналогичных норм большинство WHOIS-записей для физических лиц скрыто. Для российских доменов (.ru, .рф) данные частично доступны через WHOIS-сервисы RIPN.
Ценность WHOIS для Passive DNS-расследования: даже скрытые данные содержат `registrar`, `name_server` и `creation_date` — трёх полей часто достаточно для группировки доменов одной кампании.
7.2 Certificate Transparency Logs
Каждый TLS-сертификат, выданный публичными центрами сертификации, попадает в открытые Certificate Transparency Logs. Это независимый от DNS источник данных о доменах.
Поиск через crt.sh:
bash
<h2 id="vse-sertifikaty-dlya-domena-i-ego-poddomenov">Все сертификаты для домена и его поддоменов</h2>
curl "https://crt.sh/?q=%.sberbank-lk.ru&output=json" | python3 -m json.tool
<h2 id="poisk-po-organizatsii-esli-ukazana-v-sertifikate">Поиск по организации (если указана в сертификате)</h2>
curl "https://crt.sh/?O=Sberbank&output=json"
Что искать: дата выдачи сертификата должна совпадать с `time_first` в Passive DNS. Если сертификат выдан на несколько субдоменов сразу — это часто означает автоматизированную атаку.
7.3 ASN-анализ (Автономные системы)
IP-адрес принадлежит автономной системе (ASN) — организации, управляющей блоком IP-адресов. Репутация ASN — важный индикатор при анализе инфраструктуры.
bash
<h2 id="opredelit-asn-po-ip">Определить ASN по IP</h2>
whois -h whois.radb.net 185.220.101.45
<h2 id="ili-cherez-ipinfo-io">Или через ipinfo.io</h2>
curl "https://ipinfo.io/185.220.101.45/json"
<h2 id="otvet-soderzhit-org-country-asn">Ответ содержит: org, country, asn</h2>
<h2 id="primer-opasnogo-otveta">Пример опасного ответа:</h2>
<h2 id="org-as205100-f3-netze-e-v-izvestnyy-tor-exit-node-provayder">"org": "AS205100 F3 Netze e.V." ← известный Tor-exit node провайдер</h2>
<h2 id="org-as49453-global-layer-chasto-figuriruet-v-bulletproof-hostinge">"org": "AS49453 Global Layer" ← часто фигурирует в bulletproof-хостинге</h2>Если IP-адрес принадлежит ASN с историей злоупотреблений — это существенно усиливает вывод о вредоносности. Проверить репутацию ASN: `abuseipdb.com`, `bgpview.io`, `ipqs.io`.
7.4 Shodan и Censys: что открыто на порту
Активные сканеры показывают, какие сервисы запущены на IP в момент сканирования.
bash
<h2 id="shodan-cli">Shodan CLI</h2>
shodan host 185.220.101.45
<h2 id="pokazhet-otkrytye-porty-bannery-tehnologii-istoriyu-skanirovaniy">Покажет: открытые порты, баннеры, технологии, историю сканирований</h2>
<h2 id="censys-web">Censys web</h2>
<h2 id="search-censys-io-hosts-185-220-101-45">search.censys.io/hosts/185.220.101.45</h2>Признаки фишингового сервера в Shodan/Censys:
- Порт 443 с самоподписным сертификатом и именем легитимного бренда
- Стандартный Apache/Nginx с дефолтной страницей, но активный порт 443
- Нестандартные порты управления (8443, 8080) открыты публично
8. Инструменты Passive DNS: полный обзор бесплатных и платных сервисов
8.1 Бесплатные инструменты
| Инструмент | URL | Лимит | Глубина истории | Сильные стороны |
|---|---|---|---|---|
| VirusTotal | virustotal.com | 4 запроса/мин (API) | ~2 года | Интеграция с AV-движками, Relations граф |
| SecurityTrails | securitytrails.com | 50/мес (web) | ~3 года | Reverse IP, удобный UI |
| RiskIQ Community | ti.defender.microsoft.com | 10 запросов/день | 5+ лет | Глубокая история, граф атрибутов |
| Robtex | robtex.com | Без лимита | ~1 год | Быстрый поиск, хорошая визуализация |
| DNSDumpster | dnsdumpster.com | Без лимита | Текущий срез | Карта поддоменов, экспорт |
| crt.sh | crt.sh | Без лимита | Полная история CT | Certificate Transparency, субдомены |
| MXToolbox | mxtoolbox.com | Ограничен | Текущий + краткая история | Проверка MX, SPF, DKIM |
8.2 Платные и условно-бесплатные профессиональные инструменты
Farsight DNSDB (`api.dnsdb.info`) — де-факто стандарт индустрии. Крупнейшая в мире база Passive DNS, данные с 2010 года, более 100 миллиардов записей. Для исследователей доступна программа бесплатного академического доступа.
bash
<h2 id="primer-zaprosa-k-dnsdb-v2-api">Пример запроса к DNSDB v2 API</h2>
curl -H "X-API-Key: YOUR_KEY" \
"https://api.dnsdb.info/dnsdb/v2/lookup/rrset/name/sberbank-lk.ru/A?limit=100&time_last_after=1700000000"
Shodan (`shodan.io`) — для IP-аналитики и анализа открытых сервисов. Подписка от $49/мес, академический план бесплатен.
Recorded Future — enterprise-решение с автоматической корреляцией DNS-данных, WHOIS, угроз. Используется крупными SOC-командами.
Team Cymru Pure Signal — специализированный Passive DNS с фокусом на threat intelligence. Интеграция через MISP.
8.3 Открытые агрегаторы и API-агрегаторы
OTX AlienVault (`otx.alienvault.com`) — бесплатная платформа обмена индикаторами угроз. Содержит Passive DNS-данные как часть пульсов (Pulses).
bash
curl -H "X-OTX-API-KEY: YOUR_KEY" \
"https://otx.alienvault.com/api/v1/indicators/domain/sberbank-lk.ru/passive_dns"
Abuse.ch URLhaus и ThreatFox — бесплатные базы вредоносных URL и индикаторов с DNS-данными. Полезны для проверки, известен ли домен сообществу.
9. Python-скрипт `passivedns_hunter.py`: автоматизация поиска
Ручной поиск через веб-интерфейсы эффективен для разовых проверок. При расследовании кампании с десятками доменов — нужна автоматизация.
9.1 Установка зависимостей
bash
pip install requests python-whois dnspython tqdm colorama
9.2 Скрипт `passivedns_hunter.py`
python
#!/usr/bin/env python3
"""
passivedns_hunter.py — автоматизированный анализ инфраструктуры домена
через Passive DNS (SecurityTrails API + VirusTotal API)
Использование:
python passivedns_hunter.py -d sberbank-lk.ru
python passivedns_hunter.py -l domains.txt --pivot-ip
"""
import requests
import json
import argparse
import sys
from datetime import datetime
from collections import defaultdict
<h2 id="nastroyki">===== НАСТРОЙКИ =====</h2>
SECURITYTRAILS_KEY = "YOUR_SECURITYTRAILS_KEY"
VIRUSTOTAL_KEY = "YOUR_VIRUSTOTAL_KEY"
OTX_KEY = "YOUR_OTX_KEY"
ST_BASE = "https://api.securitytrails.com/v1"
VT_BASE = "https://www.virustotal.com/api/v3"
OTX_BASE = "https://otx.alienvault.com/api/v1"
def get_passive_dns_st(domain: str) -> list:
"""Получить историю DNS-резолюций через SecurityTrails."""
url = f"{ST_BASE}/history/{domain}/dns/a"
headers = {"APIKEY": SECURITYTRAILS_KEY}
try:
r = requests.get(url, headers=headers, timeout=10)
r.raise_for_status()
records = r.json().get("records", [])
results = []
for rec in records:
for ip in rec.get("values", []):
results.append({
"ip": ip.get("ip"),
"first_seen": rec.get("first_seen"),
"last_seen": rec.get("last_seen"),
"source": "SecurityTrails"
})
return results
except Exception as e:
print(f" [!] SecurityTrails error for {domain}: {e}")
return []
def get_passive_dns_vt(domain: str) -> list:
"""Получить историю DNS-резолюций через VirusTotal."""
url = f"{VT_BASE}/domains/{domain}/resolutions"
headers = {"x-apikey": VIRUSTOTAL_KEY}
try:
r = requests.get(url, headers=headers, timeout=10)
r.raise_for_status()
data = r.json().get("data", [])
results = []
for item in data:
attr = item.get("attributes", {})
results.append({
"ip": attr.get("ip_address"),
"first_seen": datetime.utcfromtimestamp(
attr.get("date", 0)).strftime("%Y-%m-%d"),
"last_seen": datetime.utcfromtimestamp(
attr.get("date", 0)).strftime("%Y-%m-%d"),
"source": "VirusTotal"
})
return results
except Exception as e:
print(f" [!] VirusTotal error for {domain}: {e}")
return []
def reverse_ip_lookup(ip: str) -> list:
"""Найти все домены, жившие на одном IP (через SecurityTrails)."""
url = f"{ST_BASE}/browse"
headers = {"APIKEY": SECURITYTRAILS_KEY}
params = {"filter": json.dumps({"ipv4": ip})}
try:
r = requests.get(url, headers=headers, params=params, timeout=10)
r.raise_for_status()
return r.json().get("records", [])
except Exception as e:
print(f" [!] Reverse IP error for {ip}: {e}")
return []
def check_vt_reputation(domain: str) -> dict:
"""Проверить репутацию домена через VirusTotal."""
url = f"{VT_BASE}/domains/{domain}"
headers = {"x-apikey": VIRUSTOTAL_KEY}
try:
r = requests.get(url, headers=headers, timeout=10)
r.raise_for_status()
stats = r.json()["data"]["attributes"]["last_analysis_stats"]
return {
"malicious": stats.get("malicious", 0),
"suspicious": stats.get("suspicious", 0),
"clean": stats.get("undetected", 0)
}
except Exception:
return {"malicious": 0, "suspicious": 0, "clean": 0}
def analyze_domain(domain: str, pivot_ip: bool = False):
"""Полный анализ домена через Passive DNS."""
print(f"\n{'='*60}")
print(f" Анализ домена: {domain}")
print(f"{'='*60}")
# Шаг 1: Пассивный DNS
print("\n[1/3] Получаю историю DNS-резолюций...")
records = get_passive_dns_st(domain)
if not records:
records = get_passive_dns_vt(domain)
if not records:
print(" [!] DNS-история не найдена ни в одном источнике")
return
# Дедупликация IP
ip_set = {}
for rec in records:
ip = rec["ip"]
if ip and ip not in ip_set:
ip_set[ip] = {
"first_seen": rec["first_seen"],
"last_seen": rec["last_seen"],
"source": rec["source"]
}
print(f" Найдено уникальных IP: {len(ip_set)}")
for ip, meta in ip_set.items():
print(f" {ip} | {meta['first_seen']} → {meta['last_seen']} | {meta['source']}")
# Шаг 2: Репутация
print("\n[2/3] Проверяю репутацию домена...")
rep = check_vt_reputation(domain)
flag = "🔴 ВРЕДОНОСНЫЙ" if rep["malicious"] > 3 else \
"🟡 ПОДОЗРИТЕЛЬНЫЙ" if rep["suspicious"] > 0 or rep["malicious"] > 0 else \
"🟢 Чистый"
print(f" VirusTotal: {rep['malicious']} malicious / "
f"{rep['suspicious']} suspicious / {rep['clean']} clean")
print(f" Статус: {flag}")
# Шаг 3: Pivot по IP (опционально)
if pivot_ip and ip_set:
print(f"\n[3/3] Pivot по IP — ищу связанные домены...")
for ip in list(ip_set.keys())[:3]: # анализируем первые 3 IP
related = reverse_ip_lookup(ip)
if related:
print(f" IP {ip} также обслуживал {len(related)} доменов:")
for r in related[:10]:
hostname = r.get("hostname", "")
if hostname and hostname != domain:
print(f" → {hostname}")
if len(related) > 10:
print(f" ... и ещё {len(related) - 10} доменов")
def main():
parser = argparse.ArgumentParser(
description="passivedns_hunter — анализ инфраструктуры через Passive DNS"
)
parser.add_argument("-d", "--domain",
help="Один домен для анализа")
parser.add_argument("-l", "--list",
help="Файл со списком доменов (по одному на строку)")
parser.add_argument("--pivot-ip", action="store_true",
help="Выполнить reverse IP pivot для каждого найденного IP")
args = parser.parse_args()
if not args.domain and not args.list:
parser.print_help()
sys.exit(1)
domains = []
if args.domain:
domains.append(args.domain)
if args.list:
with open(args.list) as f:
domains.extend(line.strip() for line in f if line.strip())
print(f"passivedns_hunter.py | Доменов для анализа: {len(domains)}")
for domain in domains:
analyze_domain(domain, pivot_ip=args.pivot_ip)
print(f"\n✅ Анализ завершён. Проверено доменов: {len(domains)}")
if __name__ == "__main__":
main()
9.3 Запуск и примеры
bash
<h2 id="analiz-odnogo-domena">Анализ одного домена</h2>
python passivedns_hunter.py -d sberbank-lk.ru
<h2 id="analiz-spiska-domenov-s-ip-pivot">Анализ списка доменов с IP-pivot</h2>
python passivedns_hunter.py -l suspicious_domains.txt --pivot-ip
<h2 id="primer-vyvoda">Пример вывода:</h2>
<h2 id="">============================================================</h2>
<h2 id="analiz-domena-sberbank-lk-ru">Анализ домена: sberbank-lk.ru</h2>
<h2 id="">============================================================</h2>
<h2 id="1-3-poluchayu-istoriyu-dns-rezolyutsiy">[1/3] Получаю историю DNS-резолюций...</h2>
<h2 id="naydeno-unikalnyh-ip-2">Найдено уникальных IP: 2</h2>
<h2 id="185-220-101-45-2024-03-10-2024-04-22-securitytrails">185.220.101.45 | 2024-03-10 → 2024-04-22 | SecurityTrails</h2>
<h2 id="194-165-16-29-2024-04-22-2024-04-30-securitytrails">194.165.16.29 | 2024-04-22 → 2024-04-30 | SecurityTrails</h2>
<h2 id="2-3-proveryayu-reputatsiyu-domena">[2/3] Проверяю репутацию домена...</h2>
<h2 id="virustotal-47-malicious-5-suspicious-38-clean">VirusTotal: 47 malicious / 5 suspicious / 38 clean</h2>
<h2 id="status-vredonosnyy">Статус: 🔴 ВРЕДОНОСНЫЙ</h2>
<h2 id="3-3-pivot-po-ip-ischu-svyazannye-domeny">[3/3] Pivot по IP — ищу связанные домены...</h2>
<h2 id="ip-185-220-101-45-takzhe-obsluzhival-34-domenov">IP 185.220.101.45 также обслуживал 34 доменов:</h2>
<h2 id="sberbamk-ru">→ sberbamk.ru</h2>
<h2 id="sberbank-support-ru">→ sberbank-support.ru</h2>
<h2 id="tinkoff-lk-ru">→ tinkoff-lk.ru</h2>10. Typosquatting и homograph-атаки: обнаружение доменов-двойников
Passive DNS помогает найти уже известные вредоносные домены. Но как обнаружить домен-двойник, который только что зарегистрирован и ещё не попал в базы? Для этого используется проактивный поиск по паттернам.
10.1 Генерация вариантов typosquatting
Библиотека `dnstwist` (Python) генерирует все возможные опечаточные варианты домена и проверяет, какие из них зарегистрированы.
bash
<h2 id="ustanovka">Установка</h2>
pip install dnstwist
<h2 id="bazovoe-ispolzovanie">Базовое использование</h2>
dnstwist --registered sberbank.ru
<h2 id="primer-vyvoda">Пример вывода:</h2>
<h2 id="sberbank-ru-original-a-92-63-96-162">sberbank.ru original ✓ (A: 92.63.96.162)</h2>
<h2 id="sberbamk-ru-transposition-a-185-220-101-45-zaregistrirovan">sberbamk.ru transposition ✓ (A: 185.220.101.45) ← ЗАРЕГИСТРИРОВАН</h2>
<h2 id="sberbnk-ru-deletion-a-194-165-16-29-zaregistrirovan">sberbnk.ru deletion ✓ (A: 194.165.16.29) ← ЗАРЕГИСТРИРОВАН</h2>
<h2 id="ssberbank-ru-repetition-ne-zaregistrirovan">ssberbank.ru repetition ✗ (не зарегистрирован)</h2>
<h2 id="sberbank-lk-ru-addition-a-185-220-101-45-zaregistrirovan">sberbank-lk.ru addition ✓ (A: 185.220.101.45) ← ЗАРЕГИСТРИРОВАН</h2>
<h2 id="s-dopolnitelnymi-proverkami-mx-whois-podobie-veb-stranits">С дополнительными проверками: MX, Whois, подобие веб-страниц</h2>
dnstwist --registered --mxcheck --whois sberbank.ru
10.2 Обнаружение homograph-атак
Для обнаружения доменов с визуально похожими символами (IDN homographs) используйте:
python
import unicodedata
def detect_homograph(domain: str) -> bool:
"""Проверить, содержит ли домен смешанные алфавиты (признак homograph)."""
scripts = set()
for char in domain.replace('.', '').replace('-', ''):
try:
script = unicodedata.name(char).split()[0]
scripts.add(script)
except ValueError:
pass
# Если в домене смешаны символы разных алфавитов — подозрительно
dangerous_mix = {'LATIN', 'CYRILLIC'} & scripts
return len(dangerous_mix) > 1
<h2 id="primery">Примеры:</h2>
<h2 id="detect-homograph-google-com-kirillicheskie-o-true-opasno">detect_homograph("gооgle.com") # Кириллические о → True (опасно)</h2>
<h2 id="detect-homograph-google-com-tolko-latinitsa-false-normalno">detect_homograph("google.com") # Только латиница → False (нормально)</h2>10.3 Passive DNS + dnstwist: комбинированный подход
Наиболее эффективная стратегия — сгенерировать список потенциальных typosquatting-доменов через dnstwist, а затем проверить каждый из них через Passive DNS на предмет истории активности:
bash
<h2 id="shag-1-poluchit-spisok-zaregistrirovannyh-variantov">Шаг 1: Получить список зарегистрированных вариантов</h2>
dnstwist --registered --format json sberbank.ru > variants.json
<h2 id="shag-2-izvlech-domeny">Шаг 2: Извлечь домены</h2>
python3 -c "
import json
with open('variants.json') as f:
data = json.load(f)
for d in data:
if d.get('dns_a'):
print(d['domain'])
" > registered_variants.txt
<h2 id="shag-3-proverit-cherez-passivedns-hunter">Шаг 3: Проверить через passivedns_hunter</h2>
python passivedns_hunter.py -l registered_variants.txt --pivot-ip
11. Мониторинг в реальном времени: как поймать домен в момент регистрации
Реактивный подход (анализировать домен после атаки) — необходим, но недостаточен. Зрелая защита предполагает обнаружение доменов-двойников в момент регистрации — до того, как атака началась.
11.1 Certificate Transparency — мониторинг новых сертификатов
Самый практичный бесплатный метод. Инструмент `certstream` получает поток новых TLS-сертификатов из CT Logs в реальном времени и позволяет фильтровать по ключевым словам.
bash
<h2 id="ustanovka">Установка</h2>
pip install certstream
<h2 id="skript-monitoringa-klyuchevyh-slov-brenda">Скрипт мониторинга ключевых слов бренда</h2>python
import certstream
import re
<h2 id="klyuchevye-slova-dlya-monitoringa">Ключевые слова для мониторинга</h2>
WATCH_KEYWORDS = ["sberbank", "tinkoff", "vtb", "alfabank", "gosuslugi"]
def callback(message, context):
if message.get("message_type") == "certificate_update":
domains = message["data"]["leaf_cert"]["all_domains"]
for domain in domains:
for keyword in WATCH_KEYWORDS:
if keyword in domain.lower() and domain != f"{keyword}.ru":
print(f"[!] Новый подозрительный домен: {domain}")
# Здесь можно добавить автоматическую проверку через Passive DNS
certstream.listen(callback, url="wss://certstream.calidog.io")
Этот скрипт в реальном времени выводит все новые домены с TLS-сертификатами, содержащими имена отслеживаемых брендов.
11.2 WhoisDS и DomainTools Iris — мониторинг новых регистраций
Платные сервисы `whoisds.com` и `domaintools.com/iris` предоставляют ежедневные дампы новых WHOIS-регистраций с возможностью фильтрации по ключевым словам.
Бесплатная альтернатива: `whoisds.com` продаёт дампы новых доменных имён (.ru, .com) за $5–15 в месяц — значительно дешевле enterprise-решений.
11.3 Passive DNS как система раннего обнаружения
Farsight DNSDB Monitor и аналогичные сервисы позволяют настроить алерты: как только домен с определённым паттерном впервые появляется в DNS-трафике — вы получаете уведомление.
Это позволяет обнаружить угрозу через несколько часов после начала активности домена — до того, как большинство пользователей с ним столкнётся.
12. Практические кейсы: разбор реальных фишинговых кампаний
12.1 Кейс: банковский фишинг через домены-опечатки
Ситуация: Служба безопасности банка получила несколько жалоб клиентов на мошеннический сайт. Адрес в жалобах — `sberbank-kabinet.ru`.
Расследование через Passive DNS:
Шаг 1 — Базовый запрос к SecurityTrails:
domain
: sberbank-kabinet.ru
IP история: 185.220.101.45 (2024-01-15 — 2024-02-03)
Шаг 2 — Reverse IP на 185.220.101.45:
Обнаружены ещё 28 доменов за тот же период, из них:
sberbank
-lk.ru
sberbank-lichkab.ru
sberbank-support-lk.ru
tinkoff-kabinet.ru
tinkoff-lk-online.ru
vtb-kabinet.ru
Шаг 3 — Temporal analysis:
Все 28 доменов зарегистрированы в один день — 2024-01-12. Это признак пакетной регистрации одной кампанией.
Шаг 4 — WHOIS pivot:
Все домены зарегистрированы через один регистратор с одинаковым NS.
Результат: Вместо одного домена обнаружена кампания из 28 доменов, нацеленная на клиентов пяти российских банков. Все 28 переданы в блок-листы и уведомления направлены соответствующим банкам.
12.2 Кейс: обнаружение C2-инфраструктуры через Fast Flux
Ситуация: Антивирусное ПО на корпоративном компьютере заблокировало обращение к домену `update-service-win.com`. Требуется понять масштаб угрозы.
Расследование:
Шаг 1 — Passive DNS показывает Fast Flux:
update
-service-win.com:
2024-06-01T09:00Z → 91.108.4.1
2024-06-01T09:08Z → 185.220.101.45
2024-06-01T09:15Z → 194.165.16.29
(смена IP каждые 5-10 минут — классический Fast Flux)
Шаг 2 — Все IP принадлежат Tor exit nodes и bulletproof-хостингу.
Шаг 3 — OTX AlienVault показывает, что домен связан с семейством ботнета.
Шаг 4 — Pivot по NS-серверам обнаружил ещё 15 C2-доменов той же кампании.
Результат: Все 16 доменов добавлены в DNS-блокировку, проведена проверка корпоративной сети на признаки заражения.
12.3 Кейс: защита бренда через проактивный мониторинг
Ситуация: Крупный e-commerce, мониторинг Certificate Transparency.
В потоке certstream замечено:
text
[!] Новый подозрительный домен: wildberries-skidki.ru
[!] Новый подозрительный домен: wildberries-akciya.ru
Оба домена зарегистрированы в один день, сертификаты выданы Let's Encrypt в течение часа после регистрации.
Passive DNS через 6 часов уже показывает активность — домены резолвятся в IP с историей фишинга.
Действия: Направлены уведомления об abuse к регистратору и хостеру, домены заблокированы провайдерами до начала массовой фишинговой кампании.
13. Защита организации: как выстроить систему обнаружения
Индивидуальные расследования важны, но системная защита предполагает процессы, работающие непрерывно.
13.1 Минимальный стек защиты (бесплатный)
Для малого и среднего бизнеса достаточно трёх инструментов:
Мониторинг сертификатов: `certstream` (Python-скрипт из раздела 11) — работает 24/7, бесплатно, не требует платной подписки.
Еженедельный typosquatting-скан: `dnstwist` по ключевым доменам бренда — занимает 5 минут, запускается по крону.
Проверка новых угроз: `OTX AlienVault` через API — поиск ваших доменов и IP в известных индикаторах угроз.
bash
<h2 id="cron-zadacha-ezhenedelnyy-skan-typosquatting">Cron-задача: еженедельный скан typosquatting</h2>
0 9 * * 1 python /opt/security/dnstwist_monitor.py >> /var/log/dnstwist.log 2>&1
13.2 Корпоративный стек (платный)
Для организаций с зрелой службой безопасности:
- Farsight DNSDB — основной источник Passive DNS-данных, интеграция с SIEM
- RiskIQ / Microsoft Defender TI — граф атрибуции угроз
- DomainTools Iris — мониторинг новых регистраций + WHOIS-история
- Recorded Future — автоматическая корреляция и оповещения
13.3 Интеграция с SIEM и SOAR
Passive DNS-данные наиболее ценны в связке с другими источниками. Типовые интеграции:
- Обогащение IOC (Indicators of Compromise) в SIEM: каждый новый домен в алертах автоматически проверяется через Passive DNS API
- Автоматическое добавление связанных доменов (pivot-результатов) в блок-листы NGFW и DNS-фильтров
- Корреляция Passive DNS с логами proxy-сервера: выявление обращений к известной вредоносной инфраструктуре
13.4 Внутренняя DNS-телеметрия
Собирайте DNS-логи собственного резолвера в корпоративной сети. Это создаёт «внутренний Passive DNS» — источник, который покрывает то, что внешние базы пропустили.
bash
<h2 id="vklyuchenie-logirovaniya-dns-zaprosov-v-bind9">Включение логирования DNS-запросов в BIND9</h2>
<h2 id="etc-bind-named-conf-options">/etc/bind/named.conf.options:</h2>
logging {
channel query_log {
file "/var/log/named/queries.log" versions 3 size 10m;
print-time yes;
print-severity yes;
severity info;
};
category queries { query_log; };
};
Полученные логи обрабатываются через ELK-стек или Graylog и становятся источником для обнаружения обращений к вредоносным доменам внутри организации.
14. FAQ: 12 горячих вопросов о Passive DNS
Q 01 Чем Passive DNS отличается от обычного DNS-запроса?
A Обычный DNS-запрос (dig, nslookup) показывает текущее состояние: какой IP у домена прямо сейчас. Passive DNS хранит историю всех наблюдавшихся резолюций с временны́ми метками — что позволяет видеть, где жил домен полгода назад и какие другие домены жили рядом.
Q 02 Пассивный DNS — это законно?
A Да. Passive DNS работает исключительно с публично наблюдаемыми DNS-данными — теми запросами, которые проходили через публичные резолверы и сенсоры. Это метаданные об IP-адресах и доменных именах, не содержащие персональных данных пользователей. Техника широко применяется в корпоративной безопасности и регуляторами.
Q 03 Почему бесплатные инструменты иногда не находят данные о свежем домене?
A Новые домены попадают в Passive DNS-базы с задержкой 6–48 часов — только после того, как реальные пользователи начнут их резолвировать через индексируемые резолверы. Только что зарегистрированный домен, к которому ещё не обращались, в базах отсутствует.
Q 04 Чем отличается Passive DNS от WHOIS?
A WHOIS содержит регистрационные данные домена (кто и когда зарегистрировал). Passive DNS содержит наблюдаемые DNS-резолюции (к каким IP обращался домен в реальном трафике). Это дополняющие, а не конкурирующие источники. В расследовании используются оба.
Q 05 Может ли атакующий скрыться от Passive DNS?
A Частично. Атакующий может использовать DNS over HTTPS (DoH) или Tor — тогда его трафик не проходит через публичные резолверы. Также короткое время жизни TTL снижает шансы попасть в базы. Однако полностью избежать Passive DNS при масштабной атаке практически невозможно — для этого нужен значимый публичный трафик, который фиксируется сенсорами.
Q 06 Что такое TTL и как он влияет на Passive DNS?
A TTL (Time to Live) — время, в течение которого DNS-ответ кэшируется резолвером. Очень низкий TTL (30–60 секунд) означает, что каждый запрос доходит до авторитативного сервера — и фиксируется сенсорами. Это парадокс Fast Flux: частые смены IP создают больше Passive DNS-записей, а не меньше.
Q 07 Зачем смотреть MX-записи в Passive DNS при анализе фишинга?
A Отсутствие MX-записи при наличии A-записи — типичный признак фишингового домена. Легитимный бизнес использует корпоративную почту на своём домене. Фишинговый сайт почты не отправляет — ему нужна только веб-страница. Наличие поддельных MX-записей, указывающих на инфраструктуру атакующего, говорит о Business Email Compromise (BEC).
Q 08 Как использовать Passive DNS для расследования инцидента в ретроспективе?
A Если инцидент произошёл 3 месяца назад, восстановите DNS-состояние на ту дату: какой IP имел вредоносный домен в момент инцидента, другие домены на том же IP, NS-серверы. Это позволяет атрибутировать атаку и понять, не связана ли она с текущими угрозами.
Q 09 Что такое «pivot» в контексте Passive DNS-расследования?
A Pivot — переход от одного индикатора к связанным. Классическая цепочка: домен → IP (через Passive DNS) → другие домены на том же IP (через Reverse IP) → другие IP тех же доменов → NS-серверы → другие домены с теми же NS. Каждый шаг расширяет картину инфраструктуры атакующего.
Q 10 Passive DNS работает для .onion-доменов?
A Нет. Домены .onion функционируют через сеть Tor и не резолвируются через публичные DNS-серверы. Passive DNS для них неприменим.
Q 11 Как отличить вредоносный домен на общем хостинге от легитимного?
A Shared-хостинг (один IP для тысяч сайтов) — стандартная практика, сам по себе не является признаком угрозы. Анализируйте в совокупности: репутацию IP в VirusTotal/AbuseIPDB, временну́ю близость регистрации с другими подозрительными доменами, typosquatting-паттерн и отсутствие легитимного контента на сайте.
Q 12 Нужны ли платные API для серьёзной работы с Passive DNS?
A Для разовых проверок бесплатных инструментов достаточно. Для регулярного мониторинга бренда и расследований с временно́й глубиной больше 2 лет — платные подписки (Farsight DNSDB, SecurityTrails) существенно расширяют возможности. Академические и некоммерческие организации часто получают бесплатный доступ по запросу.
15. Чек-лист: расследование поддельного домена за 20 минут
Фаза 0: Подготовка (2 мин)
- ☐ Зафиксировать подозрительный домен и дату обнаружения
- ☐ Открыть рабочий браузер или окружение с VPN
- ☐ Подготовить файл для записи результатов
Фаза 1: Базовый Passive DNS-запрос (5 мин)
- ☐ `securitytrails.com/domain/[домен]/dns` → история A-записей
- ☐ `virustotal.com/gui/domain/[домен]` → вкладка Relations → Resolutions
- ☐ Зафиксировать: все IP, time_first, time_last, количество наблюдений
- ☐ Проверить репутацию домена: сколько движков VT помечают как вредоносный
Фаза 2: Pivot по инфраструктуре (7 мин)
- ☐ Для каждого найденного IP: `securitytrails.com/list/ip/[IP]` → список доменов
- ☐ Проверить NS-серверы: `dig NS [домен]` → записать NS
- ☐ Поискать другие домены с теми же NS через SecurityTrails API
- ☐ Проверить сертификаты: `crt.sh/?q=%.[домен]` → поддомены и история
Фаза 3: Верификация (4 мин)
- ☐ WHOIS: `whois [домен]` → creation_date, registrar, name_server
- ☐ ASN-проверка: `ipinfo.io/[IP]/json` → репутация AS
- ☐ AbuseIPDB: `abuseipdb.com/check/[IP]` → история жалоб
- ☐ OTX AlienVault: `otx.alienvault.com/indicator/domain/[домен]` → известные угрозы
Фаза 4: Документирование и действия (2 мин)
- ☐ Сохранить скриншоты всех результатов с временны́ми метками
- ☐ Составить список связанных доменов (результаты pivot)
- ☐ Определить действие: блокировка, уведомление регистратора, abuse-report хостеру
- ☐ При инциденте: уведомить CERT (cert.ru для RU-зоны)
Итого: 20 минут — у вас есть полная картина инфраструктуры и список действий.
16. Заключение: Passive DNS как базовый навык аналитика угроз
Passive DNS — не экзотический инструмент для избранных. Это базовая техника, которая доступна бесплатно, не требует специального ПО и применима любым аналитиком, системным администратором или специалистом по безопасности.
1. Начните с бесплатных инструментов прямо сейчас — SecurityTrails, VirusTotal и crt.sh дают 80% возможностей без единой платной подписки
2. Освойте логику pivot-анализа — один домен через три шага разворачивается в полную инфраструктуру кампании
3. Внедрите проактивный мониторинг — скрипт на certstream занимает 30 строк кода и работает в реальном времени
4. Автоматизируйте рутину — скрипт `passivedns_hunter.py` из раздела 9 заменяет часы ручной работы
5. Комбинируйте источники — Passive DNS в связке с WHOIS, Certificate Transparency и Shodan даёт несравнимо более точную картину
6. Документируйте каждый шаг — в расследовании ценность имеют только воспроизводимые выводы с указанием источника и даты
> 🔒 Поддельный домен — это не конец атаки, а её начало. Passive DNS позволяет обнаружить угрозу до того, как жертвы успели пострадать. Это и есть смысл проактивной защиты.