Hardtech 2026

Desafios Car Hacking

Laboratório Prático de Engenharia Reversa e Injeção de Pacotes em Redes CAN

🏎️ 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!

Formulário de Engenharia Reversa

Preencha todos os 10 desafios abaixo. Ao final, submeta suas flags para validação do sistema.

Desafio 01

Ao abrir o cansniffer ou candump e pressionar a seta para cima (aceleração) nos controles do ICSim, o velocímetro começa a subir e um ID específico começa a alterar seus bytes rapidamente.

Desafio 02 Quais são os dois bytes (da esquerda para a direita) que alteram seus valores de forma diretamente proporcional à velocidade indicada no painel?

Analise o payload do ID descoberto no desafio anterior enquanto mantém o carro acelerado. Selecione exatamente os 2 bytes corretos no grid abaixo (considerando o índice inicial B0).

Selecione exatamente 2 bytes (0 selecionados):

Desafio 03

Ative as setas do veículo utilizando as setas laterais do teclado nos controles do ICSim e monitore o fluxo de IDs.

Desafio 04

Monitore os bytes de payload do ID descoberto no desafio anterior ao ligar a seta para a esquerda.

Desafio 05 Antes de tudo, abra todas as portas. Se você executar o comando cansend vcan0 19B#00000F00, o que acontecerá visualmente no painel do simulador?

Simule ou analise a estrutura do pacote com ID 19B e seu payload associado de controle de portas.

Desafio 06

Formule o comando completo informando a interface de rede, o ID correto e o payload necessário para acionar as duas setas simultaneamente.

Desafio 07 Se você quiser trancar APENAS A PORTA DO MOTORISTA (deixando as outras três abertas), qual deve ser o valor do terceiro byte do payload (B2) no ID 19B?

Analise a máscara de bits correspondente a cada porta no byte responsável pelo travamento no simulador.

Desafio 08

Imagine que você capturou o tráfego do simulador em um arquivo chamado `hack.log` utilizando o `candump` e deseja executar o ataque de Replay.

Desafio 09

O barramento CAN gera milhares de pacotes por segundo. Aplique o filtro inteligente do candump utilizando o ID e a máscara correspondente.

Desafio 10 O que os dois primeiros bytes (B0 e B1) do ID `244` estão medindo em tempo real no veículo?

Observe o comportamento dos dados deste ID enquanto você interage com outros botões ou acelera o simulador.

📢 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.

Módulo Motor: E aí galera, o motor tá a 3500 RPM agora!
Painel: Bloco recebido, vou mover o ponteiro do conta-giros.
Câmbio Auto: Bloco recebido, vou recalcular a troca de marcha.

📦 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 00 a FF.
CAN ID
188
Payload (8 Bytes)
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.

[EXEMPLO DE ATAQUE]
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.

Byte Hexadecimal (00 a FF)
0x
Visualização dos Bits Individuais (b7 a b0)