Что индексируют Shodan и Censys
Обе платформы — поисковые системы по сетевым баннерам. Они не сканируют уязвимости и не эксплуатируют сервисы. Механика другая: распределённые зонды устанавливают TCP-соединение с портом, получают приветственный баннер (или отправляют минимальный запрос для HTTP, TLS, DNS) и сохраняют ответ в индекс. Результат — база данных, по которой можно искать так же, как по веб-страницам, только вместо текста страниц — метаданные сетевых сервисов.
Shodan индексирует баннеры с 2009 года. Покрытие включает HTTP, HTTPS, SSH, FTP, SMTP, SNMP, Modbus, BACnet, Telnet, RTSP, SIP и десятки других протоколов. Помимо баннеров, Shodan собирает данные из DNS, SSL-сертификатов, WHOIS и BGP-таблиц.
Censys вырос из исследовательского проекта Университета Мичигана (ZMap/ZGrab). Акцент сделан на TLS-сертификатах и структурированных данных о хостах. Censys предоставляет более детальный разбор цепочек сертификатов и поддерживает поиск по полям X.509.
Оба инструмента легитимно применяются для:
- инвентаризации собственной инфраструктуры и обнаружения забытых сервисов;
- оценки поверхности атаки организации (attack surface management);
- исследования распространённости протоколов и конфигураций;
- проверки корректности TLS-настроек;
- академических и журналистских расследований в рамках открытых данных.
Синтаксис поиска Shodan
Поисковая строка Shodan принимает ключевые слова и фильтры. Фильтры записываются как
ключ:значение и комбинируются пробелами (логическое И).Основные фильтры
| Фильтр | Назначение | Пример |
|---|---|---|
port | Номер порта | port:8080 |
org | Организация (по данным WHOIS/BGP) | org:"Example Corp" |
net | CIDR-диапазон | net:192.0.2.0/24 |
country | Код страны (ISO 3166-1 alpha-2) | country:RU |
city | Город | city:Moscow |
product | Определённый продукт | product:"Apache httpd" |
version | Версия продукта | version:"2.4.49" |
os | Операционная система | os:"Linux" |
hostname | Имя хоста из DNS | hostname:example.com |
ssl | Поиск по данным сертификата | ssl:"example.com" |
has_screenshot | Наличие скриншота | has_screenshot:true |
vuln | CVE (требует подписку) | vuln:CVE-2021-44228 |
Комбинирование и операторы
- Пробел между фильтрами — логическое И.
OR— логическое ИЛИ (пишется заглавными).
- Кавычки для фраз с пробелами:
org:"Acme Inc".
- Отрицание:
-port:80исключает порт 80.
Примеры запросов Shodan
Код:
## Все хосты в диапазоне с открытым Modbus (порт 502)
net:203.0.113.0/24 port:502
## Устройства с дефолтным баннером, содержащие строку "root" в SSH
port:22 "root" country:DE
## HTTPS-сервисы с сертификатом для домена example.com
ssl:"example.com" port:443
## Камеры с HTTP-интерфейсом, определённые как продукт Hikvision
product:"Hikvision" port:80
Синтаксис поиска Censys
Censys использует структурированный язык запросов, похожий на JSON-подобные выражения. Поля организованы по категориям:
services, location, dns, autonomous_system.Основные поля
| Поле | Назначение | Пример |
|---|---|---|
services.port | Порт | services.port: 443 |
services.service_name | Имя сервиса | services.service_name: HTTP |
services.tls.certificates.leaf.names | SAN/DNS из сертификата | services.tls.certificates.leaf.names: example.com |
location.country | Страна | location.country: Germany |
autonomous_system.organization | AS-организация | autonomous_system.organization: "Example ISP" |
dns.names | DNS-имена хоста | dns.names: sub.example.com |
Примеры запросов Censys
Код:
## Хосты с TLS-сертификатом, содержащим example.com в SAN
services.tls.certificates.leaf.names: example.com
## Открытые SSH на порту 2222 в определённой AS
services.port: 2222 AND services.service_name: SSH AND autonomous_system.organization: "Example Net"
## Хосты с DNS-записью, указывающей на поддомен
dns.names: api.example.com
Censys также поддерживает агрегации (facets) — группировку результатов по полю с подсчётом. Это полезно для аналитики: например, сколько хостов с определённым продуктом приходится на каждую страну.
Работа через CLI и API
Shodan CLI
Устанавливается через pip:
Bash:
pip install shodan
Инициализация с API-ключом (ключ выдаётся в личном кабинете на shodan.io):
Bash:
shodan init YOUR_API_KEY
Базовые команды:
Bash:
## Поиск и вывод результатов
shodan search "port:21 country:BR" --fields ip_str,port,org
## Информация о конкретном IP
shodan host 198.51.100.1
## Подсчёт результатов без загрузки
shodan count "product:\"nginx\" country:JP"
Бесплатный аккаунт Shodan даёт ограниченное число запросов в месяц (обычно 100 результатов на запрос). Для полного доступа нужна подписка.
Censys API
Censys предоставляет REST API (v2) и Python-библиотеку:
Bash:
pip install censys
Аутентификация требует API ID и API Secret из личного кабинета на search.censys.io:
Bash:
censys config
Пример поиска через CLI:
Bash:
censys search "services.port: 443 AND location.country: France" --index-type hosts --limit 10
Бесплатный тариф Censys также ограничен по числу запросов и глубине результатов.
Практические сценарии OSINT
Инвентаризация собственной инфраструктуры
Перед аудитом безопасности полезно узнать, что реально видно из интернета. Запрос по домену или CIDR организации покажет все сервисы, которые индексируют Shodan и Censys. Это помогает обнаружить:
- тестовые стенды, забытые после разработки;
- панели управления, доступные без VPN;
- устаревшие версии ПО, которые не учтены в CMDB;
- открытые порты, которые должны быть закрыты файрволом.
Проверка TLS-конфигурации
Поиск по
ssl: в Shodan или по полям сертификата в Censys позволяет проверить:- не используется ли самоподписанный сертификат на продакшн-сервисе;
- не истёк ли сертификат;
- какие SAN-записи содержит сертификат (иногда раскрывают внутренние имена хостов).
Исследование распространённости протоколов
Академические и журналистские задачи: сколько устройств в определённой стране используют конкретный протокол, какую долю занимает определённая версия ПО. Агрегации Censys и
facets Shodan подходят для этого без выгрузки полного набора данных.Связка с другими OSINT-инструментами
Результаты Shodan/Censys комбинируются с:
- RDAP (замена WHOIS) — для получения регистрационных данных домена или IP-диапазона. RDAP стандартизирован IETF и поддерживает машинно-читаемый формат ответа.
- Wayback Machine — для проверки, как менялся веб-интерфейс обнаруженного сервиса Wayback Machine для OSINT: как восстанавливать историю страницы и проверять изменения сайта.
- Certificate Transparency logs (crt.sh) — для поиска всех сертификатов, выпущенных для домена.
- DNS-перечисление — для расширения списка поддоменов перед запросом к Shodan/Censys.
Ограничения платформ
| Ограничение | Shodan | Censys |
|---|---|---|
| Полнота покрытия | Не все порты сканируются с одинаковой частотой | Аналогично; приоритет на TLS и HTTP |
| Задержка индексации | От часов до недель | От часов до недель |
| Бесплатный тариф | ~100 результатов на запрос | Ограниченное число запросов в месяц |
| Динамические IP | Хост может сменить IP между сканами | Аналогично |
| NAT и файрволы | Сервис за NAT может не индексироваться | Аналогично |
| False positives | Баннер может быть подделан (honeypot) | Аналогично |
Важно: отсутствие хоста в индексе не означает, что сервис недоступен. И наоборот — наличие в индексе не гарантирует, что сервис всё ещё активен прямо сейчас.
Этические и правовые рамки
Shodan и Censys индексируют только то, что сервисы сами отдают в ответ на подключение. Это публично доступные данные, аналогичные тому, что видит любой клиент при TCP-соединении. Тем не менее:
- Не используйте данные для несанкционированного доступа. Обнаружение открытого порта не даёт права подключаться к сервису, эксплуатировать уязвимость или извлекать данные.
- Соблюдайте законодательство юрисдикции. В ряде стран несанкционированное сканирование или подключение к чужим системам может квалифицироваться как правонарушение, даже если порт открыт.
- Для исследований на чужой инфраструктуре получайте согласие. Если задача — оценка поверхности атаки сторонней организации, это делается в рамках договора на пентест или bug bounty.
- Не публикуйте персональные данные. Если баннер содержит учётные данные, токены или PII, их распространение нарушает приватность и может быть незаконным.
Чек-лист перед началом работы
- Определите цель: инвентаризация своих активов, исследование протокола, проверка TLS — и сформулируйте запрос максимально узко.
- Зарегистрируйтесь на платформе, получите API-ключ, ознакомьтесь с лимитами тарифа.
- Начните с веб-интерфейса для подбора фильтров, затем автоматизируйте через CLI/API.
- Сохраняйте результаты с таймстампом: данные в индексе меняются, и снимок на конкретную дату ценен для воспроизводимости.
- Сопоставляйте результаты с RDAP, DNS и Certificate Transparency для перекрёстной проверки.
- Если обнаружен чужой сервис с признаками компрометации или утечки — сообщите владельцу через abuse-контакт, а не публикуйте детали открыто.
