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

Conferencia DEFCON 27. Tu coche es mi coche. Parte 1

Al final del video, escuchó un clic: se trata de desbloquear el bloqueo mecánico del volante, que no podemos evitar mediante la electrónica. Tienes que usar algo mecánico, romper el cilindro de la cerradura con la mano o hacer algo similar, lo cual no iba a hacerle a su auto. Todo el firmware mostrado en estos videos estará disponible en GitHub después de mi charla, así que vaya a la URL en la diapositiva y descargue el archivo OpenRemoteStart.

Hablemos de qué sucede exactamente cuando agregamos Internet a este sistema, porque tiene que ser bueno para nosotros, ¿verdad? Como dije, compré un módulo de control remoto de alarma llamado MyCar. Viene en varias modificaciones, yo tenía el modelo Linkr LT-1.

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

MyCar es solo una marca y dichos módulos se venden con los nombres Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6), etc. Resulta que desde hace un tiempo los concesionarios KIA en Canadá han estado instalando este sistema, o al menos una aplicación llamada MyCar KIA, en sus automóviles. Curiosamente, esta aplicación ya no está disponible para descargar en la AppStore. También quiero señalar que elegí los productos Fortin y MyCar, pero según las opiniones de los usuarios en foros temáticos sobre alarmas de automóviles independientes, otros sistemas no se comportan mejor y tienen problemas similares.

Tengo una pregunta importante: ¿Por qué el mercado de repuestos de alarmas para automóviles vende un producto con problemas de seguridad y a nadie le importa? Por tanto, si alguno de vosotros está interesado en los sistemas de arranque remoto, preste atención a un par de circunstancias importantes. En primer lugar, como mencioné anteriormente, si el sistema DS no está instalado correctamente en un automóvil con transmisión manual, es muy posible que después de arrancar el motor de forma remota, el automóvil simplemente viaje sin conductor si alguna marcha está engranada en la transmisión. . Es realmente peligroso. El segundo peligro es que si alguien aparca un coche en un garaje adjunto y accidentalmente enciende el motor a distancia, podría asfixiarse por el monóxido de carbono acumulado. Entonces, si tiene un sistema de CO y un garaje adjunto, definitivamente debería tener detectores de monóxido de carbono.

Si utilizas sistemas DS, nunca intentes arrancar el motor de tu coche sin saber exactamente dónde está, porque las consecuencias pueden ser desastrosas.

El dispositivo MyCar, una pequeña caja negra de la que salen dos cables, tiene 8 puertos, dos de los cuales están dedicados a la interfaz del depurador. La conexión a esta interfaz mostró que el dispositivo ejecuta Linux, sobre lo cual el fabricante no dice nada. Es fácil ingresar al shell del firmware usando la contraseña oelinux 123, pero puede usar AE Engine sin iniciar sesión, lo que le permite ingresar comandos AT desde la línea de comandos, incluido el comando para cambiar la dirección IP del dispositivo con el que Este módulo se comunica.

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

Si nos fijamos en las líneas siguientes, podemos ver la dirección IP del servidor desde el que el módulo MyCar recibe actualizaciones de firmware. El dispositivo está equipado con un puerto L que le permite "escuchar" los comandos recibidos por el módulo. Usando AE Engine y cambiando la IP del dispositivo emparejado, pude determinar que este dispositivo se comunica con el DS usando el protocolo UDP no cifrado.

No lo he investigado mucho, pero creo que es un hecho bastante significativo e interesante. Si está interesado en obtener más información sobre este dispositivo, eche un vistazo a esta diapositiva: muestra un voltaje de fuente de alimentación de 3,3 V, una velocidad de transferencia de datos de 115200 baudios, una dirección de servidor para actualizar el firmware, una contraseña de root y un enlace. al manual de usuario.

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

El dispositivo puede "tolerar" tensiones de alimentación más altas.

