РАЗБОР
Статья
Атаки на RF-протоколы промышленных пультов: SDR
[ обложка статьи ]
Режим чтения
На аудите промышленного объекта заказчик с гордостью заявил, что радиоуправление мостовым краном защищено "проприетарным протоколом" и перехватить сигнал невозможно. 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).
Ситуацию усугубляет состояние парка оборудования. По данным экспертно-аналитического центра InfoWatch, более 60% устройств АСУ ТП имеют известные уязвимости, примерно половина из которых не исправляется. С RF-устройствами картина ещё мрачнее: радиопульты и датчики на sub-GHz частотах проектировались десятилетия назад, когда Software Defined Radio стоили десятки тысяч долларов. Безопасность радиоканала тогда попросту не рассматривалась как задача.
Оборудование для SDR-пентеста радиочастот
Прежде чем лезть в эфир - определяемся с железом. Выбор SDR зависит от задачи: пассивный перехват, активный replay или одновременный jam-and-capture.
| Устройство | Диапазон | TX/RX | Задача | Когда НЕ подходит |
|---|---|---|---|---|
| RTL-SDR v3/v4 | 24 МГц – 1.7 ГГц | Только RX | Разведка эфира, запись IQ | Replay невозможен - нет передатчика |
| HackRF One | 1 МГц – 6 ГГц | TX+RX, half-duplex | Разведка, replay, jamming | Jam-and-capture одновременно - нужно два устройства |
| YardStick One | Sub-1 ГГц | TX+RX | Replay на 315/433/868 МГц | Только sub-GHz, узкополосный |
| LimeSDR Mini | 10 МГц – 3.5 ГГц | TX+RX, full-duplex | Jam-and-capture одним устройством | Дороже HackRF, сложнее в настройке |
| Flipper Zero | Sub-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: демодуляция радиосигнала
Частоту нашли - записываем 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 если сигнал слабый)
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-боксе
# Мощность калибруется по расстоянию до приёмника цели
На RF-категориях CTF (треки "Radio Hacking" на крупных конференциях) задачи на replay-атаки на радиоканал обычно сводятся к: получить IQ-дамп, определить модуляцию, извлечь команду, воспроизвести на нужной частоте. В реальном пентесте промышленного объекта добавляется физический фактор - нужно находиться в зоне радиодосягаемости и действовать незаметно. На CTF за это баллы не снимают.
Jamming промышленных датчиков: методы и последствия
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):
Метод работает благодаря "окну синхронизации": приёмники 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.
AI-выжимка
по разделам
Тезисы статьи скоро
Статья читается полностью. Тезисы со ссылками на разделы появятся позже.
Содержание
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
Перейти к курсу →
Продолжить чтение
Следующий разбор
Отчёт по физическому пентесту: структура и находки
Комментарии
0