Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 1

Ao final do vídeo, escoitaches un clic: este é o desbloqueo do bloqueo mecánico do volante, que non podemos evitar mediante a electrónica. Hai que usar algo mecánico, romper a man o cilindro da pechadura ou facer algo parecido, cousa que eu non lle ía facer ao seu coche. Todo o firmware demostrado nestes vídeos estará dispoñible en GitHub despois da miña charla, así que só tes que ir ao URL da diapositiva e descargar o ficheiro OpenRemoteStart.

Falemos do que ocorre exactamente cando engadimos Internet a este sistema, porque ten que ser bo para nós, non? Como dixen, comprei un módulo de control remoto de alarma chamado MyCar. Vén con varias modificacións, eu tiña o modelo Linkr LT-1.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

MyCar é só unha marca e tales módulos véndense baixo os nomes Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6), etc. Ao parecer, dende hai un tempo, os concesionarios de KIA en Canadá estiveron instalando este sistema, ou polo menos unha aplicación chamada MyCar KIA, nos seus coches. Curiosamente, esta aplicación xa non está dispoñible para descargar na AppStore. Tamén quero sinalar que escollín os produtos Fortin e MyCar, pero segundo as opinións dos usuarios en foros temáticos de alarmas para automóbiles autónomos, outros sistemas non se comportan mellor e teñen problemas similares.

Teño unha pregunta importante: por que o mercado de alarmas para automóbiles vende un produto con problemas de seguridade e a ninguén lle importa? Polo tanto, se algún de vostedes está interesado nos sistemas de arranque remoto, preste atención a un par de circunstancias importantes. En primeiro lugar, como mencionei anteriormente, se o sistema DS non está instalado correctamente nun coche cunha transmisión manual, é moi posible que despois de iniciar o motor de forma remota, o coche simplemente conduza sen un condutor se algunha marcha está enganchada na transmisión. . É realmente perigoso. O segundo perigo é que se alguén estaciona un coche nun garaxe anexo e acende accidentalmente o motor a distancia, podería asfixiarse polo monóxido de carbono acumulado. Polo tanto, se tes un sistema de CO e un garaxe anexo, definitivamente deberías ter detectores de monóxido de carbono.

Se usas sistemas DS, nunca intentes poñer en marcha o motor do teu coche sen saber exactamente onde está, porque as consecuencias poden ser desastrosas.

O dispositivo MyCar, unha pequena caixa negra da que saen dous cables, ten 8 portos, dous dos cales están dedicados á interface do depurador. A conexión a esta interface demostrou que o dispositivo funciona con Linux, sobre o que o fabricante non ten silencio. É doado entrar no shell do firmware usando o contrasinal oelinux 123, pero podes usar o motor AE sen iniciar sesión, o que che permite introducir comandos AT desde a liña de comandos, incluíndo o comando para cambiar o enderezo IP do dispositivo co que este módulo comunica.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Se observamos as liñas a continuación, podemos ver o enderezo IP do servidor desde o que o módulo MyCar recibe actualizacións de firmware. O dispositivo está equipado cun porto L, que lle permite "escoitar" os comandos recibidos polo módulo. Usando o motor AE e cambiando a IP do dispositivo vinculado, puiden determinar que este dispositivo se comunica co DS mediante o protocolo UDP sen cifrar.

Non o busquei moito, pero creo que é un dato bastante significativo e interesante. Se estás interesado en obter máis información sobre este dispositivo, bótalle unha ollada a esta diapositiva: mostra unha tensión de alimentación de 3,3 V, unha velocidade de transferencia de datos de 115200 baudios, un enderezo de servidor para actualizar o firmware, un contrasinal de root e unha ligazón. ao manual de usuario.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

O dispositivo pode "tolerar" tensións de subministración máis altas.

