Беспроводные девайсы сейчас повсюду (мышки, клавиатуры, звонки, даже розетки, управляемые по радио). Зачастую вендоры в своих устройствах используют самописные протоколы, не задумываясь о безопасности. Поскольку материала в Сети на эту тему не так много, давай разберем один из таких протоколов на примере беспроводной клавиатуры Logitech и напишем для нее кейлоггер.
 

Что нам понадобится?

Для приема сигнала в этом примере я буду использовать HackRF One. Но также можно взять и TV-тюнер на RTL2832, который реально найти на aliexpress.com за 10–15 долларов. Наблюдать за радиочастотным спектром и искать нужный нам сигнал будем с помощью утилиты Gqrx для Linux. Для исследования радиосигнала, определения типа модуляции и скорости передачи данных (baud rate) воспользуемся утилитами baudline и inspectrum. В основном работать с сигналом мы будем в GNU Radio. GNU Radio — настоящий монстр, включающий в себя огромное количество блоков. Среди них есть фильтры, модуляторы/демодуляторы, декодеры и инструменты для визуализации сигнала.

WARNING

Статья адресована специалистам по безопасности и тем, кто собирается ими стать. Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.

 

OSINT — наше все

Осмотрим нашу «жертву». На обратной стороне клавиатуры видим ее FCC ID — уникальный номер, по которому можно найти информацию об устройстве.

Рис. 1. FCC ID устройства
Рис. 1. FCC ID устройства

В нашем случае FCC ID JNZ128177. Для поиска информации перейдем на сайт fcc.gov.

Рис. 2. Поиск информации по FCC ID устройства
Рис. 2. Поиск информации по FCC ID устройства

Тут мы можем найти, как выглядит наше устройство, вид модуляции и частоту, на которой клавиатура общается с USB-приемником.

Рис. 3. Внешний вид клавиатуры
Рис. 3. Внешний вид клавиатуры

Рис. 4. Информация о частоте и виде модуляции
Рис. 4. Информация о частоте и виде модуляции

Мы видим, что клавиатура может работать на двух частотах: 27,095 МГц и 27,145 МГц в зависимости от выбранного канала. Эта информация пригодится нам позже. Также мы видим, что используется FSK (Frequency Shift Keying) модуляция, или частотная манипуляция.

 

Ищем сигнал

Для наблюдения за частотным спектром на частоте, найденной нами во время OSINT, будем использовать утилиту Gqrx. Настроимся на нужную частоту.

Рис. 5. Водопадное представление спектра на нужной нам частоте
Рис. 5. Водопадное представление спектра на нужной нам частоте

Как мы видим, спектр сильно зашумлен, и выделить среди шума информационный сигнал с клавиатуры практически невозможно. Дело в том, что на частотах ниже 480 МГц помехи могут возникать из-за неэкранированного USB-кабеля. А в комплекте с HackRF идет как раз такой. В своем GitHub Майкл Оссманн приводил требования к кабелю, который будет использоваться с HackRF. Если вкратце, то это должен быть экранированный кабель длиной менее 1,8 м с ферритовыми сердечниками на концах. Стоит отметить, что при использовании TV-тюнеров на RTL2832 подобных помех не будет, так как там нет кабеля.

После установки двух ферритовых сердечников на стандартный кабель от HackRF стало намного лучше. На рис. 6 можно увидеть незашумленный спектр и информационный сигнал с клавиатуры.

Рис. 6. Частотный спектр после установки ферритовых сердечников
Рис. 6. Частотный спектр после установки ферритовых сердечников

Ура! Мы нашли наш сигнал. Теперь нам нужно его записать для дальнейшего анализа: определения вида модуляции и скорости передачи данных (количества символов, передаваемых за одну секунду).

 

Записываем и анализируем

Для записи сигнала мы составим простую схему (flowgraph) в GNU Radio Companion. Схема будет содержать источник сигнала — osmocom Source и блок File Sink, необходимый для записи сигнала в файл. На рис. 6 ровно на частоте 27,095 МГц мы могли наблюдать сигнал, возникающий от постоянного источника питания HackRF, так называемый DC spike. Этот сигнал не несет никакой полезной информации и может мешать нам при записи, поэтому наш источник сигнала (osmocom Source) мы настроим на соседнюю частоту 27,08 МГц. Схема должна выглядеть как на рис. 7.

Рис. 7. Схема для записи сигнала
Рис. 7. Схема для записи сигнала

Для анализа записанного сигнала будем использовать утилиту inspectrum. Качать ее лучше с GitHub: версия, которая ставится через apt-get, не включает в себя полезные функции, такие как inspectrum cursor, позволяющие очень просто определить скорость передачи данных (baud rate). На рис. 8 можно увидеть сигнал, открытый в утилите inspectrum.

Рис. 8. Анализ сигнала в inspectrum
Рис. 8. Анализ сигнала в inspectrum

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    5 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии