Shodan: поисковик для IoT и незащищённых устройств

Вступление

Первый раз я услышал про Shodan лет десять назад в статье под заголовком «Google для хакеров». Заголовок был плохой, потому что вводил в заблуждение. Shodan это не «Google для хакеров». Это поисковик, который вместо сайтов индексирует устройства, подключённые к интернету: веб-камеры, роутеры, серверы, промышленные контроллеры, умные холодильники, всё что угодно.

Разница принципиальная. Google обходит сайты и складывает их содержимое в свой индекс. Shodan сканирует IP-адреса, «стучится» в разные порты, смотрит какие сервисы отвечают, что они о себе рассказывают, и всё это тоже складывает в индекс. В итоге получается карта интернета не с точки зрения контента, а с точки зрения инфраструктуры.

Пример из практики. Один запрос в Shodan webcamxp country:RU показывает список веб-камер, работающих в России под софтом WebcamXP. Многие из них торчат в открытый доступ без пароля, потому что владельцы просто не поменяли настройки по умолчанию. Формально сайт с картинкой доступен любому, и найти его через Shodan это ровно то же самое, что найти незапароленный ресурс через Google.

В этой статье разберём как работает Shodan, как им пользоваться, что искать, где границы закона в РФ и как защитить собственную сеть от того, чтобы её обнаружили этим же способом.

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

Чтобы понимать, зачем нужны те или иные операторы, полезно знать что происходит внутри.

Shodan постоянно сканирует IPv4-адресное пространство (около 4 миллиардов адресов). Не все сразу, а по кругу, разными порциями. На каждый IP он «стучится» на популярные порты: 21 (FTP), 22 (SSH), 23 (Telnet), 80 (HTTP), 443 (HTTPS), 3389 (RDP), 5900 (VNC), 27017 (MongoDB), тысячи других.

Если порт открыт и сервис отвечает, Shodan получает баннер это техническая карточка сервиса. В баннере обычно указано что за софт, какая версия, какая операционная система на хосте, иногда даже конфигурация. Например, веб-сервер может ответить Server: Apache/2.4.41 (Ubuntu) то есть Apache версии 2.4.41 на Ubuntu.

Всю эту информацию Shodan индексирует и делает доступной для поиска. Ты можешь искать не по «содержимому сайта», а по «версии Apache», «типу камеры», «стране размещения сервера» и десяткам других параметров.

Легально ли это? Да. Shodan просто отправляет обычные запросы на публичные IP-адреса и записывает публичные ответы. Никаких паролей не подбирает, никакие защищённые системы не взламывает. Всё, что видит Shodan это то, что владелец сервиса сам выставил в интернет без ограничений.

Регистрация и первый запуск

Заходишь на shodan.io, кликаешь Register в правом верхнем углу. Регистрация классическая: email, пароль, подтверждение через письмо.

Бесплатный аккаунт даёт:

До 50 результатов на один поиск (обычно достаточно для ознакомления)

Использование через веб-интерфейс

Ограниченный доступ к фильтрам (некоторые операторы работают только с платным)

Один API-ключ с очень скромными лимитами

Платные тарифы начинаются с 69 долларов за одноразовую «пожизненную» подписку Membership. Есть и месячные тарифы Freelancer, Small Business, Corporate от 59 долларов в месяц. Для обычного OSINT-специалиста хватает Membership.

Первый поиск. После логина в верхней строке вводишь что-нибудь простое, например webcam. Shodan покажет тысячи результатов с превью баннеров, IP-адресами, странами. Кликаешь на любой результат подробная карточка хоста: все открытые порты, версии сервисов, история сканов.

Базовые операторы Shodan

Как и в Google Dorks, магия начинается с операторов. Основные, которые нужно знать.

country

country:RU

Ограничивает поиск конкретной страной. Двухбуквенные коды по стандарту ISO: RU (Россия), US (США), CN (Китай), DE (Германия). Полный список стран есть в документации Shodan.

Комбинируется с любыми другими запросами: apache country:RU покажет Apache-серверы в России.

city

city:"Moscow"

Уточняет город. Кавычки нужны, если название из нескольких слов или на английском. Работает через геоданные IP, точность зависит от базы: обычно определяется до крупного города.

org

org:"Yandex"

Ищет устройства, принадлежащие конкретной организации. Данные берутся из WHOIS-информации по IP-адресам. Полезно для проверки собственной компании: org:»Мояфирма ООО» покажет всё, что торчит наружу с ваших диапазонов.

port

port:22

Показывает только устройства с открытым конкретным портом. port:22 это SSH, port:3306 это MySQL, port:3389 это RDP (удалённый рабочий стол Windows), port:27017 это MongoDB.

Один из самых частых операторов в OSINT: с его помощью ищут открытые сервисы, которых там быть не должно.

product

product:"Apache httpd"

Ищет по названию софта. Полезно, когда нужно найти уязвимые версии конкретной программы. Часто комбинируется с версией: product:»Apache httpd» version:2.4.1.

hostname

hostname:.gov.ru

Ищет по имени хоста. Точка в начале это wildcard: .gov.ru найдёт всё, что заканчивается на .gov.ru. Полезно для аудита конкретного домена или зоны.

net

net:192.168.0.0/16

Ищет в конкретной подсети (CIDR-нотация). Не для обычного пользователя, а для сисадминов и безопасников: net:203.0.113.0/24 проверит одну сеть на 256 адресов.

os

os:"Windows 10"

Ищет по операционной системе. Shodan определяет её по характерным признакам в баннерах.

has_screenshot

webcam has_screenshot:true

Показывает только те устройства, для которых Shodan сумел сделать скриншот главного экрана. Работает для веб-камер, некоторых веб-интерфейсов, VNC. Очень наглядно.

Практические запросы

Теперь несколько готовых сценариев, которые реально используются в работе.

Найти открытые веб-камеры

webcamxp country:RU

WebcamXP это программа для трансляции веб-камер, часто оставленная в дефолтной конфигурации без пароля. Аналогичные запросы: product:»WebcamXP», title:»Live View / — AXIS» для камер Axis, title:»Network Camera» для типовых сетевых камер.

Что с этим делать. Смотреть можно (это публичный контент), пытаться подключиться, менять настройки, использовать в своих целях категорически нельзя. Если камера явно чья-то (магазин, офис, детский сад), лучше сообщить владельцу через контакты на связанном сайте.

Найти уязвимые базы данных

product:"MongoDB" port:27017

MongoDB в старых версиях по умолчанию слушала на всех интерфейсах без пароля. За последние годы в открытый доступ утекли миллионы записей из таких баз. Аналогично для product:»Elasticsearch» port:9200 и product:»Redis» port:6379.

Что с этим делать. Проверить свою компанию по таким запросам обязательно. Заглядывать в чужие базы уголовно наказуемо (статья 272 УК РФ, о ней ниже).

Найти промышленные системы (SCADA/ICS)

port:502

Порт 502 это протокол Modbus, использующийся в промышленной автоматике. Найденные устройства это часто оборудование заводов, энергосистем, водопроводов, оставленное с открытым портом по недосмотру. Аналогично port:47808 для BACnet (системы управления зданиями), port:44818 для EtherNet/IP.

Что с этим делать. Тема серьёзная. С 2022 года это подпадает под усиленный контроль. Просто смотреть можно, всё остальное риск попадания под статью 274.1 УК РФ (неправомерное воздействие на критическую информационную инфраструктуру).

Найти умные устройства в открытом доступе

product:"WeMo Switch"

Умные розетки, лампочки, термостаты часто ставятся без переконфигурации и торчат в интернете. То же самое с сетевыми принтерами: port:9100, с NAS-накопителями: port:5000 Synology.

Что с этим делать. Для собственной сети проверить обязательно. Для чужих просто аналитический интерес.

Проверить свою домашнюю сеть

ip:ТВОЙ_ВНЕШНИЙ_IP

Узнай свой внешний IP на сайте типа whatismyip.com, потом введи запрос ip:… в Shodan. Увидишь всё, что торчит из твоей сети наружу. У большинства обычных пользователей ничего не покажется (провайдер использует NAT), но если у тебя белый IP, там может быть много интересного.

Shodan CLI и API

Веб-интерфейс удобен для разовых запросов. Для регулярной работы или автоматизации есть командная утилита и API.

Установка

Через pip (Python 3.8+):

pip install shodan

Проверка:

shodan --version

Инициализация

Скопируй API-ключ из личного кабинета shodan.io (раздел My Account), инициализируй утилиту:

shodan init YOUR_API_KEY

Ключ сохранится локально, дальше все команды будут использовать его автоматически.

Основные команды

Поиск с выводом IP и порта:

shodan search --fields ip_str,port,org --limit 20 apache

Подсчёт количества результатов без вывода (не расходует лимит):

shodan count "product:MongoDB port:27017"

Информация о конкретном хосте:

shodan host 8.8.8.8

Статистика по своему аккаунту:

shodan info

Скачивание результатов в файл для дальнейшего анализа:

shodan download output_file "port:22 country:RU" --limit 100

shodan parse output_file.json.gz --fields ip_str,port

API для скриптов

Пример на Python: получаем список открытых MongoDB в России, сохраняем в CSV.

import shodan

import csv

api = shodan.Shodan("YOUR_API_KEY")

results = api.search("product:MongoDB port:27017 country:RU", limit=100)

with open("mongodb_ru.csv", "w", newline="") as f:

    writer = csv.writer(f)

    writer.writerow(["IP", "Port", "Org", "City"])

    for match in results["matches"]:

        writer.writerow([

            match["ip_str"],

            match["port"],

            match.get("org", ""),

            match.get("location", {}).get("city", ""),

        ])

За полчаса можно собрать данные, на ручной перебор которых ушёл бы день.

Что делать с найденным

Здесь начинается самое важное. Shodan даёт доступ к огромному объёму информации об инфраструктуре, но использование этой информации регулируется законом.

