Conferencia 27 de DEFCON. Tu auto es mi auto. Parte 1

Resumen de rendimiento:

para muchos de nosotros, un automóvil es una de las compras más caras que hemos realizado. En un mundo donde todas las cosas están interconectadas, es bastante natural querer controlar su automóvil de forma remota: reciba recordatorios donde lo estacionamos, verifique si olvidó cerrar las puertas o encender el motor de forma remota para precalentar o enfriar el interior según la época del año.

Hay muchos fabricantes que ofrecen sistemas de alarma opcionales que brindan estas comodidades y tranquilidad. Pero, ¿cuánto podemos confiar en los proveedores de estos sistemas que protegen el acceso a nuestros automóviles en el dominio digital? En este informe, Jmaxxz hablará sobre lo que descubrió cuando examinó uno de estos sistemas.

Jmaxxz es conocido por su trabajo con los sistemas domésticos inteligentes Smart Lock de August (DEFCON 24 habla "Backdooring The Frontdoor"). En los últimos años, su atención se ha centrado en dispositivos para Internet de las cosas. Participó en las secciones "IoT village zero day" de DEFCON 24 y DEFCON 25 y finalmente decidió que era hora de investigar el producto del mercado secundario del automóvil: arranque remoto (en lo sucesivo, DS).



Entonces, mi nombre es J-Max, soy programador de profesión y hacker de vocación. Hago todo lo relacionado con los castillos, y a lo largo de esta conversación escuchará muchas declaraciones que expresan mi opinión exclusivamente y no están relacionadas con la opinión de mis empleadores pasados, presentes y futuros. Como probablemente haya entendido, se tratará de automóviles, es decir, de arrancadores remotos y sistemas de alarma. Comencemos con el trasfondo, que es importante en este contexto, porque muchas personas consideran que tales sistemas son un lujo innecesario.
Entonces, donde vivo es bastante frío, y mi amigo sufre de una enfermedad llamada síndrome de Raynaud. Por el frío, se produce un espasmo de los vasos sanguíneos de las manos, el flujo de sangre a los dedos disminuye bruscamente, hay signos de congelación hasta necrosis tisular. La diapositiva muestra cómo se ve generalmente.



En noviembre pasado, todavía no decidí qué regalarle en Navidad. Y entonces regresa a casa molesta desde el aeropuerto, porque su automóvil no se calentó en el camino a casa. En este momento, me di cuenta de que le daría un sistema de arranque remoto del motor y comencé a buscar la mejor opción. Resultó que el mercado de arrancadores remotos es bastante extenso y muchos fabricantes no brindan suficiente información sobre su producto.

No indican cómo instalar el sistema y qué herramientas utilizar para programar el dispositivo. Esto es un problema para mí, porque es mi auto, mi arranque remoto y debo tener acceso a estas herramientas. Así que busqué un poco más y encontré una compañía de Canadá, Fortin, que produce tales entrantes y voluntariamente proporciona toda la documentación necesaria. Me decidí por este producto y comencé a buscar un control remoto adecuado. El hecho es que si usa un control remoto estándar con un arrancador remoto, su rango de acción se limitará al rango del control remoto estándar. En el mercado secundario, se ofrecen controles remotos que operan a una distancia de media milla a una milla y media. Según las reseñas de los consumidores, este es un movimiento publicitario, porque en realidad la distancia es mucho menor. Este es el problemaporque mi amiga necesita arrancar el motor del automóvil estacionado en el estacionamiento del aeropuerto tan pronto como se baja del avión, que es aproximadamente media milla.



Por lo tanto, sería genial si pudiera sacar su teléfono, abrir la aplicación y hacer clic en "Iniciar motor". Encontré un producto de terceros llamado MyCar que es totalmente compatible con Fortin starter. Este es un pequeño llavero con una tarjeta SIM y un receptor GPS, que puede colocar en el automóvil y conectar a un arrancador remoto. Luego, utilizando una aplicación móvil, puede arrancar el motor de forma remota, desbloquear bloqueos y similares.



Pensé que esto sería maravilloso: justo después de que aterrice el avión, mi novia podrá arrancar el motor, y para cuando llegue al auto, la cabina ya estará caliente.

Entonces, hablemos un poco sobre cómo funcionan los arrancadores remotos. Para hacer esto, primero debe comprender cómo arranca el motor del automóvil. Hasta mediados de los noventa, un motor de arranque era una cerradura mecánica tradicional en una conexión de interruptor de llave. Debes insertar una llave y girarla para cerrar el circuito eléctrico. Luego, en los Estados Unidos, las cerraduras marcadas como "inmovilizador" se hicieron populares. Suena complicado, pero es solo una cerradura electrónica. Entonces, tiene una cerradura mecánica, que es la clave de la cerradura electrónica, que, a su vez, es un transpondedor y contiene información que puede leerse. Y hasta que abra la cerradura electrónica, su automóvil no arrancará. En el lado derecho de la corredera, verá 2 teclas: izquierda para el inmovilizador y derecha para el interruptor de encendido habitual.Simplemente activa los componentes mecánicos de la cerradura, mientras que la llave izquierda desbloquea la cerradura electrónica, que arranca el motor del automóvil.



¿Por qué estoy hablando de esto? El arranque remoto funciona a través de un inmovilizador. En la siguiente diapositiva, verá el diagrama de conexión del dispositivo Fortin EVO One al inmovilizador; en la parte inferior izquierda verá un par de contactos designados como IMO. En la parte superior derecha del diagrama, verá dos líneas: CAN LOW y CAN HIGH. Estos son los contactos para conectarse al bus CAN. La razón por la cual los arrancadores remotos están conectados al bus CAN es porque los costos de instalación se reducen porque se usan menos conexiones durante la instalación. Si el arrancador remoto puede leer datos del bus CAN o enviar comandos a través del bus CAN, esto reduce el tiempo de instalación del sistema de arranque remoto del motor.

En la parte superior izquierda del diagrama hay un montón de GPIO relacionados con la administración o lectura de información de la máquina. Por ejemplo, desea que los faros parpadeen o que suene un pitido cuando presiona el botón de bloqueo. Tales cosas se pueden controlar con estos GPIO. Desde la parte inferior izquierda del circuito, verá un conector grande y torpe: esta es una interfaz que proporciona una derivación de un bloqueo mecánico. Es decir, no necesita insertar y girar la llave en el interruptor de encendido, porque esta interfaz proporciona interacción directa del relé del sistema de arranque remoto con la cerradura eléctrica.



Las siguientes diapositivas muestran los pasos para instalar un arrancador remoto. Básicamente, consiste en quitar la cubierta de la columna de dirección, instalar y conectar la unidad DS. Se ve bastante aterrador, pero simple.



El control remoto se conecta a lo que Fortin llama un canal de datos. El sistema utiliza el protocolo de transferencia de datos físicos patentado UART, un transmisor asíncrono universal que intercambia datos a una velocidad de 9600 baudios. Fortin Remote Starter simplemente se conecta a través del bus UART a los dos controles remotos que ve en la diapositiva.



Después de instalar DS, pensé en cómo dichos dispositivos pueden afectar la seguridad del automóvil. Obviamente, el DS debe pasar por alto el inmovilizador, entonces, ¿qué tan seguro es en términos de la posibilidad de robo o intercepción del control de la máquina? Esto se aplica no solo a la transmisión de datos a través de una red celular, sino también a la propia señal de inicio remoto. Así que comencé a buscar en la información del fabricante en Internet el protocolo de transferencia de datos utilizado en Internet y entré en foros donde la gente escribe que Fortin se niega a proporcionar este protocolo. Una de las razones: “no distribuimos dicha información porque EVO no es un juguete para los fanáticos, está destinado a ser utilizado por profesionales.



Siendo algo profesional, decidí construir mi propia máquina en el escritorio. Obtuve la segunda unidad del sistema EVO, ensamblé la placa de circuito, que era un automóvil, agregué interruptores para simular el encendido, un botón para el pedal del freno y un montón de LED para mostrar varias condiciones.



