Вопрос или проблема
Я новичок в кибербезопасности и работаю в области IoT. Сегодня мне поставили задачу. Задача заключалась в проведении пентеста на кухонном устройстве. Из соображений конфиденциальности я не могу раскрыть марку плиты. Плита имеет свою wifi-карту и подключается к wifi. Вы управляете плитой с помощью мобильного телефона. В мобильном приложении есть множество рецептов, и вы выбираете один из них для приготовления, или можете написать свой собственный рецепт в мобильном приложении (например, задавая команды по температуре, времени, давлению пара и т.д.).
Перед первым запуском необходимо сопоставить плиту и ваш смартфон. Когда они сопоставлены, wifi обоих устройств должен быть включен, и они должны находиться в одной сети.
Моя попытка: Как я уже сказал, я новичок, и поэтому я пытаюсь провести пентест, как будто решаю CTF. Во-первых, я провел сканирование портов с помощью “rustscan”, “nmap” и “nessus”. Единственным открытым tcp портом был 6668, служба которого – “irc”, без указания версии. Ни vuln-библиотека nmap, ни nessus не смогли найти никаких уязвимостей. Более того, было 3 “open|filtered” UDP порта: 67 и 68, служба которых – “dhcps”, и 5353, служба которого – “zeroconf”, также не указывая номера версии.
Когда я прослушивал сеть с помощью wireshark, я увидел, что связь осуществляется всегда через разные порты. Например, если предыдущий пакет был отправлен на порт 54321, следующий был отправлен на 54320, и этот процесс продолжается последовательно.
Я не увидел никаких “mqtt” или других IoT протоколов в wireshark, поэтому это не дало мне ничего полезного.
После этих попыток я застрял. Не знаю, что мне делать. Нет никакого бинарного файла для анализа прошивки. Я думал о проведении реверс-инжиниринга мобильного приложения, но они (старшие) не хотят этого.
Если бы вы были на моем месте, что бы вы сделали? Каков следующий шаг? Что я могу сделать, используя эту информацию (1 tcp и 3 udp порта).
Дополнение: Как я могу исследовать этот irc порт? Я пытался подключиться к нему с помощью netcat “nc 192.168.200.14 6668”, но ничего не произошло. Каково ваше предложение для проверки этого порта?
Я пентестер, но ранее не работал с IoT-устройствами. Учитывая описанную вами ситуацию, я думаю, что следующие шаги заключаются в более тщательном изучении сетевого трафика, как к плите, так и от нее, при этом пытаясь создать разнообразный сетевой трафик.
Если трафик к плите не зашифрован, вы можете попробовать воспроизвести трафик и изменить его; возможно, вы сможете добиться неожиданного поведения. Если трафик от плиты не зашифрован, вы можете увидеть больше данных, чем показывается в приложении, что может намекнуть на потенциальные дальнейшие пути атаки.
Если трафик зашифрован, возможно, стоит попробовать провести атаку посредника. Установите прокси-сертификат на своем тестовом телефоне и посмотрите, сможете ли вы подключиться. У вас могут быть ограниченные успехи в этом, так как они могут использовать фиксирование сертификатов. Вы также можете попробовать принудительно понизить подключение до обычного текста, хотя это, вероятно, не сработает.
Если сама плита имеет функцию обновления, вы могли бы попробовать запустить ее. Она может подключаться через телефон или напрямую, но вы можете перехватить обновление и, возможно, проанализировать его.
Предполагая, что у вас есть разрешение на проведение разрушительного тестирования в определенной степени, вы можете попробовать найти, есть ли у плиты какой-либо скрытый USB порт или другой физический интерфейс подключения. Я говорю “разрешение на проведение разрушительного тестирования”, поскольку он может быть за панелью или чем-то, что нужно будет удалить для доступа к нему. Это может быть предназначено для техников для обслуживания и т.д. В этом случае это может предоставить множество информации.
Ответ или решение
В ответ на ваши вопросы о проведении тестирования на проникновение (pentest) IoT-устройства, важно обратить внимание на несколько ключевых аспектов, учитывая информацию, которую вы уже собрали.
1. Анализ сети и трафика
Поскольку вы уже провели порт-сканирование с использованием инструментов, таких как rustscan и nmap, следующим шагом будет более детальный анализ сетевого трафика. Ваши наблюдения в Wireshark показывают, что устройства обмениваются данными через разные порты, что может указывать на динамическое выделение портов для передачи данных.
Рекомендации:
- Разнообразие трафика: Попробуйте имитировать различные сценарии использования (например, отправка команд для изменения температуры или времени) и наблюдать за тем, какие данные и по каким портам передаются.
- Фильтрация трафика: Используйте фильтры в Wireshark для поиска передаваемых данных. Например, отфильтруйте трафик по IP-адресу вашего устройства или используйте ключевые слова, связанные с командами или данными, которые вы вводите в мобильном приложении.
2. Исследование открытого порта IRC (6668)
Порт 6668 с сервисом IRC может быть интересным, даже если он не отвечает на стандартные соединения.
Рекомендации:
- Пробуйте различные команды: Используйте netcat для отправки различных IRC-команд, таких как
NICK
,USER
иJOIN
, в зависимости от того, как работает протокол. Это может привести к тому, что вы обнаружите, как происходит взаимодействие с устройством. - Проверка наличия клиентизируемых сообщений: Возможно, устройство использует этот порт для обмена сообщениями. Попробуйте подключиться к нему через специальный IRC-клиент, который может обработать протокол более глубоко.
3. Обеспечение доступа к несекреченному трафику
Если трафик между устройствами не зашифрован, это предоставляет больше возможностей для манипуляции.
Рекомендации:
- Перехват и изменение трафика: Используйте инструменты для перехвата пакетов, например, mitmproxy или Charles Proxy, чтобы просматривать и изменять содержание трафика. Учтите возможность наличия сертификатов и механизмов защиты, которые могут помешать этому.
- Повторный отправка трафика: Если вы обнаружите подходящие запросы, которые передаются, попробуйте повторить их, чтобы вызвать изменения на устройстве. Это может помочь выявить уязвимости в обработке данных.
4. Физический доступ и модификация устройства
Если у вас есть возможность провести более глубокие тесты, вам стоит рассмотреть возможность физического доступа к устройству.
Рекомендации:
- Проверка на наличие скрытых портов: Изучите устройство на предмет скрытых USB или других интерфейсов. Иногда производители оставляют возможности для сервисного обслуживания, которые можно использовать для получения изначальных бинарных файлов или конфигурации системы.
- Обновления прошивки: Попробуйте инициировать процесс обновления прошивки и перехватить трафик во время его выполнения. Это может раскрыть уязвимости в механизме обновления.
Заключение
Тестирование IoT-устройств может быть сложным, особенно когда доступна ограниченная информация. Однако, используя указанные стратегии, вы можете значительно продвинуться в вашем исследовании. Убедитесь, что вы всегда действуете в рамках правовых норм и этических стандартов, и поддерживайте открытость в общении с вашей командой для получения дополнительной помощи и идей.