Bettercap — инструмент, который поддерживает работу с CAN-шиной, включая сканирование, инжект и фаззинг фреймов через адаптеры, совместимые с SocketCAN. В статье расскажу, как выполнять эти операции с помощью основных команд и параметров Bettercap.
Еще по теме: MITM-атака в локальной сети
Что такое CAN-шина
CAN-шина — это система, которая позволяет различным устройствам внутри машины (или другого оборудования) общаться друг с другом. Например, двигатель, тормоза и датчики могут обмениваться информацией по этой шине. Она работает как общий язык для всех компонентов, чтобы они могли «договариваться» между собой и действовать слаженно.
Материал представлен исключительно в образовательных целях для обучения этичных хакеров. Автор и администрация сайта spy-soft.net не несут ответственности за любое незаконное использование данной информации.
Адаптеры, совместимые с SocketCAN, — это устройства, позволяющие подключить компьютер к CAN-шине и обмениваться данными через этот интерфейс. SocketCAN — это стандартный сетевой стек для работы с CAN-шинами в Linux, обеспечивающий поддержку различных CAN-адаптеров, таких как USB-CAN или PCI-CAN модули.
Такие адаптеры можно купить на Алике за 50$ или на Амазоне (качественнее, но подороже).
Команды для работы с CAN-шиной
Чтобы начать обнаружение устройств на CAN-шине, нужно включить режим сканирования:
1 |
can.recon on |
Для завершения процесса сканирования, используйте команду:
1 |
can.recon off |
После завершения процесса сканирования можно очистить все собранные данные:
1 |
can.clear |
Чтобы увидеть список всех обнаруженных устройств на шине CAN:
1 |
can.show |
DBC-файлы содержат описание протоколов CAN-шины и используются для декодирования фреймов. Для загрузки такого файла:
1 |
can.dbc.load NAME |
Замените NAME на имя нужного файла из списка доступных или на файл, который находится на диске.
Для инжектирования фреймов CAN-шины используйте следующий синтаксис команды. Фрейм указывается в формате id#data:
1 |
can.inject FRAME_EXPRESSION |
Например, чтобы инжектировать фрейм с идентификатором и данными aabbccddee, команда будет выглядеть так:
1 |
can.inject 0#aabbccddee |
Фаззинг — это процесс генерации случайных данных для тестирования безопасности системы. В Bettercap это можно сделать командой:
1 |
can.fuzz ID_OR_NODE_NAME OPTIONAL_SIZE |
Замените ID_OR_NODE_NAME на идентификатор фрейма или имя узла. Например:
1 |
can.fuzz ff 8 |
В данном примере генерируется случайный фрейм с ID ff и размером 8 байт.
Параметры модуля CAN-шины
Bettercap предлагает ряд параметров для тонкой настройки работы с CAN-шиной:
1 2 3 4 5 6 |
can.device — указывает устройство CAN-шины (по умолчанию can0) can.dump — позволяет загрузить лог-файл, записанный с помощью утилиты candump can.dump.inject — если установлено в true, трафик из файла candump будет инжектироваться в указанное устройство CAN-шины can.filter — опциональное булево выражение для фильтрации фреймов can.parse.obd2 — если установить в true, включится встроенный парсер PID для OBD2 can.transport — тип сети, может быть can для SocketCAN или udp |
Примеры использования CAN-шины
Для начала работы установите устройство и включите модуль для чтения сырых фреймов:
1 |
set can.device /dev/can0 can.recon on |
Если у вас есть ранее захваченный дамп, его можно воспроизвести:
1 |
set can.dump obd2-candump-2023-11-22_031813.log can.recon on |
Инжектирование сырых фреймов:
1 |
can.inject 0#aabbccddee |
Для фаззинга используйте команду:
1 |
can.fuzz ff 8 |
Для отображения списка обнаруженных блоков управления (ECU):
1 |
can.show |
DBC-файлы помогают автоматически декодировать трафик на шине. Например, можно загрузить файл и начать работу с ним:
1 |
set can.device /dev/can0 can.dbc.load css-electronics/obd2-pack-v5/obd2-dbc/CSS-Electronics-11-bit-OBD2-v2.2.dbc can.recon on |
Используя DBC-файл, можно фазить сообщения с определенным ID:
1 |
can.fuzz 12 |
Или сгенерировать случайное сообщение от конкретного ECU:
1 |
can.fuzz ECU_name |
Если вы работаете с OBD2, то можете включить встроенный парсер PID для стандартных сообщений OBD2:
1 |
set can.device /dev/can0 set can.parse.obd2 true can.recon on |
Bettercap предлагает гибкие возможности для работы с CAN-шиной. Используя команды и параметры, описанные в статье, можно настроить работу с CAN-устройствами, декодировать фреймы с помощью DBC-файлов и даже тестировать систему на устойчивость к случайным данным.
ПОЛЕЗНЫЕ ССЫЛКИ: