Shodan API с Python для автоматизации сканирования

shodan api

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

Еще по теме: Официальная библиотека Python для Shodan

Любое устройство, подключенное к Интернету, должно раскрывать какую-то информацию о себе. Это может быть относительно ограниченным, так как умные конфигурации системы могут блокировать большинство нежелательных запросов. На некоторых устройствах можно сканировать порты, чтобы выявлять такие вещи, как службы, запущенные на веб-сервере, или имя веб-камеры, подключенной к беспроводной сети.

В первом эпизоде ​​третьего сезона сериала «Мистер Робот», главный персонаж, которого играет Кристиан Слейтер, использует поисковую систему Shodan для сбора информации о своих корпоративных рекомендациях, Evil Corp. Tyrell (Martin Wallström) и Анджела (Portia Doubleday) находятся на его стороне, наблюдая в недоумении, поскольку мистер Робот, теневая личность Эллиота (Рами Малек), выполняет поиск «Apache Tomcat».

Поиск, подобный тому, который используется в шоу, может выявить существенную информацию о потенциальной цели. Используя эту же методику, мы посмотрим, что именно можно найти, используя функцию поиска Shodan и как ее можно использовать для выполнения взлома.

Получение ключа API Shodan

Чтобы использовать API-интерфейс Shodan для прямого запроса и получения данных, минуя веб-интерфейс, нам нужно использовать наш ключ API. Этот ключ API можно получить, перейдя в раздел «Моя учетная запись» на веб-сайте Shodan, связанный в правом верхнем углу домашней страницы или просто открыв account.shodan.io.

Этот ключ будет вставлен в код Python, используемый для вызова API, поэтому может быть полезно скопировать его в буфер обмена или сохранить его в файл.

Сопоставление интерфейса Shodan с Python

Чтобы использовать Python для запросов с использованием Shodan API, нам нужно иметь функциональную среду Python, а также установленный модуль Shodan Python. В примерах, используемых в этом руководстве, используется Python 2.7. Python 3 также работает с использованием модуля, но требует, чтобы ряд изменений синтаксиса был функциональным со сценариями, показанными в этом учебнике. В операционных системах Linux на базе Debian Python 2.7 можно установить, открыв эмулятор терминала и выполнив приведенную ниже команду.

shodan api

С установленным Python мы также можем установить модуль Shodan Python. Это можно сделать с помощью pip или с помощью Easy Install. Pip также может быть установлен с помощью apt-get с помощью команды ниже.

После установки pip мы можем использовать pip для установки модуля Shodan Python.

Если на вашем устройстве имеется несколько версий Python и, возможно, несколько версий pip, вам может потребоваться указать, что вы хотите установить модуль для Python 2.7, используя приведенную ниже команду, с указанным параметром pip2.7.

Если ни один из этих методов не удался, библиотеку можно также установить, выполнив приведенную ниже команду.

Как только Python и библиотека Shodan установлены, мы можем начать писать новый скрипт Python. В командной строке Linux мы можем создать новый файл и начать его редактирование с помощью nano. Обязательно выберите имя файла, отличное от «shodan», чтобы не было конфликтов между ссылкой на библиотеку и самим скриптом. Ниже мы создадим файл под названием «search.py».

Первое, что мы хотим добавить к этому файлу — это строка, которая будет загружать библиотеку Shodan. Мы можем использовать функцию импорта Python для этого, как показано ниже.

Затем мы можем определить наш ключ API Shodan, чтобы скрипт мог использовать его для создания запросов API. Добавьте следующие строки для этого.

Замените «вставьте свой ключ API здесь» с помощью вашего ключа API, полученного на веб-сайте Shodan, оставив кавычки в поле.

shodan api

Затем мы можем использовать объявление try, чтобы определить, что должен делать скрипт. После этого мы можем добавить команду, которая использует блок api.search API Shodan для фактического запроса результатов поиска.

В этом примере строка поиска — просто apache, однако ее можно заменить любым желаемым поиском, включая поиск с фильтрами, такими как те, которые показаны ранее в учебнике. Мы можем вернуть результаты этого поиска, используя набор команд печати, показанный в конце кода ниже.

Теперь скрипт должен выглядеть так, как показано на рисунке ниже. Более подробную информацию о Shodan API и этот код можно найти на странице документации.

shodan api

Теперь скрипт можно сохранить и протестировать. Внутри nano мы можем сохранить скрипт с помощью Ctrl + O и выйти из nano с помощью Ctrl + X. Внутри того же каталога мы можем запустить скрипт, используя следующую команду.

