Conferência DEFCON 27. Seu carro é meu carro. Parte 1

Resumo do desempenho:

para muitos de nós, um carro é uma das compras mais caras que já fizemos. Em um mundo onde todas as coisas estão interconectadas, é bastante natural querer controlar remotamente seu carro: receba lembretes onde o estacionamos, verifique se você esqueceu de trancar as portas ou ligue o motor remotamente para pré-aquecer ou resfriar o interior, dependendo da época do ano.

Existem muitos fabricantes que oferecem sistemas de alarme opcionais que fornecem essas comodidades e tranqüilidade. Mas quanto podemos confiar nos fornecedores desses sistemas que protegem o acesso aos nossos carros no domínio digital? Neste relatório, Jmaxxz falará sobre o que ele descobriu quando analisou um desses sistemas.

Jmaxxz é conhecido por seu trabalho com os sistemas domésticos inteligentes August Smart Lock (DEFCON 24, palestra “Backdooring The Frontdoor”). Nos últimos anos, o foco de sua atenção tem sido os dispositivos para a Internet das coisas. Ele participou das seções “dia zero da vila da IoT” do DEFCON 24 e DEFCON 25 e finalmente decidiu que era hora de pesquisar o produto do mercado automotivo secundário - partida remota (doravante denominada DS).



Então, meu nome é J-Max, sou programador por profissão e hacker por vocação. Faço tudo relacionado a castelos e, ao longo desta conversa, você ouvirá muitas declarações que expressam minha opinião exclusivamente e não estão relacionadas à opinião de meus empregadores anteriores, presentes e futuros. Como você provavelmente entendeu, isso será sobre carros, ou seja, sobre partidas remotas e sistemas de alarme. Vamos começar com o pano de fundo, que é importante nesse contexto, porque muitas pessoas consideram esses sistemas um luxo desnecessário.
Então, onde eu moro é bem frio, e meu amigo sofre de uma doença chamada síndrome de Raynaud. Do frio, ocorre um espasmo dos vasos sanguíneos das mãos, o fluxo sanguíneo para os dedos diminui acentuadamente, há sinais de queimaduras por congelamento até necrose tecidual. O slide mostra como costuma aparecer.



Em novembro passado, eu ainda não decidi o que dar a ela no Natal. E assim ela volta para casa chateada do aeroporto, porque seu carro não aqueceu no caminho de casa. Nesse momento, percebi que daria a ela um sistema de partida remota do motor e comecei a procurar a melhor opção. Verificou-se que o mercado de entradas remotas é bastante extenso e muitos fabricantes não fornecem informações suficientes sobre seus produtos.

Eles não informam como instalar o sistema e quais ferramentas usar para programar o dispositivo. Isso é um problema para mim, porque é meu carro, minha partida remota e preciso ter acesso a essas ferramentas. Então, pesquisei um pouco mais e encontrei uma empresa do Canadá, Fortin, que produz essas entradas e fornece voluntariamente toda a documentação necessária. Optei por este produto e comecei a procurar um controle remoto adequado. O fato é que, se você usar um controle remoto padrão com um iniciador remoto, seu alcance de ação será limitado ao alcance do controle remoto padrão. No mercado secundário, são oferecidos controles remotos que operam a uma distância de meia milha a uma milha e meia. De acordo com avaliações de consumidores, essa é uma jogada de publicidade, porque, na realidade, a distância é muito menor. Este é o problemaporque minha amiga precisa ligar o motor do carro estacionado no estacionamento do aeroporto assim que sair do avião, que fica a cerca de 800 metros.



Portanto, seria ótimo se ela pudesse simplesmente puxar o telefone, abrir o aplicativo e clicar em “Iniciar mecanismo”. Encontrei um produto de terceiros chamado MyCar que é totalmente compatível com o Fortin starter. Este é um pequeno chaveiro com um cartão SIM e um receptor GPS, que você pode colocar no carro e conectar-se a uma partida remota. Em seguida, usando um aplicativo móvel, você pode iniciar o mecanismo remotamente, desbloquear bloqueios e similares.



