Shodan и Censys в OSINT: как искать открытые сервисы и устройства по открытым данным

Что индексируют 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"
netCIDR-диапазон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Имя хоста из DNShostname:example.com
sslПоиск по данным сертификатаssl:"example.com"
has_screenshotНаличие скриншотаhas_screenshot:true
vulnCVE (требует подписку)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.namesSAN/DNS из сертификатаservices.tls.certificates.leaf.names: example.com
location.countryСтранаlocation.country: Germany
autonomous_system.organizationAS-организацияautonomous_system.organization: "Example ISP"
dns.namesDNS-имена хоста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.

Ограничения платформ​


ОграничениеShodanCensys
Полнота покрытияНе все порты сканируются с одинаковой частотойАналогично; приоритет на TLS и HTTP
Задержка индексацииОт часов до недельОт часов до недель
Бесплатный тариф~100 результатов на запросОграниченное число запросов в месяц
Динамические IPХост может сменить IP между сканамиАналогично
NAT и файрволыСервис за NAT может не индексироватьсяАналогично
False positivesБаннер может быть подделан (honeypot)Аналогично

Важно: отсутствие хоста в индексе не означает, что сервис недоступен. И наоборот — наличие в индексе не гарантирует, что сервис всё ещё активен прямо сейчас.

Этические и правовые рамки​


Shodan и Censys индексируют только то, что сервисы сами отдают в ответ на подключение. Это публично доступные данные, аналогичные тому, что видит любой клиент при TCP-соединении. Тем не менее:

  • Не используйте данные для несанкционированного доступа. Обнаружение открытого порта не даёт права подключаться к сервису, эксплуатировать уязвимость или извлекать данные.
  • Соблюдайте законодательство юрисдикции. В ряде стран несанкционированное сканирование или подключение к чужим системам может квалифицироваться как правонарушение, даже если порт открыт.
  • Для исследований на чужой инфраструктуре получайте согласие. Если задача — оценка поверхности атаки сторонней организации, это делается в рамках договора на пентест или bug bounty.
  • Не публикуйте персональные данные. Если баннер содержит учётные данные, токены или PII, их распространение нарушает приватность и может быть незаконным.

Чек-лист перед началом работы​


  1. Определите цель: инвентаризация своих активов, исследование протокола, проверка TLS — и сформулируйте запрос максимально узко.
  2. Зарегистрируйтесь на платформе, получите API-ключ, ознакомьтесь с лимитами тарифа.
  3. Начните с веб-интерфейса для подбора фильтров, затем автоматизируйте через CLI/API.
  4. Сохраняйте результаты с таймстампом: данные в индексе меняются, и снимок на конкретную дату ценен для воспроизводимости.
  5. Сопоставляйте результаты с RDAP, DNS и Certificate Transparency для перекрёстной проверки.
  6. Если обнаружен чужой сервис с признаками компрометации или утечки — сообщите владельцу через abuse-контакт, а не публикуйте детали открыто.

Источники​


 
Назад
Верх Низ