10.08.2017

Отсылка радиосигналов при помощи Metasploit и модуля rftransceiver

image

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

Автор: leon
Введение
В конце прошлого года я экспериментировал с программно-определяемыми радиосистемами, а конкретно с амплитудной модуляцией и амплитудной манипуляцией. В результате был написан набор утилит ooktools с целью облегчения рутинной работы в процессе исследования. Некоторое время назад в проекте Metasploit появился анонс с описанием возможностей расширения rftransceiver, которые были добавлены во фреймворк со схожими целями, связанными с облегчением исследований.

Суть идеи
Сначала я попытался понять, как работает новый функционал. В статье о Metasploit говорится, что новые дополнения позволяют осуществлять коммуникацию с устройствами из линейки RFCat прямо из Metasploit. Кроме того, возможен запуск модулей во время сессии. Сессия инициируется при помощи подсоединения к небольшой библиотеке JSON API (при помощи python helper), которая в свою очередь связывает HTTP-запросы с методами библиотеки rflib.
Общая схема выглядит примерно следующим образом:
Модуль HWBride (из Metasploit) ---> HTTP API из скрипта rfcat_msfrelay ---> методы библиотеки rflib (и аппаратный ключ)
Эта схема является экспериментальной, и не все пока еще работает на 100%. Однако я перевел некоторые функции, связанные с сигналингом, из ooktools на модули Metasploit.
Если тема для вас новая, рекомендую покопаться в Гугле и ознакомиться с терминами, которые вы не знаете. Тема, связанная с исследованием радиосистем, становится все более актуальной, и Гугл станет вашим первым и постоянным учителем на этом поприще. Наиболее ценные ресурсы, найденные мной на момент написания статьи (особенно касаемо амплитудной манипуляции), - часть серии “Software Defined Radio with HackRF” от Майкла Оссмана, являющегося экспертом в области программно-определяемых радиосистемы. Особо на меня произвел впечатление урок 8, который развеял многие мифы относительно знаний в области амплитудной манипуляции.
Тестовая среда
При тестировании новых устройств я использую устройство yardstickone (вместе с прошивкой rfcat). Обновленные модули на тот момент не были частью Metasploit, который идет в составе дистрибутива Kali, и я быстро собрал хранилище docker с последней версий клонированного заголовка Metasploit, после чего выполнил установку. Для настройки моста к API-функциям, упомянутым ранее, я клонировал репозиторий RFCat и запустил скрипт rfcat_msfrelay на моем ноутбуке (вне хранилища docker) в качестве приложения Metasploit и релея на базе протокола TCP/IP. Этот скрипт также будет работать самостоятельно вне репозитория, если у вас установлен python-модуль rfcat. В процессе установки модуля rfcat должна установиться библиотека rflib, хотя конкретно в вашем случае может быть по-другому.
rfcat_msfrelay
Для начала нужно поднять релей. В скрипте предусмотрен флаг --noauth, чтобы не вводить учетные данные. Учетная запись по умолчанию - msf_relay:rfcat_relaypass (можно поменять).

Рисунок 1: Запуск релея
После запуска появляется не очень содержательный ответ, и в то же время открывается порт 8080, чтобы мы могли подсоединиться к сессии через Metasploit. В процессе взаимодействия появятся HTTP-запросы, генерируемые Metasploit к мосту, которые очень схожи с логами доступа к веб-серверу.
Подсоединение к сессии HWBridge
Далее нужно подсоединиться к сессии HWBridge через Metasploit. Если вы знакомы с Metasploit, то уже знаете, как решить эту задачу. Вначале вводите команду use auxiliary/client/hwbridge/connect, затем команду set RHOST <ip_address> с IP-адресом, где запущен rfcat_relay. Далее запускаете модуль при помощи команды run.

Рисунок 2: Подсоединение к сессии HWBridge
После запуска команды sessions -l вы увидите новую сессию к радиосистеме, с которой можно взаимодействовать, отсылая базовые команды. На самом деле, команды преобразуются в API-вызовы к мосту и вызов методов библиотеки rflib.

Рисунок 3: Статус устройства, полученные через взаимодействие с сессией
Отсылка сигналов
В стандартной версии Metasploit есть два модуля для передачи сигналов и брутфорса. Вначале я протестировал модуль, предназначенный для брутфорса, с целью разобраться в логике работы этого компонента.

Рисунок 4: Пример работы с модулем rfpwnon, предназначенным для брутфорса
Никогда бы не подумал, что настанет такой день, когда можно будет подбирать параметры радиосистемы. В rfcat_relay начали появляться API-запросы, сделанные из Metasploit к мосту. Кроме того, при помощи gnuradio я также смог увидеть сигналы, связанные с брутфорсом.  

Рисунок 5: Амплитудная модуляция, отражающая процесс перебора
Сей факт побудил меня к написанию новых модулей. Поскольку модуль для брутфорса уже был, я решил перенести оставшиеся функции из набора ooktools: отсылку сигналов с амплитудной модуляцией/манипуляцией, поиск ключей, закодированных широтно-импульсной модуляцией, и модуль наведения помех по частоте.
Модуль sendook
Большая часть работы была уже проделана, и мне оставалось выполнить только перенос функций. Модуль для отсылки сигналов был сделан первым и работал почти без сбоев с моей лабораторной домашней лампой.

Рисунок 6: Пример работы модуля sendook
Мой пульт дистанционного управления сначала посылает длинный плоский сигнал, и, соответственно, мне нужно было установить первоначальный отступ. Если в параметре RAW не установить значение true, модуль будет автоматически кодировать бинарные данные при помощи широтно-импульсной модуляции (PWM).
Модуль searchsignal
Далее нужно было реализовать поиск сигнала, что оказалось не такой простой задачей, поскольку код получателя содержал много неточностей как в релее, так и в самом Metasploit. Я создал запрос на исправление двух уязвимостей, найденных в Metasploit. Кроме того, был реализован новый вызов функции lowball внутри Metasploit и метода библиотеки для работы с мостом, чтобы пропускалась часть шума во время сканирования. Тем не менее, на качество сканирования нововведения не повлияли.

Рисунок 7: Пример работы модуля searchsignal
Модуль jamsignal
Последний и вероятно самый простой модуль связан с наведением помех. Здесь нужно было реализовать отсылку мусорной информации до тех пор, пока пользователь не остановит работу модуля.  Во время тестирования, пульт управления, работающий на частоте 433 МГц (с небольшими отклонениями), оказался полностью бесполезен до тех пор, пока модуль не был остановлен. Очевидно, что рабочий диапазон устройства также имеет значение.

Рисунок 8: Пример работы модуля jamsignal
Заключение
Я очень доволен, что в Metasploit появились новые возможности. Если вы хотите поэкспериментировать, то можете скачать модули отсюда: https://github.com/leonjza/metasploit-modules. Возможно, в будущем эти расширения появятся в стандартной версии Metasploit.

comments powered by Disqus