Eu pensei que isso seria maravilhoso: logo após o avião pousar, minha namorada poderá dar partida no motor e, quando chegar ao carro, a cabine já estará quente.

Então, vamos falar um pouco sobre como os iniciantes remotos funcionam. Para fazer isso, primeiro você precisa entender como o motor do carro é iniciado. Até meados dos anos 90, um acionador de partida de carro era uma trava mecânica tradicional em uma conexão de chave. Você tinha que inserir uma chave e girá-la para fechar o circuito elétrico. Então, nos Estados Unidos, as fechaduras marcadas como "imobilizador" se tornaram populares. Parece complicado, mas é apenas uma trava eletrônica. Portanto, você tem uma trava mecânica, que é a chave da trava eletrônica, que, por sua vez, é um transponder e contém algumas informações que podem ser lidas. E até você abrir a trava eletrônica, seu carro não liga. No lado direito do slide, você vê 2 teclas: esquerda para o imobilizador e direita para a chave de ignição usual.Simplesmente ativa os componentes mecânicos da fechadura, enquanto a tecla esquerda abre a fechadura eletrônica, que liga o motor do carro.



Por que estou falando sobre isso? O início remoto funciona através de um imobilizador. No próximo slide, você verá o diagrama de conexão do dispositivo Fortin EVO One com o imobilizador - na parte inferior esquerda, você verá um par de contatos designado como IMO. No canto superior direito do diagrama, você vê duas linhas: PODE BAIXAR e PODER ALTO. Estes são os contatos para conectar ao barramento CAN. A razão pela qual os arrancadores remotos são conectados ao barramento CAN é porque os custos de instalação são reduzidos porque menos conexões são usadas durante a instalação. Se o acionador de partida remoto puder ler dados do barramento CAN ou enviar comandos pelo barramento CAN, isso reduzirá o tempo de instalação do sistema de partida do motor remoto.

No canto superior esquerdo do diagrama, há vários GPIOs relacionados ao gerenciamento ou à leitura de informações da máquina. Por exemplo, você deseja que os faróis pisquem ou um bipe soe ao pressionar o botão de bloqueio. Essas coisas podem ser controladas usando esses GPIOs. No canto inferior esquerdo do circuito, você vê um grande conector desajeitado - esta é uma interface que fornece um desvio de uma trava mecânica. Ou seja, você não precisa inserir e girar a chave na chave da ignição, porque essa interface fornece interação direta do relé do sistema de partida remota com a trava elétrica.



Os slides a seguir mostram as etapas para instalar um iniciador remoto. Basicamente, consiste em remover a tampa da coluna de direção, instalar e conectar a unidade DS. Parece bastante assustador, mas simples.



O próprio controle remoto se conecta ao que Fortin chama de canal de dados. O sistema usa o protocolo de transferência de dados físicos proprietário UART - um transmissor assíncrono universal que troca dados a uma velocidade de 9600 baud. O Fortin Remote Starter simplesmente se conecta através do barramento UART aos dois controles remotos que você vê no slide.



Depois de instalar o DS, pensei em como esses dispositivos podem afetar a segurança do carro. Obviamente, o DS deve ignorar o imobilizador, então qual é a segurança em termos de possibilidade de roubo ou interceptação do controle da máquina? Isso se aplica não apenas à transmissão de dados em uma rede celular, mas também ao próprio sinal de início remoto. Então comecei a pesquisar as informações do fabricante na Internet sobre o protocolo de transferência de dados usado na Internet e entrei em fóruns onde as pessoas escrevem que Fortin se recusa a fornecer esse protocolo. Um dos motivos: “não divulgamos essas informações, porque o EVO não é um brinquedo para fãs, é destinado ao uso por profissionais.



Sendo um pouco profissional, decidi construir minha própria máquina na área de trabalho. Peguei a segunda unidade do sistema EVO, montei a placa de circuito, que era um carro, adicionei interruptores para simular a ignição, um botão para o pedal do freio e um monte de LEDs para exibir várias condições.



