Как взломать любой автомобиль с помощью этого инструмента?

Как взломать любой автомобиль с помощью этого инструмента?

Dark Angel - История Одного Хакера...

Посмотрим с тобой темы, которые будут рассмотрены экспертами по информационной безопасности в этом тесте/курсе автоматического хакерства: настройка виртуальных сред для тестов, анализ трафика CAN, анализ трафика CAN, обратный инжиниринг идентификаторов CAN, атаки типа "отказ в обслуживании", воспроизведение/внедрение трафика, Кодирование ваших собственных инструментов CAN Socket в python, Атаки, направленные против компонентов вашего автомобиля и переход от этого к атаке на настоящий автомобиль с аппаратным обеспечением.

Прежде чем углубляться в конкретные детали взлома автомобиля, я поясню, что такое CAN. В этом случае мы собираемся запустить простую симулированную сеть CAN Bus, которая управляет несколькими функциями вашего симулируемого автомобиля. Эксперты всегда говорят нам, что лучше учиться на практике, чем сидеть и говорить много сетевых терминов.

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

Начнем с того, что исследователи в области информационной безопасности говорят, что вам нужно самостоятельно настроить установку Ubuntu VMware и загрузить ее. При желании вы также можете использовать VM Kali Linux, однако у вас могут быть проблемы с копированием, и считается, что Kayak давал проблемы с установкой. Также известно, что Kali хорошо работает с виртуальной машиной OpenGarages.

Установите библиотеки PreReq. После загрузки вы установите утилиты CAN и необходимые библиотеки. Это действительно легко сделать с помощью следующих команд Apt-get:

sudo apt-get update
sudo apt-get install libsdl2-dev libsdl2-image-dev can-utils
Then we will deploy the ICSimulator repository:
git clone https://github.com/zombieCraig/ICSim.git

Запустите симулятор: теперь мы можем запустить симулятор, изменив каталоги на загруженный репозиторий и выполнив следующие 2 команды, которые настроят виртуальный интерфейс CAN и кластер графического интерфейса симулятора:

Запустите скрипт конфигурации, чтобы получить интерфейс vcan0:

root @ kali: ~ / ICSim # ./setup_vcan.sh
root @ kali: ~ / ICSim # ./icsim vcan0

В новой вкладке терминала откройте контроллер симулятора с помощью следующей команды:

root @ kali: ~ / ICSim #. / controls vcan0

Профессионалы отмечают, что контроллер должен находиться в центре экрана графического интерфейса пользователя для отправки команд клавиатуры на симулятор.

Использование симулятора:

Специалисты по информационной безопасности говорят, что на симуляторе есть спидометр с указателями поворота вправо и влево, дверьми и т.д. Есть список команд для управления симулятором, когда панель управления сфокусирована.

Клавиши «вверх» и «вниз» управляют спидометром групп счетчиков

Левая и правая клавиши Управление мигающими огнями

Сдвиг вправо + X, A или B открыть двери

Сдвиг влево + X, A или закрытые двери

Поэкспериментировав с некоторыми из предыдущих команд, например, Shift + X, вы увидите, что интерфейс меняется.

Теперь у вас есть собственная машина для взлома. Важно отметить, что в приведенных выше командах настройки мы используем интерфейс VCan0. Запустите Ifconfig, и вы увидите, что у него есть новый сетевой интерфейс, который обращается к сети CAN через VCan0.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ ifconfig vcan0

vcan0 Link encap: UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-

UP RUNNING NOARP MTU: 16 Metric: 1

RX packages: 558904 errors: 0 discarded: 0 overshoots: 0 frame: 0

TX packages: 558904 errors: 0 discarded: 0 overshoots: 0 operator: 0

Collisions: 0 txqueuelen: 1

Bytes RX: 3663935 (3.6 MB) Bytes TX: 3663935 (3.6 MB)

Исследователи отмечают, что сети автомобилей выполнены по множеству более распространенных протоколов, чем CAN. Вы можете думать о шине CAN как о сетевом центре, где каждый может видеть трафик всего мира. Это верно до некоторой степени, хотя вы можете не видеть весь трафик, если вы не подключены к этой конкретной шине. Вы можете думать о типе трафика CAN, аналогичного UDP-трафику, в котором он отправляется и забывается, главное отличие состоит в том, что части сети шины CAN на самом деле не имеют адресов, и все выполняется с идентификаторами и арбитражными приоритетами.

Теперь давайте проверим, можете ли вы видеть наш CAN-трафик с нашей виртуальной машины через утилиту CanDump, которую вы установили как часть предыдущего пакета CanUtils. Используя следующую команду в интерфейсе vcan0, который использует наш симулятор, вы можете увидеть последовательность трафика:

ficti0n @ ubuntu: ~ / Desktop / ICSim $ candump vcan0

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

Захватывать и играть в CAN действия; можно было бы выполнить действие и воспроизвести его. Вы должны увидеть, что действия повторяются в повторении, если трафик для действия, которое мы записали, находится в той же сети шин, к которой подключено наше устройство. Внутри автомобиля много сетей, и наше сетевое подключение не гарантируется, разъем порта OBD2 подключен к той же сети, что и дверь, которую мы открываем.

Еще один полезный инструмент, включенный в пакет CanUtils, - это CanPlayer для воспроизведения трафика, говорят эксперты по информационной безопасности. Если функциональность, которую мы пытаемся захватить, находится в той же шине, что и адаптер, подключенный к автомобилю, или в нашем случае с интерфейсом Virtual CAN, мы можем использовать CanDump для сохранения трафика в файле. Затем мы используем CanPlayer для воспроизведения трафика в сети. Например, запустите CanDump, откройте дверь и затем воспроизведите функциональность с помощью CanPlayer.

Лабораторные 1 этапы:

Запустить CanDump

Право Shift + X, чтобы открыть дверь

Отмена CanDump (ctrl + c)

Влево Shift + X, чтобы закрыть дверь

Запустить может игрок с сохраненным дампом и переиграет трафик и откроет дверь

Запись об открытии двери: (-l для записи)

ficti0n @ ubuntu: ~ / Desktop / ICSim $ candump -l vcan0

Воспроизведение файла CanDump: (используйте файл, созданный вашим дампом Can)

ficti0n @ ubuntu: ~ / Desktop / ICSim $ canplayer -I candump-2018-04-06_154441.log

В этот момент вы должны увидеть, что ваша дверь снова открыта. Сети CAN не похожи на TCP / IP, они больше похожи на UDP, поскольку вы отправляете запрос и не ожидаете ответа. Затем он теряется, и вы должны отправить снова. Вполне вероятно, что вы отправляли что-то с более высоким приоритетом в сеть во время его воспроизведения, и ваш трафик был омрачен этим.

Взаимодействие с Can Bus и реверсирование трафика; это хорошо, но CanDump не очень полезен для этого, он движется быстро, поэтому мы можем многому научиться. Вместо этого мы можем использовать CanSniffer с цветным выводом, чтобы показать нам байты внутри пакетов, которые меняются.

Для запуска CanSniffer выполните следующее:

Теперь вы увидите время, ID и данные. Наиболее важной частью нашего использования являются поля ID и Data.

Идентификатор кадра связан с устройством в сети, созданным отправляемым ящиком. Идентификация также определяет приоритет структуры в сети. Чем меньше номер CAN-ID, тем выше приоритет, который он будет иметь в сети, и тем более вероятно, что он будет обрабатывать его первым. Поле данных - это информация, которая отправляется для изменения какого-либо параметра, например, для разблокировки двери или обновления вывода. Значения красного цвета - это значения, которые изменяются в неактивном состоянии, в котором вы находитесь в данный момент.

Определить, какой идентификатор и байт управляют ускорителем; с открытым окном анализатора терминала, поместите симулятор и контроллер на передний план, с контроллером в качестве окна, в котором вы щелкнули и выбрали. Обратите внимание на вывод CanSniffer, нажимая клавишу СТРЕЛКА ВВЕРХ, и найдите значение белого цвета, но теперь оно красного цвета и увеличивается с ростом ускорения, говорят исследователи в области информационной безопасности.

Выберите значения с помощью фильтров; чтобы выбрать значение акселератора, щелкните в окне терминала и нажмите -000000, а затем клавишу Enter, которая сотрет все смещенные значения. Затем нажмите +244, а затем клавишу Enter, что снова добавит идентификацию ускорителя. Теперь вы можете снова нажать на контроллер и увеличить скорость с помощью кнопки со стрелкой вверх, чтобы не было шумов, мешающих обзору. Вместо этого, как показано ниже, в вашем результате будет только идентификатор 244.

Чтобы снова получить идентификаторы, нажмите в окне терминала и введите +000000, а затем клавишу Enter. Теперь вы должны увидеть весь выход, как и раньше. По сути, 000000 означает включить все. Когда вы ставите перед ним знак минус, он отрицает все и очищает окно терминала, фильтруя все значения.

Определить идентификатор Blinker; обнаружить идентификацию для мигающих огней. Если вы нажмете стрелку влево или вправо с выбранным окном управления, вы увидите, что в списке появится совершенно новый идентификатор, идентификатор 188 показан на следующем изображении, который связан с мигающим светом.

