РАЗБОР Статья

Атаки на RF-протоколы промышленных пультов: SDR

Сергей Попов
Сергей Попов Red Team · 6,7 тыс. сообщений
Подписаться
154
[ обложка статьи ]
Режим чтения
Тёмная лаборатория с изогнутым видеоэкраном, на котором светится сине-жёлтый график GNU Radio с перехватом радиосигнала 433 МГц. На столе — HackRF с голубым индикатором и компактная антенна на фоне...


На аудите промышленного объекта заказчик с гордостью заявил, что радиоуправление мостовым краном защищено "проприетарным протоколом" и перехватить сигнал невозможно. HackRF One, антенна на 433 МГц и двадцать минут в GNU Radio Companion показали обратное: пульт гнал команды OOK-модуляцией без какого-либо шифрования. Replay-атака сработала с первого раза - кран выполнил команду с ноутбука аудитора. Заказчик побледнел.

Это не единичный случай. Промышленные RF-пульты и беспроводные датчики на частотах 315, 433 и 868 МГц - одна из самых недооценённых поверхностей атаки в АСУ ТП. Русскоязычные материалы детально разбирают Modbus, IEC 104, OPC UA, а радиоканал стабильно остаётся за кадром. Здесь закрываем этот пробел: от спектрального анализа эфира до работающей replay-атаки в RF-боксе.

Бизнес-логика: зачем атакующему RF-каналы промышленных систем​

Промышленные радиопульты управляют кранами, лебёдками, конвейерными линиями, шлюзовыми механизмами. Беспроводные датчики передают показания температуры, давления, загазованности. В терминах MITRE ATT&CK полная цепочка атаки на RF-канал укладывается в четыре шага:
  • Размещение SDR-устройства рядом с целью - по аналогии с Hardware Additions (T1200, Initial Access). ATT&CK Enterprise описывает T1200 как внедрение устройства в инфраструктуру жертвы, а не внешний радиоперехват, но суть та же: физически ставим железку.
  • Пассивный перехват RF-сигналов пультов управления - смысловая аналогия с Network Sniffing (T1040, Credential Access / Discovery). T1040 про Ethernet/Wi-Fi, отдельной техники для перехвата проприетарных RF-протоколов в ATT&CK нет - а зря.
  • Инъекция ложных команд через replay - Transmitted Data Manipulation (T1565.002, Impact).
  • Подавление радиоканала (глушение) - Direct Network Flood (T1498.001, Impact).
Мотивация атакующего тут шире, чем вскрыть чужой автомобиль. Перехват управления краном на стройке или в порту - потенциальная физическая авария. Глушение беспроводных сенсоров загазованности - способ скрыть утечку. Replay команды "стоп" на конвейере - саботаж производственной линии. И в каждом из этих сценариев атакующему не нужно проникать в сетевой сегмент АСУ ТП: достаточно стоять в радиусе действия передатчика - нередко 50-200 метров на открытом пространстве.

Ситуацию усугубляет состояние парка оборудования. По данным экспертно-аналитического центра InfoWatch, более 60% устройств АСУ ТП имеют известные уязвимости, примерно половина из которых не исправляется. С RF-устройствами картина ещё мрачнее: радиопульты и датчики на sub-GHz частотах проектировались десятилетия назад, когда Software Defined Radio стоили десятки тысяч долларов. Безопасность радиоканала тогда попросту не рассматривалась как задача.

Оборудование для SDR-пентеста радиочастот​

1793508281111.webp

Прежде чем лезть в эфир - определяемся с железом. Выбор SDR зависит от задачи: пассивный перехват, активный replay или одновременный jam-and-capture.

УстройствоДиапазонTX/RXЗадачаКогда НЕ подходит
RTL-SDR v3/v424 МГц – 1.7 ГГцТолько RXРазведка эфира, запись IQReplay невозможен - нет передатчика
HackRF One1 МГц – 6 ГГцTX+RX, half-duplexРазведка, replay, jammingJam-and-capture одновременно - нужно два устройства
YardStick OneSub-1 ГГцTX+RXReplay на 315/433/868 МГцТолько sub-GHz, узкополосный
LimeSDR Mini10 МГц – 3.5 ГГцTX+RX, full-duplexJam-and-capture одним устройствомДороже HackRF, сложнее в настройке
Flipper ZeroSub-1 ГГц (CC1101)TX+RXБыстрый replay простых OOK-протоколовОграничена мощность TX и возможности анализа