Combinando todo esto, conecté el dispositivo FTI para monitorear el canal de datos y comencé a recopilar estos datos. Al principio, se parece a la que se muestra en la diapositiva, y no está del todo claro qué está sucediendo aquí. Pero observando más de cerca, podemos decir que definitivamente hay algún tipo de estructura aquí.



Tenga en cuenta que cada vez que presiono un botón en mi control remoto, el mensaje que la antena envía a mi DS siempre comienza en 0C y termina en 0D. Entonces, si simplemente separamos lo que obtenemos, suponiendo que 0C es el comienzo y 0D el final, entonces terminamos con algo como esto.



Alguna estructura ya es claramente visible aquí, por lo que puede averiguar qué está sucediendo. Después de pasar tiempo rastreando qué mensaje aparece después de presionar un botón determinado, pude compilar una tabla de comandos, cada uno de los cuales corresponde a una acción específica. Es decir, cuando presiona el botón en el control remoto, la antena envía un comando al módulo de inicio remoto, que se ve así.



Así es como se ve una estructura de equipo típica.



Cuando presiona el botón del control remoto, la antena envía dicho comando al arrancador remoto. Despierta el byte 0C, seguido de 2 bytes, que, creo, representan la dirección de transmisión. Esto es interesante, ya que UART ya tiene una dirección de transmisión / recepción de señal, por lo que marqué estos bytes como "basura", solo considérelos una constante. Esto es seguido por un solo byte que indica el comando que el usuario desea ejecutar. Esto puede ser una cerradura de puertas o su apertura, desactivando la alarma, etc. En general, todo lo que desea hacer de forma remota está relacionado con este comando. Carga útil de FF FF F1 es la dirección, o identificador, que identifica la antena remota de donde proviene el mensaje. Si la unidad DS no reconoce el identificador, se ignora el comando. Si el DS acepta el identificador,comienza un procedimiento de varias etapas, que incluye verificar la llave en el encendido, encender o apagar el motor, presionar el pedal del freno, etc. De hecho, este proceso no importa mucho, solo el dispositivo en este momento está estudiando la identificación.

Al final del mensaje hay un byte con una suma de comprobación y un byte que indica el final del comando. Ahora que entendemos cómo funciona el protocolo, ¿qué podemos hacer al respecto? Tengo un par de videos sobre el tema. Desafortunadamente, el video por alguna razón no tiene sonido, por lo que te diré lo que está sucediendo en la pantalla. A la izquierda de la columna de dirección en la cubierta del panel de instrumentos hay una caja blanca que contiene componentes electrónicos con el firmware Particle.IO que comprende el protocolo Fortin. Un cable de punta azul es una antena. Esto me permite interactuar con la unidad de arranque remoto desde la cabina del automóvil y ver en la pantalla de la computadora portátil lo que está sucediendo.



Entonces, envío el comando de desbloqueo de bloqueo al automóvil, pero no funciona, porque el DS no conoce esta antena. Como ya mencioné, esto es simplemente UART, cuya propiedad es el soporte de la llamada comunicación bidireccional, para que pueda recibir de forma remota información sobre el estado del automóvil. Por ejemplo, si el motor se arrancó o detuvo físicamente, la unidad DS enviará un mensaje correspondiente a la antena del control remoto. En este caso, el mensaje contendrá la dirección de esta antena.



El problema es que la comunicación se realiza a través del protocolo UART, y cualquiera que se conecte al bus UART puede ver la dirección donde se envía este mensaje, de modo que en mi firmware es posible clonar la dirección de una antena existente, lo que hago con el comando correspondiente.



Para generar un mensaje, simplemente abra la puerta del automóvil. Como puede ver, el DS envía un mensaje a la antena de que la puerta estaba abierta y la alarma se activa de inmediato.



Para apagar la alarma, envío el comando "desbloquear", después de lo cual se apaga el sonido de la alarma y se desbloquea el automóvil. Tendrás que aceptar mi palabra, porque no pudimos reproducir este video con sonido. Intentemos reproducir el video nuevamente.



