ГЛУБИННЫЙ ПОИСК С ИНСТРУМЕНТАРИЕМ SHODAN
Что
такое Shodan? Его принято называть поисковиком по интернету вещей.
Т.е., другими
словами, это поисковая система которая ищет устройства подключенные к интернету.
Устройства и информацию о них. Использовать Shodan немного сложнее.
Как работает Shodan
Принцип работы Shodan, на самом деле, очень прост. Он ищет и собирает
баннеры. Не те что на зданиях, а те которые описывают службу, используемую на
устройстве. Баннер для Shodan это основная единица информации. Не только баннер
конечно, но об этом чуть позже.
Один из примеров баннера — это баннер веб-сервера т.е. заголовок. Чтобы
увидеть заголовок веб-сервера можно ввести команду:
curl -I https://hacker-basement.ru
Что мы узнаем из этого заголовка? В первую очередь мы видим, что
используется протокол HTTP и код статуса 200.
По кодам статусов можно понять как реагирует сервер на запрос:
200 — все хорошо, запрос успешный;
300 — перенаправление на другую страницу;
400 — проблема с запросом;
500 — проблема с сервером.
После этого идет непосредственно сам заголовок. В котором содержится
разнообразная техническая информация. Грубо говоря, смысл в том, что в абсолютно
любом протоколе есть баннер. А в абсолютно любом баннере есть техническая
информация. Она, конечно, отличается в зависимости от протокола, но смысл, я
думаю, понятен. Именно эти данные и собирает
Shodan. А учитывая что, очень
часто, в баннере содержится довольно много данных описывающих само устройство,
это может быть очень полезно. Помимо этого Shodan также собирает метаданные
устройства. Например геолокацию, операционную систему и т.д.
Поиск
Перед тем как начинать работать с Shodan есть смысл там
зарегистрироваться. Это имеет смысл хотя бы потому, что нам станет доступно
больше результатов поиска, фильтры и можем получить свой API ключ. Он
понадобится немного позже. Переходим непосредственно к поиску.
Самый простой вариант поиска — это ввести название или производителя
нужного нам устройства. Например если мы введем tp-link то справа увидим
найденные устройства и их баннеры, а слева некоторые статистические данные, по
которым также можно отфильтровать устройства. Также нужно помнить, что это не
Google, а потому запрос для поиска обрабатывается как точное выражение, без
всяких вариаций.
Подобный поиск вряд ли может быть полезен из-за огромного
количества результатов. Например только если заниматься сбором статистики.
Тут ещё
нужно отметить, что по умолчанию Shodan показывает результаты собранные за
последние 30 дней и ищет только по баннерам, не принимая в учет метаданные.
Чтобы исправитьэту ситуацию и конкретизировать результаты поиска нужно
использовать фильтры.
Фильтры Shodan
Фильтры — это, по сути, просто конкретизация запроса. Они работают как
уточнение запроса.
Тут нужно учитывать, что чтобы максимально эффективно
использовать Shodan нужно очень хорошо понимать: во-первых что ты хочешь найти,
а во-вторых как работает нужное тебе устройство: какое программное обеспечение
использует, какие у него бывают версии, какой протокол, ну и другую техническую
информацию в зависимости от устройства.
Да и вообще для практики и тренировки неплохо будет изучить что и как
люди ищут. Для этого Shodan собирает наиболее популярные запросы:
https://www.shodan.io/explore/popular?page=1
Теперь более подробно о самих фильтрах. Как видно запрос tp-link дал нам
почти полтора миллиона результатов. Это очень много.
Что бы
сократить количество результатов, можно отфильтровать их по
стране. Для этого используется фильтр country и, после двоеточия, без пробелов
указываем код страны.
Например: tp-link country:RU покажет результаты по России. Чтобы было
легче использовать этот фильтр ниже таблица с кодами стран:
По такому же принципу работают и другие фильтры. Т.е. логика их
использования такая: сначала указываем сам запрос, а потом пишем фильтр и через
двоеточие, без пробела, значение для фильтра. Если значение состоит из
нескольких слов то его нужно взять в кавычки.
запрос фильтр:значение
Наиболее популярные фильтры 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
Также нужно знать, что если мы хотим убрать из выдачи результаты по какому
то фильтру, то перед фильтром нужно поставить знак минус, например если написать
country:UA -city:Kiev, то нам покажет все результаты поиска по
Украине, без
результатов по Киеву. По такому же принципу это работает и с другими фильтрами.
Примеры поиска в Shodan
Чтобы было более понятно, как все это работает давай посмотрим реальные
примеры поиска. Для примера найдем вебкамеры, в Москве, которые
используют порт 8080:
webcam country:RU city:Moscow port:8080
Теперь, найдем, например, сервера nginx, под
управлением операционной системы Linux, с открытым портом 5000
nginx os:linux port:5000
Таких серверов очень много. Полученные результаты можно
дополнительно отфильтровать по параметрам которые мы видим в таблице слева. А
если выберем какой-то конкретный результат, то увидим развернутую информацию о
нем. В том числе IP-адрес, геопозицию, страну, какие порты открыты, какие службы
эти порты используют, ну и кончено баннеры этих служб.
Я думаю, с тем как формировать запросы Shodan более-менее понятно. Это,
кончено, один из самых важных моментов, но далеко не все о чем нужно и важно
знать.
Shodan CLI
Работать с Shodan можно не только через сайт, но и прямо из терминала.
Причем в некоторых ситуациях так даже удобнее и быстрее. Для начала нужно
установить библиотеку Python для Shodan. Потом добавить свой API ключ, чтобы его
получить нужно зарегистрироваться на сайте и перейти в раздел My Account.
sudo apt install python3-shodan
shodan init API
shodan
Вводим команду 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 - версия для печати этого инструмента
Также по каждой команде есть дополнительные
фильтры и параметры которые можно указать. Например, что бы увидеть фильтры для
команды search:
shodan search -h
Теперь раcсмотрим как это все работает. Алгоритм в принципе довольно
простой. Зависит, конечно, от ситуации, но в большинстве случаев можно начать с
команды count, она покажет сколько всего результатов по интересующему нас
запросу. Например, давай глянем сколько в России серверов nginx с открытым
портом 443:
shodan count nginx port:443 country:RU
Видим из ответа, что таких серверов 272353. Запрос надо уточнять. Как видите
эта команда позволяет быстро оценить возможное количество результатов
поиска.
Следующая команда которую придется применять часто - download. Она
позволяет сделать поиск по нашему запросу и скачать результаты в файл JSON, в
котором каждая новая строка это новый баннер. По умолчанию скачивает первую
тысячу результатов. Если нужно другое количество то используется параметр —limit.
shodan download nginx port:5555 country:RU
Если нужно обработать данные полученные командой download, используем
команду parse, после которой перечисляем поля по которым хотим отфильтровать
данные. Например:
shodan parse --fields ip_str,org,location nginx.json.gz
Следующая команда host. Позволяет просмотреть информацию о хосте.
shodan
host 184.31.72.83
Ну и одна из самых актуальных команд, просто потому что она позволяет
делать то что мы перед этим делали в браузере т.е. искать. Вводим команду
search
и указываем нужный нам поисковый запрос, который формируем точно также как мы
делали на сайте Shodan. Если нужно вывести результат только по определенным значениям
добавляем параметр —fields. Также как мы делали при использовании команды
parse.
shodan search webcam country:RU city:Moscow port:8080
Карты Shodan
Когда ты что-то ищешь в Shodan можно визуализировать расположение
найденных результатов перейдя на Shodan Maps. Практическая полезность
ситуативная, лично у меня ни разу такой необходимости не было. Но тем не менее
такая возможность есть и знать о ней стоит.
Shodan Images
Shodan сохраняет себе все скриншоты которые ему попадаются. В основ это
скрины удаленного доступа и камеры видеонаблюдения. Опять же практическая
составляющая данной функции мне не совсем понятна. Но ради интереса заглянуть
можно.
Shodan Exploit
Ещё одна интересная особенность Shodan в том что он собирает уязвимости и
эксплойты. Их поиск немного отличается, нам нужно указать платформу под которую
мы хотим найти уязвимость и вид уязвимости. Например:
platform:windows type:exploit
Ну, а на этом наше знакомство с Shodan можно считать оконченным. Как
видишь возможности у него очень не слабые и в некоторых ситуациях он может быть
очень полезен. Ну и не забывай возвращаться к нам, ведь есть ещё очень много что
нам предстоит изучить.
Источник:
https://hacker-basement.ru/2020/08/07/shodan-poisk-v-glubinax-interneta/
Опубликовано: 6.12.2021
|