Этот идентификатор не упоминался, поскольку он не использовался при выводе данных, пока вы не нажали кнопку мигания. Давайте сбросим это значение, нажав -000000, а затем +188. Как и в примере с ускорителем, ваш терминал должен показывать только ID 188; изначально это будет показано со значениями в 00 байтов.

Нажав мигающий свет влево и вправо, вы можете увидеть первое изменение байта с 00 на 01 или 02. Если ни один из них не будет нажат, это будет 00. Идентификация будет отображаться как 00, пока не истечет время и не исчезнет из список, когда он не активен.

Пришло время сделать некоторую инверсию протокола. Эта лабораторная работа даст вам представление о том, как изменить всю функциональность автомобиля и связать каждое действие с правильным ID и BYTE. Таким образом, вы можете создать карту желаемых изменений функциональности. Мы уже сделали несколько шагов о том, как определить, какой байт и идентификатор связаны с действием. Теперь пришло время сопоставить все оставшиеся функции, прежде чем переходить к атаке на отдельные компоненты.

Атакуя функциональность со всеми назначенными функциями, мы теперь можем обращаться к нескольким устройствам в сети напрямую, не взаимодействуя с графическим интерфейсом контроллеров. Возможно, мы въехали в автомобиль через сотовое соединение OnStar или через центральную консоль соединения BLE, которое каким-то образом было подключено к сети CAN.

После эксплойта у нас есть прямой доступ к сети CAN, и мы хотели бы предпринять действия. Или, может быть, вы установили беспроводное устройство в порт OBD2 под платой.

Используя данные из лаборатории обращения к сети CAN, мы можем вызвать эти действия напрямую с соответствующим CAN-ID и байтом. Поскольку мы далеки от цели, мы не можем просто протянуть руку и схватить руль или сжать акселератор; вместо этого мы отправим вашу структуру CAN для внесения изменений.

Один из способов сделать это - воспользоваться утилитой CanSend, говорят исследователи в области информационной безопасности. Возьмите информацию из нашей лаборатории выше и заставьте левый сигнал поворота мигать со следующим ID 188 для сигнала поворота, изменив первый байт на 01, что указывает на нажатие левого сигнала. CanSend использует формат данных ID #.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ cansend vcan0 188 # 01000000

Один из способов сделать это - воспользоваться утилитой CanSend, говорят исследователи в области информационной безопасности. Возьмите информацию из нашей лаборатории выше и заставьте левый сигнал поворота мигать со следующим ID 188 для сигнала поворота, изменив первый байт на 01, что указывает на нажатие левого сигнала. CanSend использует формат данных ID #.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ cansend vcan0 244 # 00000011F6

Ничего не произойдет, потому что это так быстро, что стрелка не будет прыгать до этого значения. Итак, попробуйте повторять это снова и снова с помощью цикла bash.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ while true; cansend vcan0 244 # 00000011F6

Теперь вы можете заметить, что стрелка немного подпрыгивает. Стрелка отскакивает назад и вперед, потому что отправляется нормальный трафик CAN, сообщающий машине, что на самом деле она установлена между 00, что означает, что она составляет 30 миль в час. Теперь скорость автомобиля изменилась, и мигающий свет был включен без использования обычных элементов управления поворотником.

Одним из способов решения этой проблемы является мониторинг сети CAN, и когда вы видите отправленный идентификатор, он автоматически отправит соответствующий идентификатор с другим значением. На этом этапе мы попытаемся изменить выходную скорость, отслеживая изменения. Затем мы просто запускаем CanDump и анализируем идентификатор 244 в выходных данных записи, который является значением акселератора, который сообщает машине скорость. Когда устройство в автомобиле сообщает идентификатор 244 и его значение, мы немедленно отправим собственное значение, сообщив, что скорость равна 30 милям в час, а значение 11, сообщили исследователи в области информационной безопасности.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ candump vcan0 | grep “244” | while reading the line; cansend vcan0 244 # 00000011F6

С помощью этой операции через несколько секунд вы увидите, что скорость отрегулирована примерно до 30 миль в час, как только вы захватите законный сетевой трафик CAN-ID 244 и сразу же отправите свое собственное значение.

Пока предыдущая команда все еще работает, нажмите на окно контроллера и начните удерживать стрелку вверх, когда контроллер находится в фокусе. После нескольких секунд ожидания, когда скорость превысит 30 миль в час, вы увидите, что стрелка борется за максимальное действительное значение, и снова установите значение 30 миль в час, когда ваша команда продолжает отправлять свое значение в качестве замены фактической скорости.

Это способ контролировать сеть и очень грубо реагировать на то, что вы видите. Может быть, кто-то украл вашу машину, и вы хотите контролировать, есть ли открытая дверь, и если они пытаются открыть дверь, она немедленно запирает их.

Report Page