Из софта: GNU Radio Companion - визуальное построение потока обработки сигнала, Universal Radio Hacker (URH) - автоматическое определение модуляции и декодирование битовых последовательностей, Inspectrum - визуальный анализ спектрограмм IQ-дампов, gqrx - SDR-приёмник с FFT/водопадной визуализацией.

Для лабораторных экспериментов критически важен RF-бокс (экранированная камера) или хотя бы аттенюатор 30-60 дБ между передатчиком и антенной. Глушение радиосигналов в открытом эфире - административное правонарушение по ст. 13.4 КоАП РФ, а при серьёзных последствиях (нарушение работы промышленного объекта) - уголовное по ст. 267.1 УК РФ. Все эксперименты ниже подразумевают работу в экранированной среде или с аттенюатором. Не надо проверять на себе, как работает российское правоприменение.

Разведка эфира: спектральный анализ с SDR​

Первый шаг любой атаки на RF-протоколы промышленных пультов - найти рабочую частоту цели. Большинство промышленных устройств сидят на ISM-диапазонах: 315 МГц (преимущественно США), 433.92 МГц (Европа, Россия, Азия), 868 МГц (Европа, Россия), 915 МГц (США). Это сужает область сканирования до нескольких полос.

Запускаем gqrx или GNU Radio с блоком osmocom Source. Параметры для начального наблюдения через HackRF: центральная частота 433.92 МГц (или 868 МГц - зависит от цели), sample rate 2 MSps (минимально рекомендуемый для HackRF), RF gain 0 (для ближнего радиуса), VGA gain 16–20 (с учётом шага 2 дБ: 16, 18 или 20). При нажатии кнопки пульта на водопадной диаграмме (waterfall plot) появляется характерный всплеск - яркий пик амплитуды на рабочей частоте. Промахнуться сложно.

По документированному PoC-исследованию jam-and-replay на автомобильных ключах (HackRF + GNU Radio), пик сигнала брелока обнаружился на 433.878 МГц с центром полосы 433.92 МГц. Промышленные пульты работают на тех же частотах - метод поиска идентичен. FFT-спектр показывает частоту, но не раскрывает способ кодирования данных. Для этого нужен следующий шаг - захват IQ-дампа и анализ модуляции.

На этом этапе фиксируем: центральную частоту, ширину полосы (bandwidth) и характер передач. Промышленные пульты обычно шлют короткие пакеты (десятки–сотни миллисекунд) по нажатию кнопки, причём пакет повторяется 2–5 раз за одно нажатие для надёжности. Беспроводные датчики передают периодически - раз в несколько секунд или минут. Разница определяет стратегию: для пульта нужно синхронизировать запись с нажатием, для датчика достаточно записать непрерывный отрезок.

Анализ модуляции SDR: демодуляция радиосигнала​

1111.webp

Частоту нашли - записываем IQ-дамп для детального разбора:
Bash:
hackrf_transfer -r capture_433.raw -f 433920000 -s 2000000 -a 0 -g 16 -l 32 -n 4000000
# -r: файл записи (raw IQ, 8-bit signed integer)
# -f: центральная частота в Гц
# -s: sample rate 2 MSps, -n: число сэмплов (~2 секунды записи)
# -g: VGA/IF gain (0-62, шаг 2), -l: LNA gain (0-40, шаг 8)
# -a 0: RF amp отключён (добавьте -a 1 если сигнал слабый)
Полученный файл открываем в Inspectrum или URH. На спектрограмме по горизонтали - время, по вертикали - частота, цветом передаётся амплитуда. Для промышленных пультов на sub-GHz частотах характерны три типа модуляции:

ASK/OOK (On-Off Keying). Простейший вариант - несущая либо есть (бит "1"), либо нет (бит "0"). На спектрограмме - чередование ярких и тёмных блоков, пропустить невозможно. По данным PoC-исследования на HackRF, сигналы на 433 МГц чаще всего используют именно OOK с Manchester-кодированием: каждый бит - это переход "высокий -> низкий" (логическая "1") или наоборот (логический "0"). Manchester гарантирует переход в середине каждого бита, что упрощает синхронизацию приёмника и визуальное распознавание в Inspectrum.

FSK (Frequency Shift Keying). Биты "0" и "1" передаются на незначительно различающихся частотах. На спектрограмме сигнал «прыгает» между двумя полосами. Встречается в более современных промышленных радиомодемах и датчиках.

GFSK (Gaussian FSK). FSK со сглаживанием частотных переходов гауссовым фильтром. Уменьшает занимаемую полосу частот, попадается в промышленных беспроводных сенсорных сетях.