Como dixen, aquí fai bastante frío. Aproximadamente un mes despois de regalar este sistema á miña moza, decidín sacar a unidade do coche e darlle unha boa carreira. O caso é que durante todo este mes estiven afastando os pensamentos sobre a vulnerabilidade deste dispositivo. Predín temperaturas ata -30 °F para a próxima semana, así que tiven que apresurarme. Conecteime ao shell e puxen a funcionar, pero como a recepción móbil no meu laboratorio doméstico non é moi boa, decidín traballar coa caixa noutro ordenador. A unidade FTDI que uso ten un cable curto, polo que atopei un máis longo, enchufeino á unidade DS, enchufeo ao ordenador e, en canto acendei, a miña unidade comezou a fumar!

A lección que hai que aprender disto é: se estás pirateando hardware, ten unha unidade de reposto preparada. A miña moza puxo a moraleja da historia deste xeito: se a túa parella é un hacker, non o deixes xogar cos teus agasallos de Nadal. Agora vexamos o software, creo que nada vai fumar aquí.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Comecei un proxy man-in-the-middle, desactivei a verificación SSL no meu teléfono e observei o tráfico que a aplicación enviaba ao backend. Ao rexistrarme, notei que o sistema tomou o meu enderezo de correo electrónico e enviouno ao servizo web para asegurarme de que o enderezo estaba asociado a unha conta existente. É interesante que o sistema utilizase a autenticación básica porque aínda non creara unha conta. Non sabía que facer con esta información, así que simplemente a anotei nun caderno e continuei. Creei a miña conta e inicie sesión, e o primeiro que fai a aplicación ao iniciar sesión é chamar a un servizo web para verificar o usuario actual. Entón, simplemente chamei a este servidor web coas credenciais que vira antes, que se usaron para comprobar se existía o meu enderezo de correo electrónico e, como resposta, déronlle acceso de administrador de Mycar.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Dubidei de que se tratase dunha conta de administrador do sistema real porque, a pesar de soar alto, tiña privilexios baixos. Despois de todo, todos coñecemos xente así.

Polo tanto, creo outra solicitude: o comando EngineStart, para iniciar o coche desde esta conta, fai clic en "Enviar", recibe o estado do comando en resposta - "200 OK", e despois de aproximadamente tres segundos o meu coche comeza a moverse.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Ao parecer, a conta de administrador de Mycar era realmente unha conta de administrador codificada na aplicación móbil. Pero iso non é todo. Nunha das diapositivas anteriores viches algo como unha clave API. De novo, ao supervisar o tráfico do meu servidor proxy falso, aprendín que estas claves API poden usarse en lugar dun nome de usuario e contrasinal. Se usas "API" como nome de usuario e unha destas claves, podes autenticar o usuario.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Entón, copiei o contido da liña "APIKey", pegueino na liña de contrasinal da aplicación POST e premei no botón "Enviar".

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Non obstante, non funcionou e non puiden descubrir por que durante 5 minutos. Finalmente, decateime de que esquecín eliminar as comiñas e as comas na clave da API copiada, que é o que me dixeron: "Erroches na sintaxe SQL". Quedei claro para min que simplemente podías usar unha inxección SQL básica para evitar todo o proceso de inicio de sesión e converterte nun administrador ou en calquera usuario que queiras. Non creo que ninguén intentou roubar un coche usando a inxección SQL, así que imos probalo.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

En xeral, iniciei sesión na miña conta, fixen clic en "Enviar" e recibín un estado "200 OK" como resposta. Esta vez pensei gravar un vídeo. Está un pouco escuro porque estaba a filmar a altas horas da noite dende a fiestra da miña oficina. Entón, introduzo o comando e ves a través da fiestra que os faros do coche parpadean no xardín de abaixo. Ao principio, a súa luz é débil, pero despois os faros comezan a brillar a plena potencia: este é o motor acendendo. Entón, iniciei o coche usando a inxección SQL (aplausos do público).

