Cómo hackear cualquier smart-auto con esta herramienta

Primero veremos los temas que serán cubiertos por los expertos en seguridad informática en esta prueba/curso de hackeo de autos: Configuración de entornos virtuales para pruebas, Sniffing CAN Traffic, Analizando CAN Traffic, Reverse Engineering CAN IDs, Ataques de denegación de servicio, Reproducción / inyección de tráfico, Codificando tus propias herramientas CAN Socket en python, Ataques dirigidos contra los componentes de su automóvil y Transicionando esto para atacar un auto real con hardware.

 

hack carr

Antes de entrar en detalles específicos de hackeo de vehículos, explicaremos que es CAN; es poner en marcha su laboratorio. En esta ocasión vamos a ejecutar una red CAN Bus simulada simple que controla varias características de su automóvil simulado. Expertos siempre nos dicen que es mejor aprender haciendo que sentarse y decir un montón de términos de red.

Para este proyecto tampoco se espera que compre demasiado hardware y jack en su auto real de inmediato. En cambio, hay opciones que pueden comenzar a hackear coches siguiendo este tutorial.

 

Para comenzar, los investigadores de seguridad informática dicen que necesitas configúrate con una instalación Ubuntu VMware y cárgalo. De manera opcional, también podría usar VM Kali Linux, sin embargo, puede tener problemas de copia y se cree que Kayak estaba dando problemas de instalación. También es sabido que Kali funciona bien con el auto virtual OpenGarages.

Instalar bibliotecas PreReq: Una vez cargado, vas a instalar las utilidades CAN y las bibliotecas de requisitos previos. Esto es realmente fácil de hacer con los siguientes comandos Apt-get:

sudo apt-get update

sudo apt-get install libsdl2-dev libsdl2-image-dev can-utils

Luego vamos a desplegar el repositorio ICSimulator:

git clone https://github.com/zombieCraig/ICSim.git

Iniciar el simulador: ahora podemos iniciar el simulador cambiando los directorios al repositorio descargado y ejecutando los siguientes 2 comandos, que configurarán una interfaz CAN virtual y un clúster GUI del simulador:

Ejecute la secuencia de comandos de configuración para obtener la interfaz vcan0:

root @ kali: ~ / ICSim # ./setup_vcan.sh

root @ kali: ~ / ICSim # ./icsim vcan0

En una nueva pestaña de terminal abre el controlador de simuladores con el siguiente comando:

root @ kali: ~ / ICSim #. / controls vcan0

Profesionales comentan que el controlador debe ser la pantalla de la GUI en foco para enviar comandos de teclado al simulador.

hack car 1

Para usar el simulador; expertos en seguridad informática nos dicen que el simulador tiene un velocímetro con señales de giro a la derecha e izquierda, puertas, etc. Existe una lista de comandos para controlar el simulador cuando el panel de control está enfocado.

Las teclas arriba y abajo controlan el velocímetro de los grupos de medidores

Teclas izquierda y derecha Controlan las luces intermitentes

Shift derecho + X, A o B puertas abiertas

Shift izquierdo + X, A o puertas cerradas

Experimente con algunos de los comandos anteriores, por ejemplo, Mayúsculas + X, podrá ver que la interfaz cambia.

Ahora tienes tu propio auto para hackear. Es importante notar que en los comandos de configuración de arriba usamos una interfaz VCan0. Ejecute Ifconfig y verá que tiene una nueva interfaz de red que habla a la red CAN a través de VCan0.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ ifconfig vcan0

vcan0 Link encap: UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-

UP RUNNING NOARP MTU: 16 Métrico: 1

Paquetes RX: 558904 errores: 0 descartado: 0 rebasamientos: 0 fotograma: 0

Paquetes TX: 558904 errores: 0 descartado: 0 rebasamientos: 0 operador: 0

colisiones: 0 txqueuelen: 1

Bytes RX: 3663935 (3.6 MB) Bytes TX: 3663935 (3.6 MB)

Investigadores comentan que las redes de autos se ejecutan en una variedad de protocolos más comunes que son CAN. Se puede llegar a pensar en un CAN Bus como un centro de redes donde todos pueden ver el tráfico de todo el mundo. Esto es cierto hasta cierto punto, aunque es posible que no vea todo el tráfico si no está conectado a ese Bus en particular. Puede pensar en un tipo de tráfico CAN similar al UDP en el que se envía y se olvida, la principal diferencia es que las partes de la red de bus CAN en realidad no tienen direcciones y todo se ejecuta con las ID y prioridades de arbitraje.

Ahora, revisemos si se puede ver nuestro tráfico CAN desde nuestro automóvil virtual a través de la utilidad CanDump, que instaló como parte del paquete CanUtils anterior. Usando el siguiente comando en la interfaz vcan0 que utiliza nuestro simulador, puede ver una secuencia de tráfico:

ficti0n @ ubuntu: ~ / Escritorio / ICSim $ candump vcan0

hack car 2

Ahora podremos ver marcos CAN, y si realizamos acciones en el vehículo, veremos cambios en los valores de datos en la salida CanDump. Sin embargo, los expertos dicen que esto puede suceder muy rápido y es posible que no podamos ver si hemos desbloqueado la puerta de nuestros simuladores. Esto ocurre debido a que las cosas cambian constantemente en el estado inactivo de los automóviles.

Para capturar y reproducir acciones CAN; una opción sería realizar una acción y reproducirla, debería ver que las acciones vuelven a ocurrir en la repetición si el tráfico para la acción que grabamos está en la misma red de bus en la que está conectado nuestro dispositivo. Hay una gran cantidad de redes dentro de un automóvil y no está garantizado nuestro grifo de red, un conector de puerto OBD2 está conectado a la misma red que la puerta que abrimos.

Otra herramienta útil incluida con el paquete CanUtils es CanPlayer para reproducir el tráfico, dicen los expertos en seguridad informática. Si la funcionalidad que estamos tratando de capturar está en el mismo Bus que el adaptador conectado al automóvil, o en este caso nuestra interfaz CAN Virtual, podemos usar CanDump para guardar el tráfico en un archivo. Luego usamos CanPlayer para reproducir el tráfico en la red. Un ejemplo, ejecute CanDump, abra una puerta y luego vuelva a reproducir la funcionalidad con CanPlayer.

Lab 1 pasos:

Ejecutar CanDump

Shift derecho + X para abrir una puerta

Cancelar CanDump (ctrl + c)

Shift izquierdo + X para cerrar la puerta

Ejecutar puede el jugador con el volcado guardado y volverá a reproducir el tráfico y abrirá la puerta

Grabación de la apertura de la puerta: (-l para el registro)

ficti0n @ ubuntu: ~ / Escritorio / ICSim $ candump -l vcan0

Reproducción del archivo CanDump: (use el archivo creado por su volcado de Can)

ficti0n @ ubuntu: ~ / Desktop / ICSim $ canplayer -I candump-2018-04-06_154441.log

En este punto se debería ver que tu puerta está abierta de nuevo. Las redes CAN no son como TCP / IP, se parecen más a UDP en que envías tu solicitud y no espera una respuesta. Entonces, se pierde y tienes que volver a enviar. Es probable que estaba enviando algo con mayor prioridad en la red en el momento de su reproducción y su tráfico se vio eclipsado por él.

hack car 3

Interactuando con Can Bus y Reversing Traffic; esto es bueno, pero, CanDump no es muy útil para esto, se desplaza rápidamente para que podamos aprender mucho de. En cambio, podemos usar CanSniffer con salida coloreada para mostrarnos los bytes dentro de los paquetes que cambian.

Para iniciar puede sniffer ejecutar lo siguiente:

ficti0n @ ubuntu: ~ / Escritorio / ICSim $ cansniffer -c vcan0

hack car 4

Ahora vera, Tiempo, ID y Datos. La parte más importante para nuestro uso son los campos ID y Datos.

El ID de marco está asociado con el dispositivo en la red que se efectúa mediante el cuadro que se envía. La identificación también determina la prioridad del marco en la red. Cuanto menor sea el número de CAN-ID, mayor prioridad tendrá en la red y más probable será que se maneje primero. El campo de datos es la información que se envía para cambiar algún parámetro, como desbloquear una puerta o actualizar la salida. Los valores en rojo son los valores que están cambiando durante el estado inactivo en el que se encuentra actualmente.

Determine qué ID y Byte controlan el acelerador; con la ventana de olfateo del terminal abierta, ponga el simulador y el controlador en primer plano, con el controlador como la ventana en la que ha hecho clic y seleccionado. Preste atención a la salida CanSniffer mientras presiona la FLECHA HACIA ARRIBA y busque un valor que sea blanco pero que ahora sea rojo y aumente de valor a medida que el acelerador suba, dicen los investigadores de seguridad informática.

hack car 5

Seleccionar valores con filtros; para seleccionar el valor del acelerador, haga clic en la ventana del terminal y presione -000000 seguido de la tecla Intro que borrará todos los valores que se desplazan. A continuación, presione +244 seguido de la tecla Entrar, que volverá a agregar la identificación del acelerador. Ahora puede hacer clic en el controlador nuevamente y aumentar la velocidad con el botón de flecha hacia arriba sin que todo el ruido opaque su vista. En cambio, como se muestra a continuación, solo tendrá ID 244 en su resultado.

hack car 6

Para recuperar los ID otra vez, haga clic en la ventana del terminal e ingrese +000000 seguido de la tecla Intro. Ahora debería ver toda la salida como antes. Esencialmente 000000 significa incluir todo. Cuando pones un signo menos frente a él, lo niega todo y borra tu ventana de terminal filtrando todos los valores.

Determine la ID de Blinker, descubramos otra identificación para las luces intermitentes. Si se presiona la flecha izquierda o derecha con la ventana de controles seleccionada, podrá ver que aparece una ID completamente nueva en la lista, ID 188 que se muestra en la imagen siguiente, que está asociada con la luz intermitente.

hack car 7