Como dije, aquí hace bastante frío. Aproximadamente un mes después de regalarle este sistema a mi novia, decidí sacar la unidad del auto y darle una buena prueba. El caso es que durante todo este mes he estado alejando pensamientos sobre la vulnerabilidad de este dispositivo. Predijeron temperaturas de hasta -30 °F para la próxima semana, así que tuve que darme prisa. Me conecté al shell y lo hice funcionar, pero como la recepción celular en el laboratorio de mi casa no es muy buena, decidí trabajar con el box en otra computadora. La unidad FTDI que uso tiene un cable corto, así que encontré uno más largo, lo conecté a la unidad DS, a la computadora y tan pronto como encendí la energía, ¡mi unidad comenzó a fumar!

La lección que se puede aprender de esto es: si estás pirateando hardware, ¡ten una unidad de repuesto lista! Mi novia expresó la moraleja de la historia de esta manera: si tu pareja es un hacker, ¡no dejes que juegue con tus regalos de Navidad! Ahora echemos un vistazo al software, creo que aquí nada echará humo.

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

Inicié un proxy de intermediario, desactivé la verificación SSL en mi teléfono y observé el tráfico que enviaba la aplicación al backend. Al registrarme, noté que el sistema tomó mi dirección de correo electrónico y la envió al servicio web para asegurarse de que la dirección estuviera asociada con una cuenta existente. Es interesante que el sistema usara autenticación básica porque aún no había creado una cuenta. No sabía qué hacer con esta información, así que la anoté en un cuaderno y seguí adelante. Creé mi cuenta e inicié sesión, y lo primero que hace la aplicación al iniciar sesión es llamar a un servicio web para verificar el usuario actual. Así que simplemente llamé a este servidor web con las credenciales que había visto antes, que se usaron para verificar si mi dirección de correo electrónico existía, y en respuesta se me dio acceso de administrador a Mycar.

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

Dudaba que se tratara de una cuenta real de administrador del sistema porque, a pesar de sonar ruidosa, tenía pocos privilegios. Después de todo, todos conocemos gente así.

Por lo tanto, creo otra solicitud: el comando EngineStart, para arrancar el automóvil desde esta cuenta, hago clic en "Enviar", recibo el estado del comando en respuesta: "200 OK", y después de unos tres segundos mi automóvil comienza a moverse.

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

Resulta que la cuenta de administrador de Mycar era de hecho una cuenta de administrador codificada en la aplicación móvil. Pero eso no es todo. En una de las diapositivas anteriores vio algo parecido a una clave API. Nuevamente, al monitorear el tráfico de mi servidor proxy falso, aprendí que estas claves API se pueden usar en lugar de un nombre de usuario y contraseña. Si utiliza "API" como nombre de usuario y una de estas claves, puede autenticar al usuario.

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

Entonces copié el contenido de la línea "APIKey", lo pegué en la línea Contraseña de la aplicación POST y hice clic en el botón "Enviar".

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

Sin embargo, no funcionó y no pude entender por qué durante 5 largos minutos. Finalmente, me di cuenta de que olvidé eliminar las comillas y la coma en la clave API copiada, que es lo que me dijeron: "Cometiste un error en la sintaxis SQL". Me quedó claro que simplemente podía usar una inyección SQL básica para omitir todo el proceso de inicio de sesión y convertirse en administrador o en cualquier usuario que quisiera. No creo que nadie haya intentado robar un automóvil mediante inyección SQL, así que intentémoslo.

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

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

En general, inicié sesión en mi cuenta, hice clic en "Enviar" y recibí un estado "200 OK" como respuesta. Esta vez pensé en grabar un vídeo. Está un poco oscuro porque estaba filmando tarde en la noche desde la ventana de mi oficina. Entonces, ingreso el comando y ves a través de la ventana que las luces del auto parpadean en el patio de abajo. Al principio, su luz es débil, pero luego los faros comienzan a brillar a máxima potencia: este es el motor en marcha. Entonces, encendí el auto usando inyección SQL (aplausos de la audiencia).

Pero eso no es todo. La inyección SQL se puede utilizar no solo para autorización, sino también para reemplazar otros parámetros como URL, parámetros del cuerpo de la cadena de consulta, etc. De hecho, este sistema utiliza inyecciones SQL en todas partes. Al observar los mensajes de error, podemos ver que lo que ingresamos como contraseña se compara directamente con la columna de contraseña en la base de datos.

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

Esto significa que utilizan contraseñas de texto sin formato en la inyección SQL. Como dicen, “¡esto no es nada bueno, e incluso muy malo!” Pero basta de SQL, veamos qué más puedes hacer para arrancar tu coche de forma remota. Simplemente envía el comando “EngineStart” y en respuesta recibe un identificador entero que representa el identificador de este comando, en este caso es ID = 3. Conociendo el identificador, puede “extraer” un servicio que informará el estado de este dominio.

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

Entonces, al aumentar o disminuir el valor de ID, estoy "extrayendo" el estado de cualquier comando que se haya enviado alguna vez a ese sistema.

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

Sin embargo, no hay nada particularmente interesante en esto y me pregunto si aquí hay una referencia directa a un objeto que pueda usar para encender mi auto. Así que ejecuté el comando "EngineStart" como usuario legítimo desde mi cuenta y luego intenté llamarlo a través de la cuenta de otro usuario, que no debería tener acceso al sistema. En respuesta, recibí un mensaje de error: "Esta cuenta no está en el contexto de la jerarquía". Entonces tal vez este truco no funcione. Sin embargo, si observa esta API, verá que duplica información: la dirección de correo electrónico del usuario está asignada a su ID de cuenta.

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

Si está desarrollando una API o pirateando una API, el tipo de duplicación de información que vemos en esta URL puede ser una fuente de errores. En este caso, los errores de API pueden manifestarse de cuatro maneras diferentes.

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

Si nos fijamos en los casos 2 y 3, resaltados en rojo, podemos ver referencias directas al objeto. En ambos casos, el sistema no comprueba si está autorizado a ejecutar el comando. Probé el caso 2 y no funcionó, ¿qué pasa con el caso 3? Aquí solo tenemos que reemplazar el ID de cuenta USER_EMAIL en la URL ya que está directamente relacionado con el ID de cuenta ACCOUNT_ID. Anteriormente usábamos el ID de la cuenta de la víctima, pero ahora usamos la cuenta del atacante. Entonces utilicé la ID de la cuenta del hacker y la ID del dispositivo de la víctima, envié el comando y, como era de esperar, recibí un estado de comando "200 OK" y obtuve el control de la aplicación MyCar.
Entonces, con tres vectores de ataque diferentes, pudimos hacer todo lo que podría hacer un usuario legítimo de la aplicación. Esto significa que puede encontrar cualquier automóvil en la ciudad, configurar su marca y modelo en la aplicación y luego desbloquearlo de forma remota y arrancarlo. Podremos apagar o encender la alarma, realizar cambios en el menú de servicios del coche y comprobar el estado de cualquier mando. Y todo esto se puede hacer de tres formas diferentes.

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

Es obvio que los desarrolladores de MyCar intentaron corregir de alguna manera los errores del sistema. Entonces, en el caso de contraseñas codificadas, simplemente colocan un proxy inverso delante de la aplicación para ocultar las credenciales que se utilizan para la autorización. El problema es que los proxies inversos no son mágicos y no pueden solucionar todos los problemas. Almacenaron la inyección SQL en un servicio de terceros para que, incluso sin una contraseña, pueda seguir utilizándola mediante el procedimiento de verificación de usuario.

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

Decidí echar un vistazo más de cerca a la estructura de la URL. Quizás hayas notado que todas las direcciones utilizadas por el sistema contienen m2m. Decidiendo que se trataba de algún tipo de interacción interna para el mecanismo de autorización en la aplicación MyCar, ingresé estas letras en Google y descubrí el sitio web de M2M Suite. Lo único que puede hacer cuando vea este formulario es poner un par de comillas simples y ver qué sucede. Lo que sucederá es que obtendrás la inyección SQL deseada (aplausos del público).

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

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

Y esto llega varios meses después de que los desarrolladores informaran de un problema con la inyección SQL. Si una aplicación tiene problemas como este, es necesario solucionarlo lo antes posible, pero como puedes ver, los desarrolladores no han hecho nada. Este tipo de desprecio por los usuarios me parece ofensivo.