Combinando tudo isso, conectei o dispositivo FTI para monitorar o canal de dados e comecei a coletar esses dados. A princípio, parece algo como o mostrado no slide e não está totalmente claro o que está acontecendo aqui. Mas, olhando mais de perto, podemos dizer que há definitivamente algum tipo de estrutura aqui.



Observe que sempre que pressiono um botão no controle remoto, a mensagem que a antena envia ao meu DS sempre começa em 0C e termina em 0D. Portanto, se simplesmente dividirmos o que obtemos, assumindo que 0C é o começo e 0D o fim, terminamos com algo assim.



Alguma estrutura já está claramente visível aqui, para que você possa descobrir o que está acontecendo. Tendo passado algum tempo rastreando qual mensagem aparece depois de pressionar um determinado botão, consegui compilar uma tabela de comandos, cada um dos quais correspondendo a uma ação específica. Ou seja, quando você pressiona o botão no controle remoto, a antena envia um comando para o módulo de inicialização remota, que se parece com isso.



É assim que uma estrutura de equipe típica se parece.



Quando você pressiona o botão no controle remoto, a antena envia esse comando para o iniciador remoto. Acorda o byte 0C, seguido por 2 bytes, que, eu acho, representam a direção da transmissão. Isso é interessante, já que o UART já possui uma direção de transmissão / recepção de sinal, então marquei esses bytes como “lixo”, apenas os considere constantes. Isso é seguido por um único byte, indicando o comando que o usuário gostaria de executar. Pode ser uma trava de portas ou sua abertura, desativando o alarme, etc. Em geral, tudo o que você deseja fazer remotamente está relacionado a este comando. Carga útil FF FF F1 é o endereço ou identificador que identifica a antena remota da qual a mensagem veio. Se a unidade DS não reconhecer o identificador, o comando será ignorado. Se o DS aceitar o identificador,começa um procedimento de várias etapas, que inclui verificar a chave na ignição, ligar ou desligar o motor, pressionar o pedal do freio, etc. De fato, esse processo não importa muito, apenas o dispositivo no momento está estudando o ID.

No final da mensagem, há um byte com uma soma de verificação e um byte indicando o final do comando. Agora que entendemos como o protocolo funciona, o que podemos fazer sobre isso? Eu tenho alguns vídeos sobre o assunto. Infelizmente, por algum motivo, o vídeo fica sem som, por isso vou lhe dizer o que está acontecendo na tela. À esquerda da coluna de direção, na tampa do painel de instrumentos, há uma caixa branca que contém componentes eletrônicos com o firmware Particle.IO, que compreende o protocolo Fortin. Um fio com ponta azul é uma antena. Isso me permite interagir com a unidade de partida remota da cabine do carro e ver na tela do laptop o que está acontecendo.



Então, envio o comando de desbloqueio para o carro, mas ele não funciona, porque o DS não conhece essa antena. Como já mencionei, isso é simplesmente o UART, cuja propriedade é o suporte da chamada comunicação bidirecional, para que você possa receber remotamente informações sobre o estado do carro. Por exemplo, se o mecanismo foi iniciado ou parado fisicamente, a unidade DS enviará uma mensagem correspondente à antena do controle remoto. Nesse caso, a mensagem conterá o endereço desta própria antena.



O problema é que a comunicação é realizada através do protocolo UART, e qualquer pessoa que se conecte ao barramento UART pode ver o endereço para onde esta mensagem é enviada, para que no meu firmware seja possível clonar o endereço de uma antena existente, o que eu faço com o comando correspondente.



Para gerar uma mensagem, basta abrir a porta do carro. Como você pode ver, o DS envia uma mensagem para a antena informando que a porta estava aberta e o alarme é ativado imediatamente.



Para desligar o alarme, envio o comando "unlock", após o qual o som do alarme é desligado e o carro é desbloqueado. Você terá que aceitar minha palavra, porque não conseguimos executar este vídeo com som. Vamos tentar reproduzir o vídeo novamente.