Esta ID no se mencionó, ya que no se usaba en la salida de datos hasta que presionó el control de la luz intermitente. Vamos a soltar este valor presionando -000000 seguido de +188. Como en el ejemplo del acelerador, su terminal solo debe mostrar la ID 188, inicialmente se mostrará con valores de 00 bytes.

Al presionar la luz intermitente izquierda y derecha, se podrá ver el primer cambio de Byte de 00 a 01 o 02. Si no se presiona ninguno de ellos, será 00. La identificación permanecerá visible como 00 hasta que agote el tiempo y desaparezca de la lista cuando no esté activo.

Es hora de hacer algo de inversión de protocolo. Esta práctica de laboratorio le dará una idea de cómo invertir toda la funcionalidad del automóvil y asociar cada acción con la ID y el BYTE correctos. De esta forma, se puede crear un mapa de los cambios de funcionalidad deseados. Ya hemos realizado algunos pasos sobre cómo determinar qué byte e ID están asociados con una acción. Ahora es el momento de mapear con todas las funciones restantes antes de pasar a atacar componentes individuales.

Atacar la funcionalidad, con toda la funcionalidad asignada, ahora podemos dirigirnos a varios dispositivos en la red directamente sin interactuar con la GUI de los controladores. Tal vez entramos en el automóvil a través de la conexión celular OnStar o de las unidades de la consola central de la conexión BLE que estaba conectada a la red CAN de alguna manera.

Después de un exploit tenemos acceso directo a la red CAN y nos gustaría realizar acciones. O tal vez haya instalado un dispositivo inalámbrico en un puerto OBD2 debajo del tablero.

Usando los datos del laboratorio de reversión de red CAN, podemos llamar estas acciones directamente con el CAN-ID y el byte apropiados. Ya que estamos alejados del objetivo, no podemos simplemente extender la mano y agarrar el volante o apretar el acelerador; en su lugar, enviaremos su estructura CAN para realizar el cambio.

Una forma en que podemos hacer esto es a través de la utilidad CanSend, comentan investigadores de seguridad informática. Tomemos la información de nuestro laboratorio de arriba y hagamos que la señal de giro a la izquierda parpadee con la siguiente ID 188 para la señal de giro cambiando el primer byte a 01, lo que indica que se presiona la señal izquierda. CanSend usa el formato ID # Data.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ cansend vcan0 188 # 01000000

hack car 8

Ahora se debería haber notado que la señal izquierda brilló. Si esto no ocurrió, pruébalo nuevamente o asegúrate de haber utilizado la ID correcta y cambiado el byte correcto. Así se hará lo mismo con el acelerador e intentemos ajustar la velocidad a algo con ID 244 que determinamos que era el acelerador.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ cansend vcan0 244 # 00000011F6

No pasara nada porque es tan rápido que la aguja no va a saltar a ese valor. Así que, intente repetir esto una y otra vez con un bucle de bash.

ficti0n @ ubuntu: ~ / Desktop / ICSim $ while true; cansend vcan0 244 # 00000011F6

hack car 9

Ahora puede notar que la aguja salta hacia adelante y hacia atrás un poco. La aguja rebota hacia adelante y hacia atrás porque se envía el tráfico normal de la CAN diciéndole al auto que en realidad está ajustado a 00 entre sus marcos, lo que significa que es 30 mph. Ahora ha cambiado la velocidad que ve el automóvil y ha encendido la luz intermitente sin usar los controles normales del intermitente.

Una forma de manejar este problema es monitorear la red CAN y cuando ve una ID enviada, automáticamente enviará la ID correspondiente con un valor diferente. En este punto vamos a intentar modificar la salida de velocidad monitoreando los cambios. A continuación, simplemente ejecutamos CanDump y analizamos el ID 244 en la salida de registro, que es el valor del acelerador que le dice al auto la velocidad. Cuando un dispositivo en el automóvil informe la ID 244 y su valor, inmediatamente volveremos a enviar nuestro propio valor diciendo que la velocidad es de 30 mph con el valor 11, comentaron investigadores de seguridad informática.

ficti0n @ ubuntu: ~ / Escritorio / ICSim $ candump vcan0 | grep “244” | mientras lee la línea; cansend vcan0 244 # 00000011F6

Con este funcionamiento después de unos segundos verá que la velocidad se ajusta a alrededor de 30 MPH una vez que captura un CAN-ID 244 legítimo del tráfico de la red y envía su propio valor inmediatamente después.

Mientras el comando anterior todavía está funcionando haga clic en la ventana del controlador y comience a mantener presionada la flecha hacia arriba con el controlador enfocado. Después de esperar unos segundos, cuando la velocidad supera los 30 MPH verá la aguja peleando por el valor real más alto y ajuste de nuevo a 30 MPH a medida que su comando sigue enviando su valor como reemplazo de la velocidad real.

Esta es una manera de monitorear la red y reaccionar de una manera muy cruda a lo que ves. Tal vez alguien robó tu auto y quieres controlar si hay una puerta abierta y si tratan de abrir la puerta, inmediatamente los encierra.