Что законно всегда. Искать. Изучать баннеры. Смотреть скриншоты, которые Shodan получил сам. Использовать данные для проверки собственной инфраструктуры или в рамках согласованного пентеста. Отчитываться о найденном в академических или журналистских материалах в обезличенном виде.

Что незаконно. Пытаться подключиться к найденным сервисам без согласия владельца. Использовать найденные логины и пароли, даже если они «валяются в открытом доступе». Скачивать данные из баз, к которым доступ был явно не предназначен для публики. Публиковать конкретные адреса уязвимых устройств с идентификацией владельцев.

Ответственное сообщение (responsible disclosure). Если ты нашёл уязвимость в чужой инфраструктуре и хочешь поступить правильно, найди контакты компании (обычно на сайте есть страница security.txt или контакты в разделе «О компании»), напиши им письмо с описанием проблемы. Дай им время исправить (обычно 30-90 дней), только потом можно рассказать публично. Это международная практика, её признают и в России.

Юридические границы в РФ

Статья 272 УК РФ (неправомерный доступ к компьютерной информации): любая попытка подключиться к чужой системе, даже открытой, если это привело к копированию, модификации, блокированию данных. Штраф до 200 тысяч рублей или лишение свободы до 2 лет.

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

152-ФЗ (о персональных данных): если ты через Shodan нашёл базу с персональными данными и начал их собирать/использовать, это отдельное нарушение.

Практическая рекомендация: относись к Shodan как к инструменту разведки, а не как к отмычке. Смотреть можно, трогать нельзя.

Похожие сервисы

Shodan не единственный. Дальше короткий обзор конкурентов и альтернатив.

Censys (censys.io). Похож на Shodan по концепции, но делает акцент на TLS/SSL-сертификатах. Отличный инструмент для отслеживания фейковых доменов, сертификатной активности компаний, поиска связанных инфраструктур. Бесплатный тариф щедрее, чем у Shodan.

ZoomEye (zoomeye.org). Китайский аналог Shodan. Хорошо покрывает азиатский регион, где Shodan сканирует реже. Интерфейс на английском есть.

BinaryEdge (binaryedge.io). Молодой сервис с интересными фичами: помимо баннеров, отслеживает утечки данных, публичные пасты, ботнет-трафик. Полезен как дополнение к Shodan.

Fofa (fofa.info). Ещё один китайский сервис. Синтаксис поиска отличается, для некоторых задач находит то, что Shodan не показывает.

LeakIX (leakix.net). Специализируется на находках, содержащих потенциальные утечки: незащищённые S3-корзины, открытые ElasticSearch с данными, ошибки конфигурации.

На практике: используй Shodan как основной, Censys как второй мнением, остальные подключай под конкретные задачи.

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

Если у тебя есть домашний сервер, роутер с проброшенными портами, свой сайт на VPS или бизнес-инфраструктура, ты обязан регулярно проверять что о тебе знает Shodan.

Первым делом проверь себя. Введи в поиске Shodan свой IP или домен. Если что-то нашлось, разбирайся: должно ли это торчать в интернет или это забытая настройка.

Закрой лишние порты. На домашнем роутере отключи UPnP (эта функция автоматически открывает порты по запросу программ, часто без ведома владельца). Проверь список проброшенных портов в настройках роутера, удали то, что не используешь.

Смени пароли и порты по умолчанию. Если у тебя есть NAS, IP-камера, умные устройства с веб-интерфейсом, поменяй пароли admin/admin и стандартные порты на нестандартные. Это не полная защита, но отсеивает большую часть автоматических сканов.

Используй файрвол. На сервере включи iptables/ufw или Windows Firewall. Разрешай только те порты, которые реально нужны, все остальные явно блокируй.

VPN для доступа к сервисам. Если тебе нужен удалённый доступ к домашнему серверу или RDP на работе, не выставляй эти порты в интернет напрямую. Настрой VPN (OpenVPN, WireGuard) и подключайся через него, тогда внешне ничего не видно.

Регулярный аудит. Раз в квартал прогоняй свой IP и домен через Shodan и Censys. Если появилось что-то новое, выясняй причину.

Что дальше

Shodan это фундаментальный инструмент для OSINT в области инфраструктуры и IoT. Дальше логично двигаться в сторону смежных тем.

Если ты ещё не читал статью про Google Dorks, начни с неё. Логика поиска очень похожая, а операторы дополняют друг друга: Google показывает открытые сайты и документы, Shodan открытые сервисы и устройства.

Следующие темы, которые буду разбирать: OPSEC (как самому не оставлять следов, зеркальное отражение Shodan-осмотра), поиск по фото (уже частично рассматривался в статье про поиск по нику), Wayback Machine и работа с архивами удалённых страниц.

Если у тебя есть конкретные запросы, которые не сработали, или своё применение Shodan, о котором хочется прочитать в отдельном разборе, пиши в комментариях. Разберём.

Оставьте комментарий