
Sinal de
barramento CAN bruto O barramento CAN (Controller Area Network) se tornou um padrão na indústria automotiva: todos os carros novos são obrigados a suportar CAN (desde 2001 na Europa e desde 2008 nos EUA). Além de carros, o CAN é usado em uma ampla variedade de outros dispositivos. Os fabricantes de equipamentos diagnósticos para CAN anunciam a sua utilização, além de diversos equipamentos automotivos, em motocicletas, empilhadeiras, navios, trens de minas, batiscafo, aeronaves não tripuladas, etc. Vamos ver o que é CAN.
Vários CANs são usados em veículos; por exemplo, no Ford Focus existem quatro desses pneus - três de alta velocidade (500 kbps) para controlar o motor, freios, painel, etc., e um de baixa velocidade (125 kbps) para controlar portas, faróis, airbags, sistema de áudio, ar condicionado e tudo mais outras coisas. Ao se conectar ao CAN, você pode simular sinais de qualquer dispositivo no carro - por exemplo, controlar o ar condicionado do aplicativo no telefone ou dar corda no hodômetro sem mover o carro. Ao se conectar ao barramento Arduino e ao relé, você pode controlar uma câmera de estacionamento adicional a partir do painel . Até mesmo startups trabalhando em carros autônomos, como Voyage, comece a prototipagem conectando-se ao CAN em um carro de produção normal e aprendendo a simular os sinais dos pedais e do volante.
Para conectar ao CAN em um carro, geralmente há um conector OBD-II (On-Board Diagnostics) próximo ao volante.

Os adaptadores OBD2-USB para conectar um computador ao CAN custam a partir de US $ 5 e permitem rastrear todo o tráfego dentro do carro. Às vezes, o conector OBD-II é protegido por um "firewall de hardware" que permite receber pacotes de dispositivos conectados ao CAN, mas não permite que os pacotes sejam enviados de volta ao barramento. Nesse caso, basta desparafusar o conector e conectá-lo aos fios CAN.

Cada pacote transmitido no barramento CAN consiste no ID do dispositivo transmissor (11 ou 29 bits) e até 8 bytes de dados transmitidos. O tráfego que passa pelo ônibus quando a ignição é ligada pode ser parecido com isto:

Existem muitas ferramentas para analisar o tráfego CAN, tanto comercial quanto OpenSource. O pacote can-utils para Linux inclui um utilitário
cansniffer
que exibe para cada CAN ID apenas o último pacote enviado, e assim permite que você acompanhe as alterações nas leituras de cada sensor no barramento:

Para a engenharia reversa do tráfego CAN, pesquisadores de Cingapura, de cujo relatório tirei este rastreamento, gravaram o painel do carro experimental em vídeo e, em seguida, correlacionaram as alterações no painel com as alterações simultâneas no tráfego. Tendo assim determinado o CAN ID do sensor de velocidade e o formato dos dados transmitidos por ele, aprenderam a "falsificar" seus pacotes, transmitindo leituras falsas para o velocímetro e tacômetro.
Deve-se entender que paralelamente à transmissão de pacotes “falsos”, os sinais reais do sensor de velocidade continuam a ser transmitidos pelo barramento. Para que o tacômetro mostre leituras fabricadas, é necessário monitorar a transmissão de leituras reais no barramento e suprimi-las de alguma forma - por exemplo, imediatamente após detectar a transmissão do CAN ID do sensor de velocidade, "abafar" fisicamente o barramento encurtando as linhas de dados. Um método mais simples, puramente por software, de suprimir leituras reais é transmitir pacotes “falsos” imediatamente após sua transmissão, enquanto o tacômetro ainda não teve tempo de responder. Por exemplo, o script de shell simples a seguir monitora uma transmissão com CAN ID = 0x0C9 e, imediatamente depois, transmite um pacote fabricado usando um utilitário
cansend
do mesmo can-utils:
candump can0 | grep "0C9" | enquanto lê a linha; do cansend can0 0C9 # 8021C0071B101000; feito
Embora todos os dispositivos no carro estejam conectados ao CAN, nem todas as suas funções são controladas pelo CAN. Por exemplo, os sinais sobre o grau de pressão dos pedais do acelerador e do freio são transmitidos ao CAN no Ford Escape - mas esses sinais são usados apenas pela unidade ABS, enquanto os atuadores do acelerador e do freio estão diretamente conectados aos pedais, ignorando o CAN.
Do ponto de vista da segurança, não há dúvida de qualquer vulnerabilidade no relatório dos cingapurianos, porque o acesso físico ao barramento é necessário para transmitir pacotes CAN “falsos”. Além disso, os pacotes podem ser protegidos com uma soma de verificação - por exemplo, em veículos Toyota, o último byte de cada pacote deveigual à soma de todos os anteriores (módulo 256). Além disso, a Toyota usa filtragem de destinatário para proteger contra pacotes indesejados - por exemplo, ignora curvas de direção em mais de 5% do valor atual.
No entanto, os pesquisadores de segurança conseguiram obter acesso remoto ao CAN: primeiro, a uma curta distância - por meio de vulnerabilidades em um módulo Bluetooth conectado ao mesmo barramento; e entãovia rede celular da Sprint, por meio da qual SUVs de diversos fabricantes americanos recebiam dados de tráfego. Os pesquisadores que demonstraram a interceptação do controle de um Jeep Cherokee a uma distância de vários quilômetros receberam uma recompensa de US $ 80.000 da Agência de Projetos de Pesquisa Avançada de Defesa (DARPA). Desde então, muitos fabricantes de automóveis anunciaram seus próprios programas de recompensa prometendo pagamentos de US $ 1.500 ou mais para cada vulnerabilidade descoberta. Portanto, a engenharia reversa do tráfego no barramento CAN pode não apenas adicionar novas possibilidades ao seu carro, mas também reabastecer significativamente sua carteira.