Pero iso non é todo. A inxección SQL pódese usar non só para a autorización, senón tamén para substituír outros parámetros como URL, parámetros do corpo da cadea de consulta, etc. De feito, este sistema usa inxeccións SQL en todas partes. Mirando as mensaxes de erro, podemos ver que o que introducimos como contrasinal compárase directamente coa columna de contrasinal da base de datos.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Isto significa que usan contrasinais de texto plano na inxección de SQL. Como din, "isto non é nada bo, e ata moi malo!" Pero basta con SQL, vexamos que máis podes facer para iniciar o teu coche de forma remota. Simplemente envía o comando "EngineStart" e como resposta recibe un identificador enteiro que representa o identificador deste comando, neste caso é ID = 3. Coñecendo o identificador, pode "tirar" un servizo que informará do estado deste. mando.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Entón, ao aumentar ou diminuír o valor de ID, estou "tirando" o estado de calquera comando que se enviou nese sistema.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Non hai nada particularmente interesante, e pregúntome se hai aquí unha referencia directa a un obxecto que podo usar para arrancar o meu coche. Entón, executei o comando "EngineStart" como usuario lexítimo da miña conta e despois tentei chamalo a través da conta doutro usuario, que non debería ter acceso ao sistema. Como resposta, recibín unha mensaxe de erro: "Esta conta non está no contexto da xerarquía". Entón, quizais este hack non funcione. Non obstante, se miras esta API, verás que duplica información: o enderezo de correo electrónico do usuario está asignado ao ID da súa conta.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Se estás desenvolvendo unha API ou pirateando unha API, o tipo de duplicación de información que vemos neste URL pode ser unha fonte de erros. Neste caso, os erros da API poden manifestarse de catro formas diferentes.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Se observas os casos 2 e 3, delineados en vermello, podes ver referencias directas ao obxecto. En ambos os casos, o sistema non verifica se está autorizado para executar o comando. Probei o caso 2 e non funcionou, e o caso 3? Aquí só temos que substituír o ID da conta USER_EMAIL no URL xa que está directamente relacionado co ID da conta ACCOUNT_ID. Anteriormente usabamos o ID da conta da vítima, pero agora usamos a conta do atacante. Entón usei o ID da conta do hacker e o ID do dispositivo da vítima, enviei o comando e recibín un estado de comando "200 OK" e obtiven o control da aplicación MyCar.
Así, con tres vectores de ataque diferentes, puidemos facer todo o que podería facer un usuario lexítimo da aplicación. Isto significa que podes atopar calquera coche da cidade, establecer a súa marca e modelo na aplicación e, a continuación, desbloquear o coche de forma remota e arrincar. Podemos apagar ou activar a alarma, facer cambios no menú de servizo do coche e comprobar o estado de calquera comando. E todo isto pódese facer de tres formas diferentes.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

É obvio que os desenvolvedores de MyCar intentaron solucionar dalgún xeito os erros do sistema. Así, no caso dos contrasinais codificados, simplemente poñen un proxy inverso diante da aplicación para ocultar as credenciais que se utilizan para a autorización. O problema é que os proxies inversos non son máxicos e non poden solucionar todos os problemas. Almacenaron a inxección de SQL nun servizo de terceiros para que aínda sen un contrasinal poida usalo a través do procedemento de verificación do usuario.

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Decidín botarlle unha ollada máis atenta á estrutura do URL. Quizais teña notado que todos os enderezos utilizados polo sistema conteñen m2m. Decidindo que se trataba dun tipo de interacción interna para o mecanismo de autorización na aplicación MyCar, introducín estas cartas en Google e descubrín o sitio web de M2M Suite. O único que podes facer cando ves este formulario é poñer alí un par de comiñas simples e ver que pasa. O que ocorrerá é que obterás a inxección SQL desexada (aplausos do público).

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

E isto ocorre varios meses despois de que os desenvolvedores informasen dun problema coa inxección de SQL. Se unha aplicación ten problemas como este, hai que solucionalo canto antes, pero como podes ver, os desenvolvedores non fixeron nada. Paréceme ofensivo este tipo de desprezo polos usuarios.

