Беспроводные девайсы сейчас повсюду (мышки, клавиатуры, звонки, даже розетки, управляемые по радио). Зачастую вендоры в своих устройствах используют самописные протоколы, не задумываясь о безопасности. Поскольку материала в Сети на эту тему не так много, давай разберем один из таких протоколов на примере беспроводной клавиатуры 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. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

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


5 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Хакер ищет авторов. Читатель? Хакер? Программист? Безопасник? Мы тебе рады!

Восемнадцать лет мы делаем лучшее во всем русскоязычном пространстве издание по IT и инфор…