Добро пожаловать обратно, мои начинающие автомобильные кибервоины!
В первой части серии, посвящённой симулятору ICS, мы установили утилиты CAN, а также приборную панель и органы управления симулятора ICS. В этом руководстве мы будем использовать утилиты CAN или SOCKET CAN для просмотра и анализа трафика CAN.
Как вы помните из моего руководства «Автомобильный взлом, часть 2 », can-utils содержит следующие утилиты:
1. Базовые инструменты для отображения, записи, генерации и воспроизведения CAN-трафика
1. кансниффер
2. candump
3. canplayer
4. cansend
Шаг №1: Запустите cansniffer
Начнём с анализа CAN-трафика с помощью cansniffer. Для этой утилиты необходимо указать интерфейс ( в нашем случае vcan0 ). Если вы хотите увидеть цветной вывод, используйте опцию -c .
kali > cansniffer -c vcan0
Как только вы введете эту команду, вы должны увидеть сетевой трафик CAN, отображаемый на вашем терминале, как показано на снимке экрана ниже.
При использовании опции -c изменяемые значения окрашиваются в красный цвет, что помогает нам идентифицировать эти ключевые значения.
Шаг №2. Использование cansniffer для фильтрации определенного трафика
Вместо того чтобы следить за всем трафиком, проходящим мимо нашего терминала, мы можем фильтровать трафик аналогично более широко используемому снифферу Wireshark.
Давайте посмотрим на экран справки в cansniffer, чтобы научиться это делать.
kali > cansniffer -h
Тогда, если бы мы хотели видеть только трафик с ID=161, мы могли бы ввести:
kali > cansniffer -c vcan0
Как только сниффер запустится, мы можем войти;
-000000
+161
Важно отметить, что при вводе вышеуказанных команд они не будут отображаться на экране . После ввода идентификатора сниффер начнёт фильтровать весь трафик, кроме трафика с идентификатором 161.
Как вы можете видеть на снимке экрана выше, cansniffer теперь отображает только данные для ID=161.
Шаг №3 Использование candump для захвата CAN-трафика
В то время как cansniffer способен анализировать трафик в сети CAN аналогично Wireshark, утилита candump в пакете can-utils способна захватывать трафик CAN и сохранять его в файле для анализа или воспроизведения в будущем.
Для этого нам нужно всего лишь использовать опцию -l для ведения журнала и опцию -c для раскрашивания вывода.
kali > candump -c -l vcan0
Если мы хотим вести лог и просматривать вывод, можно использовать опцию -s 0 (тихий режим 0). Кроме того, если мы хотим преобразовать вывод из шестнадцатеричного формата в ASCII (удобочитаемый), можно добавить опцию -a (ASCII) . Это запустит candump в режиме раскрашивания с выводом в ASCII, сохраняя данные в лог-файл и одновременно отправляя их на терминал (stdout).
Кали > candump -c -l -s 0 -a vcan0
Шаг №4 Использование canplayer
У нас также есть ещё один ключевой инструмент для работы с сетями CAN — canplayer. Он позволяет нам «воспроизводить» выходные данные candump. Таким образом, мы можем перехватывать данные из сети CAN и затем воспроизводить их по сети. Для этого достаточно использовать опцию -I , а затем указать имя файла журнала candump.
kali >canplayer -I candump-xxxxxxxxxxx.log
Шаг №5: Использование cansend для отправки пользовательских фреймов
Наконец, у нас есть инструмент cansend. Он позволяет повторно воспроизвести конкретный кадр или отправить специально созданный CAN-кадр. Если мы хотим повторно отправить отдельный кадр, выделенный выше с ID=161,
мы делаем это, входя;
kali > cansend vcan0 161#000005500108000d
Где:
vcan0 — это интерфейс
161# — это идентификатор кадра
000005500108000D — это данные, которые мы хотим отправить
Теперь, когда мы нажмём Enter, специальный CAN-кадр будет отправлен по сети. Надеюсь, очевидно, что при обратном проектировании сети именно эта команда будет использоваться для инициирования желаемых действий в CAN-сети, таких как нажатие на педаль газа, открытие двери, нажатие тормоза и т. д.
Краткое содержание
Теперь, когда мы установили ICS Simulator и поняли основы ключевых инструментов CAN-utils, мы можем начать использовать эти инструменты для реверс-инжиниринга CAN-шины на нашем ICS Simulator и взять под контроль транспортное средство!
В первой части серии, посвящённой симулятору ICS, мы установили утилиты CAN, а также приборную панель и органы управления симулятора ICS. В этом руководстве мы будем использовать утилиты CAN или SOCKET CAN для просмотра и анализа трафика CAN.
Как вы помните из моего руководства «Автомобильный взлом, часть 2 », can-utils содержит следующие утилиты:
1. Базовые инструменты для отображения, записи, генерации и воспроизведения CAN-трафика
- candump : отображение, фильтрация и запись данных CAN в файлы
- canplayer : воспроизведение лог-файлов CAN
- cansend : отправить один кадр
- cangen : генерация (случайного) CAN-трафика
- cansniffer : отображает различия в содержании данных CAN (только 11-битные идентификаторы CAN)
- canlogserver : регистрирует CAN-кадры с удаленного/локального хоста
- bcmserver : интерактивная настройка BCM (удалённая/локальная)
- socketcand : использовать сокеты RAW/BCM/ISO-TP через сокеты TCP/IP
- cangw : инструмент пользовательского пространства шлюза CAN для настройки NetLink
- canbusload : рассчитать и отобразить нагрузку на шину CAN
- can-calc-bit-timing : версия вычисления битрейта в ядре для пользовательского пространства
- canfdtest : полнодуплексная тестовая программа (DUT и хост-часть)
1. кансниффер
2. candump
3. canplayer
4. cansend
Шаг №1: Запустите cansniffer
Начнём с анализа CAN-трафика с помощью cansniffer. Для этой утилиты необходимо указать интерфейс ( в нашем случае vcan0 ). Если вы хотите увидеть цветной вывод, используйте опцию -c .
kali > cansniffer -c vcan0
При использовании опции -c изменяемые значения окрашиваются в красный цвет, что помогает нам идентифицировать эти ключевые значения.
Шаг №2. Использование cansniffer для фильтрации определенного трафика
Вместо того чтобы следить за всем трафиком, проходящим мимо нашего терминала, мы можем фильтровать трафик аналогично более широко используемому снифферу Wireshark.
Давайте посмотрим на экран справки в cansniffer, чтобы научиться это делать.
kali > cansniffer -h
Тогда, если бы мы хотели видеть только трафик с ID=161, мы могли бы ввести:
kali > cansniffer -c vcan0
Как только сниффер запустится, мы можем войти;
-000000
+161
Важно отметить, что при вводе вышеуказанных команд они не будут отображаться на экране . После ввода идентификатора сниффер начнёт фильтровать весь трафик, кроме трафика с идентификатором 161.
Как вы можете видеть на снимке экрана выше, cansniffer теперь отображает только данные для ID=161.
Шаг №3 Использование candump для захвата CAN-трафика
В то время как cansniffer способен анализировать трафик в сети CAN аналогично Wireshark, утилита candump в пакете can-utils способна захватывать трафик CAN и сохранять его в файле для анализа или воспроизведения в будущем.
Для этого нам нужно всего лишь использовать опцию -l для ведения журнала и опцию -c для раскрашивания вывода.
kali > candump -c -l vcan0
Если мы хотим вести лог и просматривать вывод, можно использовать опцию -s 0 (тихий режим 0). Кроме того, если мы хотим преобразовать вывод из шестнадцатеричного формата в ASCII (удобочитаемый), можно добавить опцию -a (ASCII) . Это запустит candump в режиме раскрашивания с выводом в ASCII, сохраняя данные в лог-файл и одновременно отправляя их на терминал (stdout).
Кали > candump -c -l -s 0 -a vcan0
Шаг №4 Использование canplayer
У нас также есть ещё один ключевой инструмент для работы с сетями CAN — canplayer. Он позволяет нам «воспроизводить» выходные данные candump. Таким образом, мы можем перехватывать данные из сети CAN и затем воспроизводить их по сети. Для этого достаточно использовать опцию -I , а затем указать имя файла журнала candump.
kali >canplayer -I candump-xxxxxxxxxxx.log
Наконец, у нас есть инструмент cansend. Он позволяет повторно воспроизвести конкретный кадр или отправить специально созданный CAN-кадр. Если мы хотим повторно отправить отдельный кадр, выделенный выше с ID=161,
мы делаем это, входя;
kali > cansend vcan0 161#000005500108000d
Где:
vcan0 — это интерфейс
161# — это идентификатор кадра
000005500108000D — это данные, которые мы хотим отправить
Теперь, когда мы нажмём Enter, специальный CAN-кадр будет отправлен по сети. Надеюсь, очевидно, что при обратном проектировании сети именно эта команда будет использоваться для инициирования желаемых действий в CAN-сети, таких как нажатие на педаль газа, открытие двери, нажатие тормоза и т. д.
Краткое содержание
Теперь, когда мы установили ICS Simulator и поняли основы ключевых инструментов CAN-utils, мы можем начать использовать эти инструменты для реверс-инжиниринга CAN-шины на нашем ICS Simulator и взять под контроль транспортное средство!