El módulo MyCar tiene una unidad GPS para que pueda rastrear la ubicación de su automóvil y mostrarla en la aplicación. Pero resultó que no solo almacenan la ubicación actual de los coches. Almacenan muchísima información, mucha más de la que se necesita para realizar un seguimiento de la ubicación actual de un automóvil. En mi caso, en 13 días de uso de la aplicación acumularon poco menos de dos mil puntos de geolocalización de los lugares que visitó mi coche. La política de privacidad de la empresa desarrolladora MyCar no dice una palabra sobre dicha recopilación de información.

Sin embargo, se pone aún peor. Se podría argumentar que esto es sólo un efecto secundario de la implementación del servicio de ubicación. Pero la cuestión es que, en lugar de simplemente crear una lista de lugares a los que va su automóvil, utilizan otra API que analiza esos datos y determina los lugares a los que va su automóvil con más frecuencia. Una vez más, que yo sepa, no hay ningún indicio de dicha característica en la política de privacidad. Quizás esto no sea tan sorprendente porque después de mucha búsqueda, encontré la empresa matriz de MyCar llamada Procon Analytics, fui a su sitio web y visité la sección de preguntas frecuentes. Aquí me encontré con la pregunta: "¿Cómo se garantiza la seguridad de los datos?" La respuesta de la empresa fue: “A diferencia de las nubes públicas que compiten por la prioridad en el almacenamiento de datos, Procon Analytics utiliza su propia nube virtual, que se utiliza exclusivamente para los usuarios de nuestra aplicación y está protegida de la interferencia de otros usuarios. Se trata de un entorno de nube especial con un alto grado de seguridad, que garantiza una fácil disponibilidad y velocidad en la prestación del servicio. Al asociarse con Procon Analytics, puede estar seguro de que sus datos están protegidos de forma segura”. Ni siquiera sé qué decir a esto...

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

Si vas a su página de Facebook, podrás descubrir cosas aún más interesantes. Aquí simplemente escriben: “¡Proteger la información de su vehículo es vital!” Bueno, sólo puedo estar de acuerdo con tal afirmación.

Entonces, volviendo a la pregunta con la que comencé: “¿Cómo sucede esto y cómo se puede evitar”? Y lo que es más importante, ¿cómo podemos nosotros, como comunidad, evitar que esto suceda?

Con esto concluye mi informe, pero todavía podré responder un par de preguntas (aplausos de la audiencia).

¿Estás preguntando si arreglaron todo? En este punto, creo que han solucionado todos los errores que les informé, con la excepción de las fallas en la política de privacidad que mencioné al final de la charla. La última vez que lo revisé, todo estaba sin cambios. Cuando me preguntan si puedo editar los parámetros de la unidad de control electrónico del motor (ECU) del automóvil de manera similar, responderé que mi tarea era editar los parámetros del automóvil solo en la aplicación MyCar. Almacena una representación digital del vehículo que se edita mediante acceso directo a objetos, inyección SQL u otro vector de ataque.

La última pregunta es: ¿tengo en mi automóvil un sistema de arranque del motor sin llave con el botón "Inicio" y cuál es la situación con el bloqueo del volante en este caso? Mi respuesta es que MyCar tiene ese botón, por lo que este sistema no tiene bloqueo del volante. Sospecho que si instala este sistema, definitivamente no podrá confiar en el bloqueo del volante.

Algunos anuncios 🙂

Gracias por estar con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más contenido interesante? Apóyanos haciendo un pedido o recomendándonos a amigos, VPS en la nube para desarrolladores desde $4.99, un análogo único de servidores de nivel de entrada, que fue inventado por nosotros para usted: Toda la verdad sobre VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps desde $19 o como compartir servidor? (disponible 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 aqui 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV desde $199 ¡en los Paises Bajos! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ¡desde $99! Leer acerca de Cómo construir infraestructura corp. clase con el uso de servidores Dell R730xd E5-2650 v4 por valor de 9000 euros por un centavo?

Fuente: habr.com

Añadir un comentario