Bem, o som apareceu (aproximadamente. Tradutor: o mesmo vídeo com trilha sonora é reproduzido na tela). Então, você viu como eu enviei o comando DS e liguei o alarme, e tudo isso sem uma chave. Agora vamos tentar ligar o carro da mesma maneira, para isso veremos o seguinte vídeo.

Normalmente, apenas digitar o comando "start" e tentar iniciar o mecanismo não funcionará. O motivo é que este é um carro com uma caixa de câmbio manual e, para esses carros, os sistemas de partida remota têm um procedimento especial. Nesse caso, você deve pressionar o botão de partida remota enquanto a chave estiver na ignição e o motor ligado. Então você pode remover a chave, sair do carro, fechar a porta e, em seguida, o DS desligará o motor e trancará a porta. Isso é feito para que o carro não reaja à partida remota do motor enquanto estiver dirigindo, porque é perigoso. No entanto, esse não é um recurso de segurança completo. Provar isso é bastante simples se você olhar para o bloco EVO do iniciador remoto. Você vê esse fio amarelo na forma de um loop, projetado para funcionar com uma transmissão mecânica.Se você o recortar, esta unidade poderá ser usada para um carro com transmissão automática. Esse design da unidade permite que você não aplique configurações especiais ao instalar o DS em carros com diferentes tipos de transmissão.



Portanto, o sistema não respondeu ao comando "start", então vou colocar esse bloco de volta no lugar e cortar esse fio para interromper a conexão. Agora, se você repetir o comando “start”, um sinal sonoro será emitido e os indicadores de status do sistema do veículo acenderão no painel de instrumentos, como acontece quando a chave é inserida na fechadura.



No momento, temos um carro que podemos iniciar remotamente sem uma chave na ignição, mas o módulo DS não é tudo o que precisamos. Em circunstâncias normais, você ainda não será capaz de deixar o veículo remotamente, no entanto, vamos tentar fazer o mesmo.

Para desativar o bloqueio do volante, você deve inserir uma chave convencional no interruptor de ignição, na qual não há transponder. Como você pode ver, basta mudar a chave para a posição anterior ao arranque do motor e o volante Subaru Impreza começa a girar completamente livremente.

No entanto, se você não tiver nenhuma tecla, ao pressionar o pedal do freio, o carro irá parar. É fácil contornar essa limitação. Descubra como o carro informa ao acionador de partida remoto que o freio está acionado. Você vê várias portas coloridas na parte traseira da caixa do módulo EVO - um cabo do barramento CAN será conectado aqui. Basta puxar este cabo para fora da unidade DS depois que o carro é iniciado remotamente e ele não responde ao pressionar o pedal do freio. Como esta unidade está localizada sob a tampa da coluna de direção, eu dou o comando de partida através do meu laptop, o carro arranca, abro a porta, saio do carro e retiro o conector do barramento CAN do bloco EVO. Como você pode ver, o motor do carro está funcionando, enquanto ainda não temos nenhuma chave na ignição.

Agora, se você pressionar o pedal do freio, nada acontecerá, porque o EVO não sabe que foi pressionado. Depois disso, posso ficar atrás do volante, pressionar o freio, colocar a alavanca de câmbio na posição “Drive” e o carro vai embora. Tudo isso é feito sem nenhuma pista.

21:40

DEFCON Conference 27. Seu carro é o meu carro. Parte 2


Um pouco de publicidade :)


Obrigado por ficar com a gente. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando aos seus amigos o VPS na nuvem para desenvolvedores a partir de US $ 4,99 , um analógico exclusivo de servidores de nível básico que foi inventado por nós para você: Toda a verdade sobre o VPS (KVM) E5-2697 v3 (6 núcleos) 10 GB DDR4 480 GB SSD 1 Gbps de US $ 19 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).

Dell R730xd 2 vezes mais barato no data center Equinix Tier IV em Amsterdã? Somente nós temos 2 TVs Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV a partir de US $ 199 na Holanda!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - a partir de $ 99! Leia sobre Como criar um prédio de infraestrutura. classe c usando servidores Dell R730xd E5-2650 v4 que custam 9.000 euros por um centavo?

All Articles