В URH определение модуляции частично автоматизировано: инструмент анализирует форму сигнала и предлагает вероятные типы, после чего можно перейти к декодированию битовой последовательности. Для ручного анализа в Inspectrum подбираем ширину символа (symbol width) - расстояние между элементарными состояниями сигнала - и тип кодирования (NRZ, Manchester, дифференциальное).

Результат этого этапа - последовательность бит, составляющих одну команду пульта. Для устройств с фиксированным кодом эта последовательность идентична от нажатия к нажатию. Именно это делает replay-атаку тривиальной.

Replay-атаки на радиоканал: пошаговый разбор​

Replay-атака - воспроизведение ранее записанного RF-сигнала для выполнения несанкционированной команды. Самый прямолинейный вектор взлома радиоуправления через SDR. Работает против любых устройств с фиксированным кодом, а таких в промышленности - подавляющее большинство.

Предусловия и ограничения​

ПараметрТребование
Модуляция целиЛюбая (ASK/OOK/FSK)
Тип кодаФиксированный (fixed code)
ОборудованиеHackRF One, YardStick One или Flipper Zero
Дистанция захватаДо 100 м (зависит от мощности пульта и антенны SDR)
Дистанция воспроизведенияДо 50 м (зависит от TX gain и антенны)
Критическое ограничениеНе работает против rolling code без jam-and-replay

Шаг 1. Захват. Записываем IQ-дамп при нажатии целевой кнопки пульта через hackrf_transfer -r (см. выше). Хватит 2-3 секунд. Промышленные пульты повторяют пакет несколько раз за одно нажатие - это даёт запас на случай, если первая запись оказалась зашумлённой.

Шаг 2. Верификация. Открываем дамп в Inspectrum или URH. Убеждаемся, что сигнал содержит полную посылку - видим характерную последовательность с преамбулой и данными. Для фиксированного кода каждый повтор пакета должен быть побитно идентичен предыдущему. Если паттерны различаются - перед нами rolling code, и простой replay не пройдёт.

Шаг 3. Воспроизведение. Передаём записанный файл обратно в эфир:
Bash:
hackrf_transfer -t capture_433.raw -f 433920000 -s 2000000 -x 30
# -t: файл для передачи
# -x: TX VGA gain (0–47 дБ), подбирается в RF-боксе
# Мощность калибруется по расстоянию до приёмника цели
Если код фиксированный - приёмник на кране, конвейере или шлюзе выполнит команду. По MITRE ATT&CK это Transmitted Data Manipulation (T1565.002, Impact): атакующий внедряет ранее перехваченную легитимную управляющую посылку.

На RF-категориях CTF (треки "Radio Hacking" на крупных конференциях) задачи на replay-атаки на радиоканал обычно сводятся к: получить IQ-дамп, определить модуляцию, извлечь команду, воспроизвести на нужной частоте. В реальном пентесте промышленного объекта добавляется физический фактор - нужно находиться в зоне радиодосягаемости и действовать незаметно. На CTF за это баллы не снимают.

Jamming промышленных датчиков: методы и последствия​

1793508577661.webp

Jamming (глушение беспроводных сенсоров) - передача шумового или специально сформированного сигнала на рабочей частоте цели для блокирования легитимной связи. По аналогии с Direct Network Flood (T1498.001, Impact), хотя T1498.001 описывает переполнение полосы пропускания сетевого соединения. ATT&CK Enterprise не выделяет отдельной техники для RF-jamming на физическом уровне - ещё одно слепое пятно.

Для атак на беспроводные промышленные датчики потеря связи с SCADA - критический сценарий. При превышении таймаута ожидания данных от сенсора система реагирует одним из двух способов:

Fail-safe - переход в аварийный режим, остановка процесса. Неприятно для производства, но безопасно для людей.

Fail-operational - система продолжает работать с последними полученными значениями. Атакующий глушит датчик, пока реальные показания (температура, давление, концентрация газа) расходятся с "замороженными" - оператор не видит отклонений. Вот это уже по-настоящему опасно.

Второй сценарий - целевая точка для jamming-атаки. Типы подавления:

Широкополосный шум - белый шум на всей полосе частот приёмника. Грубо, зато эффективно. Но легко обнаруживается любым средством мониторинга эфира.

Узкополосный jamming - точечное подавление на центральной частоте цели. Требует знания рабочей частоты (определённой на этапе разведки), зато экономит мощность и менее заметен.

Реактивный jamming - глушилка включается только при обнаружении передачи цели. Сильно сложнее в реализации (нужна быстрая детекция начала пакета), но труднее детектируется. Для CTF-задач - отличный челлендж на уровень выше.

