🏎️ Bem-vindo(a) ao desafio prático de engenharia reversa automotiva!
Sua missão é utilizar o Instrument Cluster Simulator (ICSim) rodando no Linux
juntamente com o pacote can-utils para interceptar, analisar e injetar pacotes
na nossa rede CAN simulada (vcan0).
Através do terminal do Linux, você precisará descobrir quais IDs e payloads controlam as funções vitais do veículo simulado (velocidade, setas e travas das portas) para desvendar as respostas corretas e capturar a flag final!
Dica de ouro: Fique atento à formatação exigida em cada pergunta (IDs com 3 dígitos em hexadecimal, payloads exatos ou comandos completos) e atente-se às letras maiúsculas/minúsculas e espaços!
📢 O Conceito de Barramento CAN
O Controller Area Network (CAN) é o sistema de comunicação padrão usado na eletrônica veicular moderna. Em vez de usar quilômetros de fios conectando cada sensor e atuador individualmente, a rede CAN atua como um barramento compartilhado de dados.
A Analogia do Grupo de Chat: Pense na rede CAN como um grande grupo de WhatsApp onde todos os módulos eletrônicos do veículo (injeção, painel, portas, ABS) são membros. Quando um módulo quer falar, ele envia uma mensagem no grupo. Todos escutam tudo ao mesmo tempo. É responsabilidade de cada membro ler a mensagem e decidir se ela é relevante para ele ou não.
📦 Anatomia de uma Mensagem CAN
Como não há endereços específicos para remetente ou destinatário nas mensagens CAN, a estrutura do pacote é extremamente simples, dividindo-se principalmente em duas partes:
- CAN ID (Identificador): Funciona como o "assunto" ou "título" do pacote. Ele indica o tipo de informação contida e determina a prioridade da mensagem na rede (IDs mais baixos têm maior prioridade).
- Payload (Carga Útil): Contém os dados em si. Tem um tamanho máximo de 8
bytes (representados de B0 a B7). Cada byte pode armazenar um valor hexadecimal de
00aFF.
188
01 00 00 00 00 00 00 00
No exemplo acima, o ID 188 representa o controle das setas e o primeiro byte 01 instrui o painel a acender a seta da esquerda.
💉 Injeção de Pacotes e Car Hacking
Devido à ausência de mecanismos nativos de criptografia ou autenticação no protocolo CAN clássico, a rede é altamente vulnerável a ataques de Injeção de Pacotes.
Se um hacker conseguir acesso físico (através da porta de diagnóstico OBD-II, de faróis
expostos, etc.) ou lógico à fiação da rede CAN, ele poderá utilizar ferramentas como o cansend para fabricar e injetar pacotes simulando o
comportamento de sensores legítimos.
Se o hacker injetar continuamente o pacote abaixo, o painel do simulador receberá a instrução e trancará todas as portas, ignorando a vontade real do motorista:
cansend vcan0 19B#00000F00
Isso ocorre porque o painel de instrumentos simplesmente atua com base nas últimas instruções recebidas no barramento, sem validar se quem enviou foi a central original das chaves ou um dispositivo invasor.
🧮 Conversor Hexadecimal para Binário
Em redes CAN, cada bit individual de um byte do payload pode representar um interruptor ligado/desligado (ex: portas trancadas/destrancadas). Utilize esta ferramenta interativa bidirecional para converter bytes hexadecimais em seus bits individuais e vice-versa em tempo real.