Современный автомобиль — это не машина с электроникой. Это сеть из 70–150 ECU (электронных блоков управления), которые управляют всем: от впрыска топлива до адаптивного круиз-контроля. У каждого блока — своя прошивка, свои протоколы, свои уязвимости.
🎯 Точка входа, которую видит атакующий первой — OBD-II порт. Тот самый 16-пиновый разъём под приборной панелью, к которому подключается любой механик с диагностическим сканером. С точки зрения MITRE ATT&CK — это классический Hardware Additions (T1200): физический доступ к внутренней шине автомобиля через штатный интерфейс.
Но тут важно понимать разницу, которую путают даже в профессиональных материалах. OBD-II — это физический уровень: разъём, пины, питание. UDS (Unified Diagnostic Services, ISO 14229) — протокол прикладного уровня, который течёт поверх CAN-шины. Грубо: OBD-II — розетка, UDS — то, что через неё передаётся.
⚙️ Через UDS исследователь может переключать диагностические сессии, читать коды ошибок, получать доступ к идентификаторам данных и — при определённых условиях — полностью перепрошить блок. Всё это через стандартные сервисы:
0x10 (переключение сессии), 0x34 (запрос загрузки), 0x36 (передача данных).Пример из практики: отправляете на диагностический ID двигателя (0x7E0) запрос
02 10 03 — переключение в расширенную сессию. Получаете 02 50 03 — успех. Или 03 7F 10 22 — отказ с кодом NRC 0x22: блок решил, что условия не выполнены (например, автомобиль движется).🔒 Казалось бы, gateway-ECU в современных машинах фильтрует запросы и ограничивает маршрутизацию. Через OBD-порт реально видно 5–15 блоков из потенциальных 80+. Но даже этот ограниченный набор включает критичные системы: двигатель, ABS, трансмиссию, подушки безопасности.
И вот где начинается самое интересное. Часть производителей допускает переключение в programmingSession без должной аутентификации. Это не теория — это реальные находки в аудитах. Блок, который должен требовать seed-key обмен перед открытием доступа к прошивке, просто... не требует.
Прежде чем идти дальше — важный момент про стенд. Тестирование на живом автомобиле — плохая идея. Случайный CAN-фрейм может заблокировать трансмиссию или сработать подушки безопасности. Правильная схема: ECU на лабораторном стенде, питание 12 В, CAN-шина с терминирующими резисторами 120 Ом на каждом конце.
🛠 Первый шаг любого аудита — пассивный мониторинг. Поднимаете интерфейс:
ip link set can0 up type can bitrate 500000, запускаете candump can0 и смотрите реальный трафик между блоками. Уже по дампу видна архитектура сети: активные арбитражные ID, периодичность сообщений, паттерны взаимодействия. Это Network Sniffing (T1040) в чистом виде — и отправная точка для всего дальнейшего исследования.Полная методология — с hex-примерами, разбором seed-key аутентификации и техниками извлечения прошивок — в статье.
https://codeby.net/threads/pentest-avtomobil-nykh-ecu-ot-obd-ii-porta-do-izvlecheniya-proshivok-cherez-uds.92845/
