"Если люди не могут найти что-то в Google, они думают, что это не сможет найти никто. Это не так", – Джон Мэзерли, создатель Shodan.
Shodan принято называть поисковиком по интернету вещей. Другими словами, это поисковая система которая ищет устройства подключенные к интернету. Устройства и информацию о них.
Использовать Shodan немного сложнее чем тот же Google. Но и предназначен он не для простых обывателей. Самым главным отличием является то, что Shodan анализирует Интернет, а Google анализирует World Wide Web. Устройств, подключенных к Всемирной паутине, значительно меньше, чем тех, которые действительно подключены к Интернету. И с каждым готом количество устройств Интернета вещей всё больше.
Сейчас всё больше устройств с подключением к сети. Принтеры, сканеры, веб-камеры, датчики и сенсоры, серверы, роутеры и другие сетевые устройства, системы умных домов, светофоры, системы отопления. Нагнетём немного: кардиостимуляторы, датчики паровых турбин на электростанциях, электронные дилдо... Все эти устройства формируют малоизученную "серую зону" сети, в которой находится не менее 4.8 млрд умных устройств с уникальными IP-адресами.
Сразу после появления поисковик Shodan стали называть в прессе "Чёрный Google для хакеров". Это понятно, к примеру, индустриальные системы управления (SCADA) и их базовые элементы — программируемые логические контроллеры — разработаны еще до эпохи Интернета. Сейчас они светят своими портами в Сеть и становятся целью для злоумышленников.
Как работает Shodan?
Принцип работы Shodan прост. Он ищет и собирает баннеры. Один из примеров баннера – это баннер веб-сервера т.е. заголовок. Чтобы увидеть заголовок веб-сервера можно, например, ввести команду:
curl -I https://internet-lab.ru
Заголовок может содержать разную техническую информацию. Этой информации может быть довольно много, и она довольно полезна.
Shodan извлекает баннеры с IP-адресов, а затем каталогизирует все типы устройств, которые имеют удаленный интерфейс со всего мира. По этому каталогу можно вести поиск.
Поиск
Поиском можно пользоваться как обычно. Хотя такой поиск может оказаться бесполезным из-за большого количества результатов поиска.
Для получения дополнительных возможностей требуется регистрация. Станет доступно больше результатов поиска, фильтры. Можно получить свой API ключ.
Чтобы сократить количество результатов, мы можем отфильтровать их. Сначала указываем сам запрос, потом пишем фильтр, через двоеточие значение для фильтра. Если значение состоит из нескольких слов то его нужно взять в кавычки.
запрос фильтр:значение
Наиболее популярные фильтры Shodan:
- country: – покажет данные по выбранной стране, например country:RU
- city: – покажет данные по выбранному городу, например city:Moskow
- os: – найти определенную операционную систему, например os:linux
- geo: – поиск по геопозиции, нужно указать координаты, например geo:"45.0746,39.0587"
- port: – покажет результаты только по выбранному порту, например port:22
- hostname: – будет искать только в определенной доменной зоне, например hostname:.ru
- net: – поиск в заданном сетевом диапазоне, например net:190.73.40.50/24
- product: – поиск по названию программы отдающей баннер, например product:openssh
Если мы хотим убрать из выдачи результаты по какому то фильтр, то перед фильтром нужно поставить знак минус.
Работать с Shodan можно из терминала. Понадобится библиотека Python для Shodan. Потом добавить свой API ключ. В общем, нужно почитать раздел для разработчиков.
Одна из фишек Shodan — привязка к гео, что позволяет отметить устройство на карте.
Shodan Exploit
А теперь рассмотрим то, что может нам, как администраторам сайтов или устройств, пригодиться. Shodan собирает уязвимости и эксплойты. На самом деле это и не сложно, получив из баннера тип ПО и его версию можно узнать каким уязвимостям данное ПО подвержено.
Например, узнаем что думает Shodan об уязвимостях нашего сайта. Понадобится наш IP.
https://internetdb.shodan.io/176.109.108.64
Получаем JSON:
{
"cpes": [
"cpe:/a:f5:nginx:1.18.0",
"cpe:/o:canonical:ubuntu_linux",
"cpe:/o:linux:linux_kernel",
"cpe:/a:jquery:jquery",
"cpe:/a:drupal:drupal:9",
"cpe:/a:php:php"
],
"hostnames": [
"internet-lab.ru"
],
"ip": "176.109.108.64",
"ports": [
80,
443
],
"tags": [
"eol-product"
],
"vulns": [
"CVE-2023-44487",
"CVE-2021-23017",
"CVE-2021-3618"
]
}
Опа, у нас на сайте найдено аж три уязвимости.
- CVE-2023-44487 — DoS уязвимость в протоколе HTTP/2, 7.5 баллов.
- CVE-2021-23017 — критическая RCE уязвимость в резолвере Nginx, 7.7 баллов.
- CVE-2021-3618 — уязвимость веб-сервера Nginx связана с логической ошибкой в реализации TLS, 7.4 балла.
Эти я исправил.
А ещё нам показывают открытые порты, имена хостов, найденное ПО и даже то, что используется ПО с тегом "eol-product". Да-да, на десятку я ещё не перешёл...