Построение интерактивных карт камер, принтеров, твитов и фотографий
Скрипт ꓘamerka 2.0 aka FIST (Flickr, Instagram, Shodan, Twitter) создаёт интерактивные карты с иконками и всплывающими окнами, содержащими расширенную информацию. Это могут быть карты камер, карты принтеров, карты твитов и фотографий для интересующих координат.
Применений этому может быть множество: поиск камер и изображений в интересующем вас месте, наблюдение за мнениями и изображениями в определённых районах и прочее.
Построение карт камер определённой местности
Для этой функциональности используются: Shodan API, GeoPy и библиотека Folium.
Shodan позволяет нам найти любое устройство в заданном месте на основе долготы, широты и радиуса, за это отвечает фильтр «geo». Далее добавлен фильтр «device» для отображения только веб-камер. Вся команда выглядит так: «geo:37.235,-115.811111,5 device:webcam».
Благодаря Geopy вы можете осуществлять поиск по адресу или конкретному зданию. Кроме того, он измеряет расстояние между камерой и начальной целью.
Folium — удивительная библиотека ГИС (географическая информационная система) с множеством удобных опций, и она выглядит действительно круто Результаты Shodan передаются в Folium для создания карты с маркерами, относящимися к каждой веб-камере. Маркеры имеют два цвета — красный означает, что камера, вероятно, имеет какую-то форму аутентификации и не возвращает код 200 OK, а зелёный цвет говорит, что она открыта, или отображает некоторую панель входа.
Более того, маркеры сгруппированы, если их много в одном месте. После нажатия на любой из них, отображается информация, такая как IP, модель и расстояние.
Правительственные здания
Некоторые здания должны быть защищены надлежащим образом, особенно те, которые связаны с правительством. В мэриях, военных базах или тренировочных лагерях не должно быть камер с открытым доступом, но никто не может контролировать окрестности.
Вы можете искать по адресу:
kamerka.py –address 'White House' --radius 2
В последних версиях ꓘamerka были добавлены принтеры: зелёный значок означает открытый доступ, а красный — отклик, отличный от 200. Также теперь если камера содержит снимок экрана, он также будет добавлен во всплывающее окно.
python kamerka.py --lat 45.504 --lon -73.5747 --camera --printer
Карта принтеров и камер:
Для использования модуля Shodan необходимо иметь платную подписку.
Теперь осталось найти камеры, которые будут показывать, как печатают принтеры — и будет совсем хорошо.
Flickr
Flickr — одна из платформ для обмена фотографиями, она в большей степени про красивые виды и изобразительные произведения.
100 последних фотографий получены с точностью = 16, но иногда все ещё показывают сделанные далеко фотографии, то есть параметр радиуса в этом случае не работает должным образом. Однако геолокация является наиболее точной из всех других служб, что подтверждается приведённым ниже экраном.
python kamerka.py --lat 42.9708746 --lon -71.1272902 --flickr
Пример Flickr фото с геолокацией:
Instagram
Не получилось зарегистрировать приложение в официальном API Instagram, который затем позволяет осуществлять поиск по координатам, но найден другой способ с помощью неофициального API, более подробно, что изменить и как использовать его на github.
Процесс поиска фотографий в этом API не очень точен, сначала он ищет известные места, а затем показывает фотографию с этого адреса.
Получены первые 5 новейших фотографий каждого объекта. В менее людных городах места могут быть дальше, чем в заданном радиусе.
Помните прошлую статью и камеры возле секретного склада Amazon от свалки Wikileaks? Оказывается, рядом есть пара интересных фотографий.
python kamerka.py --lat xx,x --lon yy,y --instagram
Фото из Instagram возле «секретного» склада Amazon:
Twitter
В Твиттере мало фотографий с геолокацией, но всё равно что-то есть. Собирая твиты в определённом месте, вы можете отслеживать настроения общества или некоторые крупные события и протесты. Интересно наблюдать за тем, что люди пишут в каких местах. К сожалению, вы не можете уйти от рекламы, поэтому есть пара рекламных твитов и предложений работы.
Первые 10 страниц ищутся, и каждая страница содержит 100 возможных твитов с геолокацией. Если в твите есть изображение, значок Twitter на карте становится зелёным. Твиты могут содержать фотографии, даже если во всплывающем окне нет изображения. Это потому, что люди добавляют ссылку на свою фотографию в Instagram, поэтому стоит проверить полный твит, который находится в конце каждого всплывающего окна.
python kamerka.py --lat -35.2826088 --lon 149.1231722 --twitter
Твиты в Канберре:
Всё вместе
На первый взгляд это кажется очень размытым и грязным, но все интерактивно, поэтому, если вы приблизитесь к определенной точке, она станет легко читаемой, и вам будет очень весело играть с этим.
Рекомендуется открывать картинки в новом окне для лучшей видимости.
Oakland:
Майами:
Путешествие по незащищённым устройствам IoT с помощью Kamerka: RTSP и MQTT
MQTT (Message Queue Telemetric Transport) — это служба, которая широко используется для управления устройствами IoT (Internet of Things). Вы можете найти его в разных местах: офисах, университетах или даже электростанциях.
Например, она использовалась в датчиках, обменивающихся данными с брокером через спутниковую связь, через временные dial-up соединения с поставщиками медицинских услуг, а также в ряде сценариев домашней автоматизации и небольших устройств.
RTSP (Real-Time Streaming Protocol — протокол потоковой передачи в реальном времени), как следует из названия, обеспечивает передачу в реальном времени с IP-камеры, включая звук. Основным вариантом использования RTSP является независимость с возможностью его внедрения непосредственно в ваше приложение. Это означает, что если поток недостаточно защищён, кто-то может его взломать. Большинство этих устройств являются камерами наблюдения, и вы можете встретить их возле или внутри зданий, которые требуют дополнительной безопасности.
https://marcoramilli.com/2016/09/20/internet-of-broken-things-threats-are-changing-so-are-we/
MQTT (Message Queue Telemetric Transport)
MQTT очень известен из-за отсутствия безопасности, статья от 2016 года подтверждает, что даже в то время это была проблема. Он основан на протоколе M2M (Machine to Machine, т. е. машина-машина) и работает через порт 1883.
Следует подчеркнуть, что безопасность MQTT должна сопровождаться усилением защиты других служб, работающих на компьютере. Самая большая и самая распространённая ошибка — оставить другие службы, работающие на той же машине, совершенно незащищёнными. Почти каждый MQTT-сервер обслуживает дополнительную панель управления на разных портах, в зависимости от производителя продукта. Панели мониторинга могут дать визуальное представление о реальных устройствах, стоящих за MQTT, это могут быть огни в офисе, датчики температуры или разбрызгиватели.
Пример панели инструментов для устройств MQTT:
Кроме того, некоторые панели дают вам полный доступ к каждому датчику, что означает, что вы можете контролировать всё здание.
В настоящее время многие MQTT работают в облаке и не показывают своего местоположения, поэтому их сложно сопоставить, однако все ещё есть некоторые серверы и инфраструктура, которые могут быть визуализированы и потенциально угнаны.
MQTT устройства возле Сакраменто:
Без надлежащей защиты каждый может подключиться к устройству и подписаться на каждую тему, именно так работает MQTT. Список доступных тем отображается после нажатия на одно из открытых устройств.
Существует множество бесплатных инструментов для управления транспортными устройствами телеметрии в очереди сообщений, одним из самых известных является mqtt-spy, Mosquito MQTT и MQTT.fx. Когда злоумышленник начинает подписываться на определённую тему, он получает взамен данные. Информация зависит от использования, это может быть влажность воздуха, местоположение телефона или команда питания в Area51.
Интерфейс MQTT.fx:
Real-Time Streaming Protocol (Потоковый протокол реального времени)
Еще одна служба, которую можно использовать для слежки за людьми и зданиями, - это RTSP. Обычно он работает через порт 554 (иногда 8554) и поддерживает VHS-подобные команды: PLAY, TEARDOWN, RECORD, SETUP или PAUSE. Вместе с транспортным протоколом в реальном времени (RTP) и протоколом управления в реальном времени (RTCP) они создают команду для доставки мультимедиа.
Камеры с потоковым протоколом в реальном времени в Копенгагене:
Векторы атаки остаются такими же, как и для остальных типичных HTTP-камер, т.е. слабые/стандартные учётные данные или отсутствие аутентификации. Чтобы на самом деле получить поток, злоумышленнику нужен известный или подобранный брут-форсом путь к видео, вы можете найти полный список здесь. Уже есть скрипт Nmap для обнаружения путей RTSP и более продвинутые инструменты, такие как cameraradar. Самый простой способ воспроизвести поток — это проигрыватель VLC.
Если вы установите рекурсивный режим, дополнительные порты будут показаны на карте. Очень полезно определить, запущено ли больше сервисов, чаще всего это другое устройство IoT со специальной панелью мониторинга. Довольно часто случается, что MQTT и RTSP работают на одном и том же хосте, что открывает много новых возможностей для шпионажа.
Пример потока RTSP:
Более простое управление
Для любого урбанизированного места в мире есть много результатов, и трудно отследить все открытые устройства, их порты и потенциальные уязвимости. Прямо сейчас, ꓘamerka поддерживает вывод Elasticsearch, и с помощью Kibana вы можете создавать потрясающие визуализации и информационные панели. Он включает в себя порты, продукты, уязвимости, типы устройств, ASN и многое другое. Если вам нужно управлять открытыми устройствами на определённой территории, такими как города или устройства ICS в стране, это идеальный, элегантный и самый простой способ сделать это.
Как установить ꓘamerka (kamerka)
Для установки ꓘamerka (kamerka) выполните команды:
git clone https://github.com/woj-ciech/kamerka cd kamerka/ sudo pip3 install -r requirements.txt python3 ./kamerka.py -h
Требования:
- Shodan API + платная подписка - https://developer.shodan.io/
- InstagramAPI - https://github.com/LevPasha/Instagram-API-python — Вместо API ключей учётные данные
- Twitter API - https://dev.twitter.com/overview/documentation
- Flick API - https://www.flickr.com/services/api/
- Google Street View API - https://developers.google.com/maps/documentation/javascript/get-api-key
Данные API нужно указать в исходном коде файла kamerka.py:
###API keys and credentials #Shodan SHODAN_API_KEY = '' #Instagram INSTAGRAM_USER = "+" INSTAGRAM_PASSWORD = "" #Flickr FLICKR_API_KEY = '' FLICKR_SECRET_API_KEY = "" #Twitter TWITTER_ACCESS_TOKEN = "" TWITTER_ACCESS_TOKEN_SECRET = "" TWITTER_CONSUMER_KEY = "" TWITTER_CONSUMER_SECRET = "" #Google Street View GOOGLE_STREET_VIEW_API_KEY = ""
Для использования модуля Instagram, вам нужно добавить дополнительный метод в файл InstagramAPI.py. Для этого откройте файл InstagramAPI.py:
gedit /usr/local/lib/python3.7/dist-packages/InstagramAPI/InstagramAPI.py
и ПЕРЕД строкой
def getLocationFeed(self, locationId, maxid=''):
Вставьте строки:
def geosearchLocation(self, lat, lon): return self.SendRequest('location_search/?latitude=' + str(lat)+'&longitude='+str(lon)+'&rank_token=' + self.rank_token)
Сохраните и закройте файл.
Как пользоваться ꓘamerka
Использование:
kamerka.py [-h] [--lat LAT] [--lon LON] [--radius РАДИУС] [--dark] [--twitter] [--camera] [--flickr] [--instagram] [--printer] [--country COUNTRY] [--rtsp] [--mqtt] [--open] [--first FIRST] [--last LAST] [--recursive] [--elasticsearch] [--host HOST] [--port ПОРТ]
Опции ꓘamerka:
Опциональные аргументы: -h, --help показать справку и выйти --radius RADIUS Радиус в км (По умолчанию 3) --dark Тёмная тема --twitter Модуль Twitter --camera Модуль камер --flickr Модуль Flickr --instagram Модуль Instagram --printer Модуль принтеров --country СТРАНА Поиск Industrial Control Systems для страны. Короткие коды для стран: US,IL,RU --rtsp Модуль Real Time Streaming Protocol --mqtt Модуль Message Queuing Telemetry Transport --open Показывать только открытые устройства --first FIRST Первая страница --last LAST Последняя страница --recursive Рекурсивный режим --elasticsearch Сохранить в ElasticSearch (работает только в рекурсивном режиме) --host HOST Хост Elasticsearch --port PORT Порт Elasticsearch Обязательные аргументы: --lat LAT Широта --lon LON Долгота
Примеры ꓘamerka
Включение модулей Twitter, Камера, Принтеры и поиск по широте 37.235 и долготе 115.811111:
python kamerka.py --lat "37.235 --lon 115.811111" --dark --twitter --camera --printer
Поис Industrial Control Systems для страны RU:
python kamerka.py --country RU
Поис Industrial Control Systems для страны PL:
python kamerka.py --country PL
Поис Industrial Control Systems для страны CH:
python kamerka.py --country CH
python kamerka.py --lat 37.8368723 --lon -122.2645793 --camera --flickr --instagram --twitter --printer --first 1 --last 1
Тёмный режим (Dark mode):
Заключение
Этот инструмент создаёт много возможностей для разведки и геолокации и в то же время даёт вам много радости. Автор пытался анонимизировать все, поэтому нет ни имён пользователей, ни меток времени, потому что это больше о местах и вещах, а не о людях.
Источники
- https://github.com/woj-ciech/kamerka
- https://medium.com/@woj_ciech/journey-over-unsecured-iot-devices-with-kamerka-rtsp-and-mqtt-aba98839574
- https://medium.com/hackernoon/hunting-with-%EA%93%98amerka-2-0-aka-fist-flickr-instagram-shodan-twitter-ca363f12562a
- https://medium.com/@woj_ciech/%EA%93%98amerka-build-interactive-map-of-cameras-from-shodan-a0267849ec0a
Связанные статьи:
- Утилиты для сбора информации и исследования сети в Windows и Linux (88.9%)
- Анализ периметра при аудите безопасности сайтов (81.5%)
- Как узнать имена хостов для большого количества IP адресов (70.4%)
- OSINT инструмент для визуализации отношений между доменами, IP и email адресами (70.4%)
- Поиск информации по номеру телефона (70.4%)
- Как найти пользователя в социальных сетях с помощью Sherlock (RANDOM - 58.4%)