Поисковики по устройствам: Shodan, Censys

Shodan и Censys — это поисковики не по сайтам, а по подключённым к сети устройствам; научимся искать в них свои забытые сервисы раньше злоумышленника.

Поисковик по устройствам — сервис, который постоянно сканирует адресное пространство интернета, собирает баннеры сервисов (ответы на портах) и делает их доступными для поиска по фильтрам.

Если Google индексирует страницы, то Shodan и Censys индексируют сами сервисы: какой софт слушает на порту, какой версии, что написано в его приветственном баннере, какой сертификат он отдаёт. Для защитника это бесценный инструмент самопроверки: одним запросом увидеть всё, что ваша организация по ошибке выставила в открытый интернет.

Зачем это знать защитнику

Реальные взломы часто начинаются не с хитрого эксплойта, а с забытого сервиса: тестовая база Elasticsearch без пароля, панель управления, оставленная на публичном IP, RDP, открытый «на пять минут» полгода назад. Shodan находит такое за секунды — и злоумышленники активно этим пользуются. Значит, вы обязаны находить это первыми. Принцип защитника здесь: «если это видит Shodan — считайте, что это уже нашли».

Что именно видят эти поисковики

Сканер подключается к популярным портам и сохраняет баннер — то, что сервис сам о себе сообщает. По баннеру определяется продукт и версия, а часто и страна, организация-владелец IP, имя хоста из обратного DNS. Censys вдобавок строит структурированную модель: разбирает TLS-сертификаты, заголовки HTTP, поля протоколов в JSON.

HTTP/1.1 200 OK
Server: nginx/1.18.0
X-Powered-By: Express

# Баннер раскрывает: веб-сервер nginx 1.18.0 и бэкенд на Express.
# Версия позволяет проверить, есть ли у неё известные уязвимости (CVE).

Главный риск — раскрытие версий и продуктов. Зная, что у вас nginx/1.18.0 или конкретная CMS, разведчик сверяется с базами CVE и сразу понимает, какие уязвимости стоит пробовать. Поэтому сокрытие версий в баннерах — базовая гигиена.

Язык фильтров: как искать СВОЁ

Сила этих поисковиков — в фильтрах. Защитник использует их, чтобы очертить свою поверхность. Запросы выполняют в веб-интерфейсе или через CLI/API по своим активам:

# Все хосты в вашем диапазоне адресов (пример для лаборатории/своей сети):
shodan search net:203.0.113.0/24

# Сервисы, ассоциированные с вашей организацией по данным реестра:
shodan search org:"Your Company Name"

# Хосты с вашим доменом в сертификате:
shodan search ssl:example.com

Полезные фильтры для самоаудита: net: (ваш CIDR-диапазон), org: и asn: (по владельцу адресов), ssl: и hostname: (по домену), port: (конкретный сервис). У Censys аналогичный язык запросов по полям, например services.port: 3389 для поиска открытого RDP в своём пространстве.

Красные флаги при самопроверке

  • Базы данных на публичном IP: Elasticsearch (9200), MongoDB (27017), Redis (6379), PostgreSQL (5432) — почти всегда должны быть закрыты от интернета.
  • Удалённый доступ наружу: RDP (3389), VNC (5900), Telnet (23), голый SSH на стандартном порту без ограничений.
  • Панели управления и dev-стенды: Kibana, Jenkins, phpMyAdmin, страницы с заголовком staging/test.
  • Просроченные или самоподписанные сертификаты, дефолтные баннеры оборудования.

Как это работает под капотом

Поисковик не атакует — он делает то же, что любой клиент: открывает TCP-соединение к порту и читает первый ответ. Сервис, настроенный отвечать всем подряд, сам рассказывает о себе. Это и есть ключевая мысль: информацию выдаёт не Shodan, а ваш сервис, доступный из интернета. Censys и Shodan лишь делают эти ответы удобными для поиска и хранят их историю, так что даже кратковременно открытый порт может остаться в индексе.

Как защититься

  • Регулярно ищите себя. Поставьте ежемесячную проверку Shodan/Censys по своим net:, org:, ssl:. У Shodan есть Monitor, присылающий алерт при появлении нового открытого порта в вашем диапазоне.
  • Сократите поверхность. Каждый публичный порт должен иметь причину быть открытым. Управляющие интерфейсы, базы и dev-стенды — за VPN или в приватной сети, а не на белом IP.
  • Прячьте версии в баннерах. server_tokens off; в nginx, скрытие версий СУБД и почтовых демонов — чтобы не дарить разведчику готовый список CVE.
  • Фильтруйте по источнику. Ограничивайте доступ к чувствительным сервисам по списку IP/сетей через файрвол и security-группы; меняйте дефолтные креды немедленно.
  • Удаляйте временное. Открыли порт «на время» — заведите задачу закрыть его и доведите до конца; временные правила любят становиться постоянными.

Правовая рамка: искать в Shodan/Censys по публичному индексу законно. Но подключаться к найденным чужим открытым сервисам, тем более логиниться, — это уже несанкционированный доступ (ст. 272 УК РФ), даже если пароль пуст. Проверяйте и подключайтесь только к своей или письменно разрешённой инфраструктуре.

Итоги

  • Shodan и Censys индексируют сервисы по их баннерам — то, что хост сам сообщает на открытом порту.
  • Главная ценность для защитника — найти свои забытые открытые базы, панели и порты раньше злоумышленника.
  • Фильтры net:, org:, ssl: очерчивают вашу поверхность; Monitor алертит о новых открытых сервисах.
  • Защита: сокращать число публичных портов, прятать версии, ограничивать доступ файрволом и регулярно искать себя.
Проверьте себя
1. Чем поисковик по устройствам (Shodan, Censys) принципиально отличается от обычного веб-поисковика?
AОн индексирует только сайты на HTTPS
BОн индексирует сервисы по их баннерам на открытых портах, а не содержимое страниц
CОн сканирует только локальные сети
DОн работает исключительно по доменным именам
2. Почему защитнику важно скрывать версии ПО в баннерах сервисов?
AЭто ускоряет загрузку страниц
BЗная точную версию, разведчик по базам CVE сразу подбирает подходящие уязвимости
CБез версии сервис работает быстрее
DЭто требование GDPR