Найти в Дзене
Игорь Сотников

Shodan – Хождение по лезвию бритвы. Часть 2.

Примеры поиска

Чтобы было более понятно, как все это работает давайте, посмотрим реальные примеры поиска. Давайте, для примера найдем веб-камеры, в Москве, которые используют порт 8080:

webcam country:RU city:Moscow port:8080

-2

Теперь, для разнообразия, давай найдем, например, сервера nginx, под управлением операционной системы Linux, с открытым портом 5000

nginx os:linux port:5000

-3

Как видите, таких серверов не мало. Полученные результаты мы можем дополнительно отфильтровать по параметрам которые мы видим в таблице слева. А если выберем какой-то конкретный результат, то увидим развернутую информацию о нем. В том числе IP-адрес, геопозицию, страну, какие порты открыты, какие службы эти порты используют, ну и, конечно, баннеры этих служб.

Я думаю, с тем, как формировать запросы Shodan более-менее понятно. Это, конечно, один из самых важных моментов, но далеко не все о чем нужно и важно знать.

Shodan CLI

Работать с Shodan можно не только через сайт, но и прямо из терминала. Причем в некоторых ситуациях так даже удобнее и быстрее. Для начала нужно установить библиотеку Python для Shodan. Потом добавить свой API ключ, чтобы его получить нужно зарегистрироваться на сайте и перейти в раздел My Account.

sudo apt install python3-shodan

shodan init API

shodan

Вводим команду Shodan и видим справку по использованию.

Использование: shodan [OPTIONS] COMMAND [ARGS]…

Опции:

-h, --help Показать это сообщение и выйти.

Команды:

alert Управление сетевыми оповещениями для вашей учетной записи

convert Преобразовать указанный файл входных данных в другой формат

count Возвращает количество результатов поиска.

data Массовый доступ к Shodan

domain Просмотр всей доступной информации для домена

download Скачать результаты поиска и сохраните их в формате JSON

honeyscore Проверить, является ли IP-адрес приманкой или нет.

host Просмотр всей доступной информации по IP-адресу

info Показать общую информацию о вашей учетной записи

init Инициализировать командную строку Shodan

myip Показать внешний IP-адрес

org Управление доступом вашей организации к Shodan

parse Извлечь информацию из файлов JSON.

radar Карта некоторых результатов в реальном времени, когда их находит Shodan.

scan Сканирование IP/netblock с помощью Shodan.

search Поиск в базе данных Shodan

stats Показать сводную информацию о поисковом запросе

stream Потоковая передача данных в реальном времени.

version Версия для печати этого инструмента.

Это общая справка по Shodan. Также по каждой команде есть дополнительные фильтры и параметры, которые можно указать. Например, чтобы увидеть фильтры для команды search:

shodan search -h

-4

Теперь давай разберемся как это все работает. Алгоритм в принципе довольно простой. Зависит, конечно, от ситуации, но в большинстве случаев можно начать с команды count, она покажет сколько всего результатов по интересующему нас запросу. Например, давай глянем сколько в России серверов nginx с открытым портом 443:

shodan count nginx port:443 country:RU

Видим из ответа, что таких серверов немерено. И лопатить такое количество, какие бы мы цели не преследовали, смысла нет. Запрос надо уточнять. Как видишь эта команда позволяет нам быстро оценить возможное количество результатов поиска.

Следующая команда, которую придется применять частенько это download. Она позволяет сделать поиск по нашему запросу и скачать результаты в файл JSON, в котором каждая новая строка это новый баннер. По умолчанию скачивает первую тысячу результатов. Если нужно другое количество, то используется параметр –limit.

shodan download nginx port:5555 country:RU

-5

Если нужно обработать данные, полученные командой download, используем команду parse, после которой перечисляем поля, по которым хотим отфильтровать данные. Например:

shodan parse --fields ip_str,org,location nginx.json.gz

-6

Следующая команда host. Позволяет просмотреть информацию о хосте.

-7

Ну и одна из самых актуальных команд, просто потому что она позволяет делать то что мы перед этим делали в браузере т.е. искать. Пишем команду search и указываем нужный нам поисковый запрос, который формируем точно также как мы делали в браузере. Если нужно вывести результат только по определенным значениям добавляем параметр –fields. Т.е. также как мы делали при использовании команды parse.

shodan search webcam country:RU city:Moscow port:8080

-8