Bueno, apareció el sonido (aprox. Traductor: el mismo video con banda sonora se reproduce en la pantalla). Entonces, viste cómo envié el comando DS y activé la alarma, y ​​todo esto sin una llave. Ahora intentemos arrancar el auto de la misma manera, para esto veremos el siguiente video.

Por lo general, simplemente escribir el comando "inicio" e intentar arrancar el motor no funcionará. La razón es que este es un automóvil con una caja de cambios manual, y para tales automóviles, los sistemas de arranque remoto tienen un procedimiento especial. En este caso, debe presionar el botón de arranque remoto mientras la llave está en el encendido y el motor arranca. Luego puede quitar la llave, salir del automóvil, cerrar la puerta, después de lo cual el DS apagará el motor y bloqueará la puerta. Esto se hace para que el automóvil no reaccione al arranque remoto del motor mientras conduce, porque es peligroso. Sin embargo, esta no es una característica de seguridad completa. Probar esto es bastante simple si observa el bloque EVO del arrancador remoto. Verá este cable amarillo en forma de bucle, que está diseñado para funcionar con una transmisión mecánica.Si lo recorta, esta unidad se puede usar para un automóvil con transmisión automática. Este diseño de la unidad le permite no aplicar ninguna configuración especial al instalar el DS en automóviles con diferentes tipos de transmisión.



Entonces, el sistema no respondió al comando "inicio", así que voy a volver a colocar este bloque en su lugar y simplemente cortar este cable para romper la conexión. Ahora, si repite el comando de "inicio", sonará una señal audible y los indicadores de estado del sistema del vehículo se iluminarán en el panel de instrumentos, como sucede cuando se inserta la llave en la cerradura.



Por el momento, tenemos un automóvil que podemos arrancar de forma remota sin una llave en el encendido, pero el módulo DS no es todo lo que necesitamos. En circunstancias normales, aún no podrá abandonar el vehículo de forma remota, sin embargo, tratemos de hacerlo de todos modos.

Para desactivar el bloqueo del volante, debe insertar una llave convencional en el interruptor de encendido, en el que no hay transpondedor. Como puede ver, simplemente cambie la llave a la posición que precede al arranque del motor, y el volante Subaru Impreza comienza a girar completamente.

Sin embargo, si no tiene ninguna llave, cuando presiona el pedal del freno, el automóvil se detendrá. Evitar esta limitación es bastante fácil. Descubra cómo el automóvil le dice al arranque remoto que se aplica el freno. Verá varios puertos multicolores en la parte posterior de la caja del módulo EVO: aquí se conectará un cable del bus CAN. Es suficiente simplemente sacar este cable de la unidad DS después de que el automóvil se arranque de forma remota, y no responderá al presionar el pedal del freno. Dado que esta unidad se encuentra debajo de la cubierta de la columna de dirección, doy el comando de "inicio" a través de mi computadora portátil, el auto arranca, abro la puerta, salgo del auto y extraigo el conector del bus CAN del bloque EVO. Como puede ver, el motor del automóvil está funcionando, mientras que todavía no tenemos ninguna llave en el encendido.

Ahora, si presiona el pedal del freno, no pasará nada, porque el EVO no sabe que se ha presionado. Después de eso, puedo ponerme detrás del volante, presionar el freno, poner la perilla del cambio en la posición "Conducir", y el automóvil irá. Todo esto se hace sin ninguna pista.

21:40

DEFCON Conferencia 27. Tu auto es mi auto. Parte 2


Un poco de publicidad :)


Gracias por estar con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendando a sus amigos, VPS en la nube para desarrolladores desde $ 4.99 , un análogo único de servidores de nivel básico que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2697 v3 (6 núcleos) 10GB DDR4 480GB SSD 1Gbps desde $ 19 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

Dell R730xd 2 veces más barato en el centro de datos Equinix Tier IV en Amsterdam? Solo tenemos 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV desde $ 199 en los Países Bajos.Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ¡desde $ 99! Lea sobre Cómo construir un edificio de infraestructura. clase c con servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

All Articles