O módulo MyCar ten unha unidade GPS para que poida rastrexar a localización do seu coche e visualizalo na aplicación. Pero, como se viu, eles almacenan non só a localización actual dos coches. Almacenan unha morea de información, moito máis da necesaria para facer un seguimento da localización actual dun coche. No meu caso, ao longo de 13 días de uso da aplicación, acumularon algo menos de dous mil puntos de xeolocalización dos lugares que visitou o meu coche. A política de privacidade da empresa desenvolvedora MyCar non di unha palabra sobre esa recollida de información.

Non obstante, aínda empeora. Poderías argumentar que este é só un efecto secundario da implementación do servizo de localización. Pero o caso é que, en lugar de crear só unha lista de lugares aos que vai o teu coche, usan outra API que analiza eses datos e determina os lugares aos que vai máis a miúdo o teu coche. Unha vez máis, que eu saiba, non hai ningún indicio desta función na política de privacidade. Quizais isto non sexa tan sorprendente porque despois dunha tonelada de buscas, atopei a empresa matriz de MyCar chamada Procon Analytics, acudín ao seu sitio web e visitei a sección de preguntas frecuentes. Aquí atopei a pregunta: "Como garante a seguridade dos datos?" A resposta da compañía foi: “A diferenza das nubes públicas que compiten pola prioridade no almacenamento de datos, Procon Analytics utiliza a súa propia nube virtual, que se usa exclusivamente para os usuarios da nosa aplicación e está protexida das interferencias doutros usuarios. Este é un ambiente de nube especial cun alto grao de seguridade, que garante unha fácil dispoñibilidade e rapidez na prestación do servizo. Ao asociarse con Procon Analytics, pode estar seguro de que os seus datos están protexidos de forma segura". Non sei nin que dicir a isto...

Conferencia DEFCON 27. O teu coche é o meu coche. Parte 2

Se vas á súa páxina de Facebook, podes descubrir cousas aínda máis interesantes. Aquí simplemente escriben: "Protexer a información sobre o teu vehículo é vital!" Ben, eu só podo estar de acordo con tal afirmación.

Entón, volvamos á pregunta coa que comecei: "Como ocorre isto e como se pode evitar"? E o máis importante, como podemos evitar que isto suceda como comunidade?

Así remata o meu informe, pero aínda así poderei responder a un par de preguntas (aplausos do público).

Preguntas se o arranxaron todo? Neste punto, creo que solucionaron todos os erros que lles informei, a excepción dos fallos da política de privacidade que mencionei ao final da charla. A última vez que o revisei, todo estaba sen cambios. Cando se me pregunte se podo editar os parámetros da unidade de control electrónico do motor (ECU) do coche dun xeito similar, responderei que a miña tarefa era editar os parámetros do coche só na aplicación MyCar. Almacena unha representación dixital do vehículo que se edita mediante o acceso directo a obxectos, a inxección de SQL ou outro vector de ataque.

A última pregunta é: teño un sistema de arranque do motor sen chave no meu coche co botón "Iniciar" e cal é a situación co bloqueo do volante neste caso? A miña resposta é que MyCar ten un botón deste tipo, polo que este sistema non ten un bloqueo do volante. Sospeito que se instalas este sistema, definitivamente non poderás confiar no bloqueo do volante.

Algúns anuncios 🙂

Grazas por estar connosco. Gústanche os nosos artigos? Queres ver máis contido interesante? Apóyanos facendo un pedido ou recomendando a amigos, Cloud VPS para desenvolvedores desde 4.99 $, un análogo único de servidores de nivel de entrada, que inventamos nós para ti: Toda a verdade sobre VPS (KVM) E5-2697 v3 (6 núcleos) 10 GB DDR4 480 GB SSD 1 Gbps desde 19 dólares ou como compartir un servidor? (dispoñible con RAID1 e RAID10, ata 24 núcleos e ata 40 GB DDR4).

Dell R730xd 2 veces máis barato no centro de datos Equinix Tier IV en Amsterdam? Só aquí 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV desde $199 nos Países Baixos! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - desde $ 99! Ler sobre Como construír a infraestrutura corp. clase co uso de servidores Dell R730xd E5-2650 v4 por valor de 9000 euros por un centavo?

Fonte: www.habr.com

Engadir un comentario