Ещё раз: любые эксперименты с jamming промышленных датчиков допустимы исключительно в RF-боксе. В лабораторных условиях для генерации помехи достаточно передавать случайные данные на целевой частоте через HackRF. В контексте jam-and-replay (следующий раздел) глушение используется не как самоцель, а как вспомогательный инструмент для перехвата rolling code.

Обход rolling code: jam-and-replay​

Rolling code (перекатывающийся код) - защитный механизм, при котором каждая команда пульта содержит уникальный код, генерируемый криптографическим PRNG. Пульт и приёмник синхронизированы на общем seed: после каждого нажатия обе стороны вычисляют следующее значение. Простой replay тут не работает - использованный код приёмник отклоняет.

Обход строится на одновременном подавлении и захвате. По документированному PoC-исследованию jam-and-replay на автомобильных системах (HackRF + Raspberry Pi RPiTX):
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Метод работает благодаря "окну синхронизации": приёмники rolling code хранят набор допустимых кодов - обычно около 256 значений вперёд от последнего принятого. Окно существует для компенсации случайных нажатий вне зоны действия, но оно же позволяет атакующему использовать перехваченный код с задержкой.

Для промышленных RF-пультов rolling code - скорее исключение. Большинство радиопультов на заводах и складах работают на фиксированных кодах. Оборудование создавалось для надёжности в агрессивной среде, а не для противодействия SDR-атакам, которые на момент проектирования этих систем были экзотикой.

Безопасность радиопротоколов АСУ ТП: что работает​

Если задача - защитить промышленный радиоканал от перехвата RF-сигналов пультов управления, вот меры с реальной эффективностью:

Шифрование и challenge-response. Современные промышленные пульты с защищёнными протоколами используют AES-128 шифрование радиоканала (SIL-сертификация - это про функциональную безопасность, не про ИБ, не путать). Replay-атака против зашифрованного канала с rolling code и двусторонней аутентификацией - задача принципиально другого порядка сложности.

Мониторинг RF-эфира. Выделенный SDR-приёмник, постоянно прослушивающий рабочие частоты, детектирует аномалии: jamming (резкий скачок уровня шума), несанкционированные передачи, повторы ранее зафиксированных пакетов. Решение копеечное: RTL-SDR за 30 долларов плюс скрипт на Python.

Физические меры. RF-экранирование критических зон, направленные антенны вместо всенаправленных, снижение мощности передатчика до минимально необходимой - всё это уменьшает радиус, в котором атакующий способен перехватить или воспроизвести сигнал.

Правильная реакция на обрыв связи. Fail-safe вместо fail-operational: при потере связи с беспроводным датчиком система должна останавливать процесс, а не работать с устаревшими данными. Это не защищает от replay, но нейтрализует jamming как вектор.

Замена беспроводного канала проводным. Для контуров управления, связанных с безопасностью людей (краны, газовые датчики), проводная связь - единственный надёжный вариант. Радиоканал допустим для некритичной телеметрии с соответствующим уровнем защиты.

Ключевой вопрос при аудите уязвимостей радиоканалов IIoT: есть ли у конкретного RF-канала механизм аутентификации и защиты целостности? Если ответ - "фиксированный OOK-код на 433 МГц без шифрования" - replay-атака займёт двадцать минут с оборудованием стоимостью 300 долларов.

Девять из десяти пентестов промышленных объектов, судя по отчётам коллег, ограничиваются сетевым сегментом: Modbus без аутентификации, открытые OPC-серверы, дефолтные пароли на ПЛК. Радиоканал не проверяет никто - ни заказчик не включает в scope, ни исполнитель не предлагает. А ведь RF-пульт управления краном - это физический доступ без физического доступа: стоишь за периметром с направленной антенной и отправляешь команды.

Проблема не в сложности атаки - как показано выше, replay на фиксированном коде занимает минуты. Проблема в системном слепом пятне: RF-безопасность беспроводной безопасности АСУ ТП не входит ни в один стандартный чек-лист промышленного пентеста. А весь комплект оборудования стоит дешевле одного рабочего дня аудитора.

Убеждён, что в ближайшие пару лет атаки на радиоканалы промышленных систем станут таким же стандартным вектором, каким сейчас являются атаки на незащищённый Modbus TCP. Вопрос только - кто первым начнёт их проверять: пентестеры на аудитах или те, кому действительно нужно уронить кран. Если хочешь потренироваться на этой связке - на HackerLab (ХакерЛаб) есть лабы с RF-задачами, где можно погонять replay и jamming без риска присесть по 267.1.
Полезно

Комментарии

0