Запуск сценария должен возвращать несколько IP-адресов и некоторую информацию, связанную с ними, включая статус HTTP, местоположение и другую информацию об устройстве, проиндексированную Shodan. Эта информация форматируется очень точно так же, как и данные, отображаемые при поиске в веб-интерфейсе.

shodan kali linux

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

Чтобы возвращать только IP-адреса, мы можем изменить форматирование нашего скрипта Python. Во-первых, мы можем удалить префикс IP: от строки, показанной ниже.

Таким образом, это выглядит так:

Мы также можем удалить строку, которая предшествует ей, и две строки, которые следуют за ней.

Теперь скрипт должен выглядеть так, как показано ниже.

shodan kali linux

Когда мы запускаем этот скрипт, он вместо этого вернет список IP-адресов без какого-либо другого ненужного контура

shodan kali linux

Этот список гораздо более полезен для автоматизации атак против списка, но нам нужно иметь эффективный способ его сохранения. Мы можем использовать операции оболочки для отправки вывода непосредственно в файл журнала. При запуске скрипта включите оператор >>, за которым следует имя файла, к которому вы хотите отправить вывод.

Теперь у нас есть текстовый файл, содержащий список IP-адресов, которые мы можем использовать для тестирования различных атак, в зависимости от того, какие условия поиска мы использовали для идентификации отдельных видов уязвимых систем.

Автоматизация задач с результатами Shodan

Для примера утилиты командной строки, которая может использовать IP-адрес в качестве аргумента, мы будем использовать ping. Использование того, что активно пытается атаковать или использовать устройства, обнаруженные Shodan, было бы незаконным и безответственным, поэтому обязательно используйте только те инструменты, которые у вас есть разрешение на использование на цели, если вы действительно используете что-либо. Во-первых, мы создадим новый сценарий оболочки, используя nano так же, как и раньше.

Мы можем начать сценарий с «crunchbang» (символы #!) И объявления оболочки. Это означает, что это сценарий оболочки, который должен запускаться оболочкой bash.

Затем мы можем добавить инструкцию, которая позволяет нам делать что-то с каждой строкой нашего списка IP-адресов по отдельности.

Теперь скрипт должен выглядеть так, как показано на рисунке ниже.

shodan установка Kali Linux

Mы можем сохранить этот скрипт с помощью Ctrl + O и снова вывести nano с помощью Ctrl + X. Чтобы иметь возможность запускать скрипт, нам нужно будет пометить его как исполняемый файл нашей операционной системой, предоставив ему эту привилегию с помощью chmod.

Теперь мы можем запустить скрипт из командной строки.

Скрипт должен перебирать каждый IP-адрес в адресе и отправлять пинг на каждый IP-адрес.

shodan установка Kali Linux

Если это сработает, вы теперь успешно получили результаты Shodan и индивидуально обработали их! Пинг — это не вектор атаки, но с небольшими незначительными изменениями подобный скрипт может использоваться злоумышленником для злонамеренных целей.

Оружие атаки

Строка, которая инициировала «ping» в сценарии оболочки, была бы простой областью для управления действием, которое выполняется с IP-адресами, полученными из Shodan. Оригинальный скрипт Python также может быть обновлен для более сложных эксплойтов или тестов. Ниже приведена базовая команда ping «while» итерации сценария оболочки.

Переменная $ line в этой команде представляет каждую строку файла списка IP, log.txt. Мы можем заменить эту команду ping любой другой строкой, которая будет включать IP-адрес в качестве аргумента. Мы могли бы использовать nmap для сканирования портов целевыми IP-адресами, используя приведенную ниже команду, используя аргумент -sS для проведения сканирования службы.

shodan установка Kali Linux

Хотя каждое устройство, подключенное к Интернету, имеет множество способов, с помощью которых можно индексировать службы сканирования, такие как Shodan, можно проверить безопасность своей локальной сети и маршрутизатора, проверив их внешний IP-адрес на веб-сайте, например whatsmyip.org, и выполните поиск этого IP на Shodan, чтобы узнать, какая информация доступна.

Другие приложения

Этот формат можно было бы расширить до практически любой другой атаки, которая может быть запущена из командной строки и включает в себя IP. Такое сканирование и атака нескольких целей — чрезвычайно эффективный метод обнаружения уязвимых систем, не тратя времени на индивидуальное обнаружение и атаку их вручную.

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

ВКонтакте
OK
Telegram
WhatsApp
Viber

Один комментарий

  1. sasa

    в чем проблема??
    api с 65к кредитов
    при выводе по api выдает 100 результатов, как в терминале так и в txt

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *