Я думаю многие из вас слышали о таком поисковике как Shodan. Более того, для широкой аудитории Shodan стал известен благодаря культовому сериалу о хакинге - Mr. Robot, где создатили сериала максимально реально показали работу хакеров и спецов с кебербезопасности, вообщем советую, если еще не смотрели.
Сегодня поговорим о том, что такое Shodan, почему его называют самым опасным поисковиком в мире, как его использовать и как автоматизировать этот процесс, погнали=)
Дисклеймер: Данный материал создан исключительно в образовательных и познавательных целях. Автор никого ни к чему не призывает, не пропагандирует совершения незаконных действий.
Shodan, краткий курс в теорию
Иногда мы не имеем конкретную цель для взлома, а просто ищем уязвимые цели в любой точке планеты. Было бы замечательно, если бы у нас была поисковая система, такая как Google, которая могла бы помочь нам найти эти цели? И у нас такая есть - это Shodan!
Некоторые называют Shodan поисковой системой для хакеров и даже называют ее « самой опасной поисковой системой в мире ». Она была разработана Джоном Мазерли в 2009 году, и в отличие от других поисковых систем, она ищет конкретную информацию, которая может быть на вес золота для хакеров.
Shodan извлекает сервисные баннеры с серверов и устройств в Интернете, в основном это порт 80, а также порты 21 (ftp), 22 (SSH), 23 (telnet), 161 (SNMP). ) и 5060 (SIP).
Баннер - это просто приложение, рекламирующее, что это такое. Администраторы веб-сервера, которые бдительны и сообразительны в отношении безопасности, часто маскируют свои баннеры.
Другими словами, чтобы отпугнуть хакеров, они могут заменить баннер, скажем, Microsoft IIS 6.0 на баннер, говорящий, что это Apache 2.4.0. Таким образом, хакеры будут тратить свое время и усилия, пытаясь взломать относительно уязвимый IIS 6.0, разочаровываться, когда он не работает, и в конечном итоге забрасывать взлом.
В чем разница между GOOGLE и другой поисковой системой?
Самым фундаментальным отличием является то, что Shodan анализирует Интернет, а Google анализирует World Wide Web. Более того, устройства, подключенные к Всемирной паутине, являются лишь небольшой частью того, что действительно подключено к Интернету.
Что может показать Шодан?
Поскольку почти каждое новое устройство теперь имеет веб-интерфейс (может быть, даже ваш холодильник) для упрощения удаленного управления, мы можем получить доступ к бесчисленному количеству веб-серверов, сетевых устройств, систем домашней безопасности и т. д.
Shodan может найти нам веб-камеры, светофоры, видеопроекторы, маршрутизаторы, системы отопления домов и системы SCADA, которые, например, управляют атомными электростанциями и электрическими сетями. Если у него есть веб-интерфейс, Shodan может его найти!
Хотя многие из этих систем обмениваются данными через порт 80, используя HTTP, многие используют telnet или другие протоколы через другие порты. Имейте это в виду при попытке подключиться к ним.
Итак подведем итоги:
Shodan - это поисковая система, которая позволяет пользователю находить компьютеры определенного типа (веб-камеры, маршрутизаторы, серверы и т. Д.), которые в настоящее время подключены к Интернету, с использованием различных фильтров. Некоторые также описывают его как поисковик сервисных баннеров, которые представляют собой метаданные.
Теперь перейдем от теории к практики=)
Создайте учетную запись Shodan
Для начала давайте перейдем к shodanhq.com . Когда мы это сделаем, нас встретит открывающийся экран, подобный приведенному ниже.
Shodan требует, чтобы вы зарегистрировались для использования всех его функции, это бесплатно, если вам не нужны некоторые из расширенных функций.
Поиск на Шодане
После регистрации мы можем либо выполнить пользовательский поиск, либо перейти в «Каталог поиска» и посмотреть некоторые из наиболее распространенных и недавних поисков. Если вы новичок в Shodan, я рекомендую вам сначала просмотреть «Популярные поисковые запросы».
Как мы видим на скрине выше, мы можем "создать бесплатный аккаунт" и "начать работу". По поводу акка мы поговорим позже, сейчас жмем "Начать работу".
Найдите незащищенные веб-камеры
Среди устройств, которые мы можем найти на Shodan, есть бесчисленные незащищенные веб-камеры. Вот, например, что я нашел на Шодане. Эта находится внутри ангара в Норвегии. Обратите внимание, что у нее есть элементы управления Java для наклона и панорамирования, которые вы можете использовать, чтобы полностью осмотреть ангар.
Найти светофор
На Shodan можно найти столько устройств, что этот список заполнит всю эту статью. Одна из самых интригующих вещей, которые мы можем там найти, - это светофоры и камеры, которые отслеживают трафик на освещенных перекрестках (в некоторых штатах эти камеры теперь используются для записи номера автомобильного номера и отправки вам штрафа, если они обнаружат, что вы превышаете скорость или едите на красный свет).
Осторожно! Неверное использование или взлом дорожных сигналов может привести к гибели людей и может быть незаконным.
Найдите SCADA системы
Одним из самых страшных и потенциально наиболее разрушительных применений Shodan является поиск устройств SCADA (диспетчерское управление и сбор данных) с веб-интерфейсами. Устройства SCADA - это устройства, которые управляют такими объектами, как электросеть, водные установки, очистные сооружения, атомные электростанции и т. д.
Эти устройства SCADA являются наиболее вероятными целями в сценарии кибертерроризма или кибервойны.
Беглый поиск устройств SCADA привел меня к IP-адресу гидроэлектростанции в Генуе, Италия.
Найдите пароли по умолчанию
Многие из этих сайтов и интерфейсов используют пароли по умолчанию. К счастью для нас, в Интернете есть много ресурсов, в которых перечислены пароли по умолчанию для всех устройств. Вот один на www.phenoelit.org/dpl/dpl.html . В сети буквально сотни таких сайтов. Просто Google "пароли по умолчанию". (используйте vpn так как доступ к таким сайтам часто заблокирован)
Поскольку многие потребители и системные администраторы небрежны и не меняют пароли по умолчанию, часто вы можете получить доступ к этим устройствам, просто используя эти списки, чтобы найти имя пользователя и пароль администратора по умолчанию.
Shodan - твой новый лучший друг
Shodan - это другой вид поисковой системы. Shodan извлекает баннеры с IP-адресов, а затем каталогизирует все типы устройств, которые имеют удаленный интерфейс со всего мира. Многие из этих устройств настроены на прием по умолчанию, поэтому, когда вы найдете устройство и его имя по умолчанию, вы сможете хакнуть его! Так же помните, что Shodan - это не анонимный сервис.
Кроме того, Shodan обладает рядом мощных функций для поиска устройств по типу, имени входа, порту и географии.
Как использовать Shodan API с Python для автоматизации сканирования уязвимых устройств
Так как Shodan называет себя «поисковой системой для подключенных к интернету устройств», а возможности этой поисковой системы позволяют нам получить доступ к спискам устройств для тестирования и атак. Мы посмотрим, как автоматизировать с помощью Python определения конкретных уязвимостей программного обеспечения и извлечения уязвимых целевых IP-адресов из Shodan.
Любое устройство, подключенное к Интернету, должно раскрывать какую-либо информацию о себе. Естественно, доступ к таким устройствам и системам может быть ограничен, так как умные конфигурации системы могут блокировать большинство нежелательных запросов. На некоторых устройствах можно сканировать порты, чтобы обнаружить такие вещи, как службы, работающие на веб-сервере, или имя веб-камеры, подключенной к беспроводной сети.
В первом эпизоде третьего сезона сериала « Мистер Робот », главний персонаж, которого играет Кристиан Слэйтер, использует поисковую систему «Шодан» для сбора информации о Evil Corp. Тайрел (Martin Wallström) и Анджела(Portia Doubleday) находятся рядом с ним, с недоверием наблюдая, как мистер Робот, теневая личность Эллиота (Rami Malek), проводит поиск «Apache Tomcat».
В сериале хорошо показана технология поиска, которая помогла обнаружить всю нужную инфу о цели. Давайте попробуем повторить уведенное в сериале и посмотреть, что мы можем отыскать, используя Shodan, и как мы можем потом юзать эту информацию для хакинга.
Использование Shodan
Мы уже зарегистрировались на сайте, теперь давайте создадим бесплатный аккаунт для дальнейшей работы.
Вместо того, чтобы использовать традиционные поисковые термины для поиска содержимого публично проиндексированного веб-сайта, при поиске в Shodan мы обычно ищем информацию, найденную в заголовках устройства или другую информацию, помимо веб-содержимого HTTP устройства, которое индексируется традиционными поисковыми системами.
В Mr. Robot персонаж ищет строку ниже.
org:"Evil Corp" product:"Apache Tomcat"
Конечно, мы могли бы забить в поисковике такую же строчку, но боюсь он нам тогда ничего не выдаст, или выдаст?)) Хороший повод вам самостоятельно это выяснить=)
В нашем случае мы будем искать по второй части, там где о продукте - это фильтр, который будет для нашей практики более полезным.
Фильтры могут использовать только пользователи с бесплатным аккаунтом, поэтому время зарегистрироваться:
country: фильтр стран
city: фильтр городов
geo: фильтр геолокации (координаты)
hostname: фильтр локальной машины
net: ограничение по IP / префиксу
os: фильтр ОС
port: фильтр для поиска по портам
Эти фильтры могут применяться в том же формате, что и в примере, использованном в Mr. Robot , где фильтр включается в поиск, за которым следуют двоеточие и поисковый термин. Показанный ниже формат может использоваться для любого из фильтров, доступных в Shodan.
filter:"Keyword"
Как это работает думаю понятно, мы задаем поисковой запрос через фильтр, и поисковик нам выдает отфильтрованный результат.
Можно применить несколько фильтров, если они разделены пробелами.
Поиск «Apache Tomcat», как показано в шоу, действительно даст правильные результаты при использовании на Shodan. Мы можем проверить это путем поиска строки, показанной ниже.
product:"Apache Tomcat"
После поиска мы видим, что вернулось около миллиона результатов. Этот поиск предоставляет некоторые интересные данные о местах и организациях, которые используют Apache Tomcat, но для хакера эти результаты могут стать основой для приготовления атаки.
Злоумышленник может специально выполнять поиск серверов или подключенных к сети устройств с использованием устаревшего программного обеспечения с известными уязвимостями, чтобы найти устройства для использования. Этот процесс можно совершить вручную, скопировав результаты поиска Shodan в веб-браузере и выбрав адреса для атаки. Однако этот процесс также можно автоматизировать с помощью языков сценариев и API Шодана, чего мистер Робот не показал.
Получение ключа Shodan API
Чтобы использовать API-интерфейс Shodan для прямого запроса и получения данных в обход веб-интерфейса, нам необходимо использовать наш ключ API. Этот ключ API можно получить, перейдя в раздел «Моя учетная запись» на веб-сайте Shodan, который находится в правом верхнем углу главной страницы, или просто открыв account.shodan.io .
Этот ключ будет вставлен в код Python, используемый для выполнения вызовов API, поэтому может быть полезно скопировать его в буфер обмена или сохранить в файл.
Вызов API Shodan с помощью Python
Чтобы использовать Python для отправки запросов с использованием Shodan API, нам потребуется функциональная среда Python, а также установленный модуль Shodan Python. В операционных системах Linux на основе Debian Python можно установить, открыв эмулятор терминала и выполнив следующую команду.
sudo apt update && sudo apt install python3
Но в этом нет необходимости, так как он там уже установлен автоматом.
С установленным Python мы также можем установить модуль Shodan Python. Это можно сделать с помощью pip или с помощью Easy Install . Pip также может быть установлен с помощью apt :
sudo apt-get install python-pip
После установки pip мы можем использовать pip для установки модуля Shodan Python.
sudo pip install shodan
Если на вашем устройстве имеется несколько версий Python и, возможно, несколько версий pip, вам может потребоваться указать, что вы хотите установить модуль для Python 2.7, используя приведенную ниже команду, указав pip2.7.
sudo pip2.7 install shodan
Сейчас эта версия питона не поддерживается, но вдруг)
Если ни один из этих методов не будет успешным, библиотеку также можно установить, выполнив команду ниже.
easy_install shodan
После установки Python и библиотеки Shodan мы можем начать писать новый скрипт Python. В командной строке Linux мы можем создать новый файл и начать редактировать его, используя nano или Vim . Обязательно выберите имя файла, отличное от «shodan», чтобы не было конфликтов между ссылками на библиотеку и самим сценарием. Ниже мы создадим файл с именем «search.py».
nano search.py vim search.py
Первое, что мы хотим добавить к этому файлу, это строка, которая загрузит библиотеку Shodan. Мы можем использовать функцию import Python для этого, как показано ниже.
import shodan
Затем мы можем определить наш ключ API Shodan, чтобы скрипт мог использовать его для выполнения запросов API. Добавьте следующие строки, чтобы сделать это.
SHODAN_API_KEY = "insert your API key here" api = shodan.Shodan(SHODAN_API_KEY)
Замените «insert your API key here» на свой ключ API, полученный с веб-сайта Shodan, оставив кавычки в поле.
Затем мы можем использовать объявление try, чтобы определить, что должен делать скрипт. После этого мы можем добавить команду, которая использует модуль api.search API Shodan для фактического запроса результатов поиска. (помните о важности пробелов, в питоне 4 пробела)
try: # Search Shodan results = api.search('apache')
В этом примере строка поиска просто apache , однако ее можно заменить любым поиском, в том числе поиском с фильтрами, подобными тем, которые были показаны ранее в руководстве. Мы можем вернуть результаты этого поиска, используя набор команд печати, показанный в конце кода ниже. (не забываем об отступах)
# Show the results print('Results found:{}'.format(results['total'])) for result in results['matches']: print('IP: {}'.format(result['ip_str'])) print(result['data']) print('') except shodan.APIError as e: print('Error: {}'.format(e))
Теперь скрипт должен выглядеть аналогично коду, показанному на рисунке ниже. Более подробную информацию об Shodan API и этом коде можно найти на странице документации . Кстати, по поводу документации, там ошибка. Там где исключение в коде в документации стоит запятая, хотя должно быть "as", имейте это в виду, так как с запятой у вас будет выдавать ошибку, я из за этой ошибки 20 минут сидел и втыкал в код=)
Теперь скрипт можно сохранить и протестировать. В nano, мы можем сохранить сценарий с помощью Ctrl + O , и выйти из nano с помощью Ctrl + X . Для Vim, ESC(выходим из режима редактирования) --> :w(сохраняем файл) --> :q(выходим с редактора).
Из той же директории мы можем запустить скрипт, используя команду ниже.
sudo python3 script.py
Скрипт работает успешно=)
Выполнение сценария должно вернуть несколько IP-адресов и некоторую информацию, связанную с ними, включая состояние HTTP, местоположение и другую информацию об устройстве, проиндексированную Shodan. Эта информация отформатирована очень похоже на данные, отображаемые при поиске в веб-интерфейсе.
Хотя эта дополнительная информация может допускать обработку дополнительных критериев другими сценариями и инструментами, если кто-то хочет автоматизировать процесс сбора и тестирования атак на IP-адреса, этот формат в основном не нужен.
Чтобы вернуть только IP-адреса, мы можем изменить формат нашего скрипта Python. Во-первых, мы можем удалить префикс IP: из строки, показанной ниже.
print('IP:{}'.format(result['ip_str']))
Так что вместо этого она выглядит так:
print('{}'.format(result['ip_str']))
Мы также можем удалить строку, которая предшествует этой, и две строки, которые следуют за ним.
print('Results found:{}'.format(results['total'])) print(result['data']) print('')
Теперь скрипт должен выглядеть так, как показано ниже.
Когда мы запустим этот скрипт, он вместо этого вернет список IP-адресов без какого-либо другого ненужного контента.
Этот список гораздо более полезен для автоматизации атак на этот список, но нам нужен эффективный способ его сохранения. Мы можем использовать операции оболочки для отправки вывода напрямую в файл журнала. При запуске сценария добавляем оператор >> и имя файла, в который вы хотите отправить вывод.
sudo python3 search.py >> log.txt
Теперь у нас есть текстовый файл, содержащий список IP-адресов, которые мы можем использовать для тестирования различных атак, в зависимости от того, какие поисковые термины мы использовали для определения конкретных типов уязвимых систем.
Автоматизация задач с результатами Shodan
Для примера утилиты командной строки, которая может использовать IP-адрес в качестве аргумента, мы будем использовать ping . Использование чего-либо, что активно пытается атаковать или использовать устройства, найденные Шоданом, было бы незаконным и безответственным)), поэтому убедитесь, что запускаете только те инструменты, на которые у вас есть разрешение на использование, если вы действительно что-то эксплуатируете и читайте дисклеймер. Сначала мы создадим новый сценарий оболочки, используя nano, vim, так же, как мы это делали ранее.
Дисклеймер: Данный материал создан исключительно в образовательных и познавательных целях. Автор никого ни к чему не призывает, не пропагандирует совершения незаконных действий.
nano ping.sh vim ping.sh
Мы можем начать скрипт с "crunchbang" ( символы #! ) И объявления оболочки. Это говорит о том, что это скрипт оболочки, запускаемый оболочкой bash.
Думаю я сделаю гайд по языку программирования - bash
#!/bin/bash
Затем мы можем добавить оператор, который позволяет нам что-то делать с каждой строкой нашего списка IP-адресов в отдельности.
cat log.txt | while read line do ping $line done
Теперь скрипт должен выглядеть так, как показано на рисунке ниже.
Теперь мы можем сохранить этот сценарий с помощью Ctrl + O , и выхода из nano - еще раз с помощью Ctrl + X . Для Vim, ESC(выходим из режима редактирования) --> :w(сохраняем файл) --> :q(выходим с редактора).
Чтобы запустить скрипт, нам нужно пометить его как исполняемый нашей операционной системой, предоставив ему эту привилегию с помощью chmod .
sudo chmod +x ping.sh
Теперь мы можем запустить скрипт из командной строки.
./ping.sh
Сценарий должен перебирать каждый IP-адрес в адресе и отправлять пинг каждому IP-адресу.
Если это работает, вы успешно получили результаты Shodan и обработали их индивидуально! Ping вряд ли является вектором атаки, но с некоторыми незначительными изменениями подобный скрипт может использоваться злоумышленником в злонамеренных целях.
Делаем атаку зубастой=)
Строка, которая инициировала «ping» в сценарии оболочки, была просто для манипулирования действием, которое выполняется с IP-адресами, полученными из Shodan. Оригинальный скрипт Python также может быть обновлен для более сложных эксплойтов или тестов. Основная команда ping итерации сценария оболочки показана ниже.
ping $line
$line переменная в этой команде представляет каждую строку файла списка IP, log.txt. Мы можем заменить эту команду ping любой другой строкой, которая будет содержать IP-адрес в качестве аргумента. Мы могли бы использовать nmap для сканирования портов целевых IP-адресов, используя приведенную ниже команду, используя аргумент -sS для сканирования службы.
nmap -sS $line
Хотя каждое подключенное к Интернету устройство имеет различные способы индексирования с помощью таких служб сканирования, как Shodan, можно проверить безопасность своей локальной сети и маршрутизатора, проверив их внешний IP-адрес на веб-сайте, таком как whatsmyip.org, и выполнив поиск по этому адресу. IP на Shodan, чтобы увидеть, какая информация доступна.
Другие приложения
Этот формат может быть расширен практически до любой другой атаки, которая может быть запущена из командной строки и включает в себя IP. Этот вид сканирования и атаки нескольких целей является чрезвычайно эффективным методом обнаружения уязвимых систем, не требуя времени для индивидуального поиска и атаки на них вручную.
Выводы
Эта методология может применяться ко всем видам различных атак с использованием Shodan, Python, сценариев оболочки или других инструментов, при условии, что они способны находить устройства и атаковать их без участия пользователя.
Я надеюсь вам понравилась статья=)
Спасибо за прочтение=)