En esta era digital, ha surgido un nuevo fraude cibernético en los servicios de coche compartido. La creciente popularidad de los servicios de coche compartido ha llevado a algunos expertos a predecir el fin de la propiedad de coches privados en las grandes ciudades. Las estadísticas parecen respaldar esta afirmación: por ejemplo, en 2017 Moscú vio que la flota de coches compartidos, el número de usuarios activos y el número de viajes que hicieron casi se duplicó. Es una gran noticia, pero los especialistas en seguridad de la información han empezado a plantearse algunas preguntas al respecto: ¿cómo se protege a los usuarios de esos servicios y qué riesgos potenciales corren en caso de un acceso no autorizado a sus cuentas?
¿Por qué los servicios de coche compartido resultan interesantes para los criminales?
La respuesta simple sería porque quieren conducir un buen coche a expensas de otra persona. Sin embargo, es probable que sea complicado hacerlo más de una vez: una vez que el propietario de la cuenta se entera de que le han cobrado por un coche que nunca alquiló, lo más probable es que se ponga en contacto con la línea de asistencia del servicio, el proveedor del servicio comprobará los detalles del viaje y puede acabar denunciando el asunto a la policía. Esto significa que cualquiera que lo intente por segunda vez será rastreado y atrapado con las manos en la masa. Esto es obvio y hace que este escenario en particular sea el motivo menos probable para secuestrar la cuenta de alguien.
La venta de cuentas secuestradas parece ser un motivo con más peso. Es inevitable que haya demanda de estos servicios por parte de personas que no tienen permiso de conducir o de personas rechazadas por el equipo de seguridad del servicio de coche compartido. De hecho, ya existen ofertas de esta naturaleza en el mercado.
¿Cómo anuncian los estafadores las cuentas robadas en la Red oscura?
En primer lugar, los beneficios de una cuenta robada presentan menos responsabilidad para el conductor. Si chocan el coche o atropellan a un peatón, los delincuentes cibernéticos prometen que el usuario no sufrirá las consecuencias legales del delito, lo que significa que la persona cuyas credenciales de la cuenta fueron robadas tendrá que rendir cuentas, y no el usuario real del coche.
En segundo lugar, los delincuentes cibernéticos prometen más «anonimato», lo que ayuda al comprador final a no revelar su información personal, como el número de teléfono, fotocopias de su pasaporte y permiso de conducir, así como otras credenciales.
En tercer lugar, uno de los principales destinatarios de los defraudadores son personas que todavía no han alcanzado la edad legal para conducir o que no cuentan con la experiencia de conducción (por lo general, de 2 a 3 años) que exigen los servicios de coche compartido, diciendo que su servicio ayuda a las personas a no pagar las tasas de los accidentes de tráfico, a conducir bajo la influencia de sustancias y a no ser consideradas responsables de ninguna manera.
Sin embargo, el supuesto anonimato es un concepto peligroso tanto para los proveedores de servicios de coche compartido, quienes pueden acabar perdiendo hasta 400 000 dólares por el robo de coches, como para los usuarios, cuya información podría verse comprometida, así como para los peatones y otros conductores que arriesgan sus vidas estando en la carretera con un conductor imprudente que utiliza una cuenta de coche compartido robada.
Además, alguien que conoce los detalles de la cuenta de coche compartido de un usuario puede rastrear todos sus viajes y robar las pertenencias que se dejan en el coche. Y, por supuesto, un coche alquilado fraudulentamente a nombre de otra persona siempre puede ser conducido a algún lugar remoto y despiezado para obtener piezas de repuesto.
Seguridad para aplicaciones
Ahora que sabemos que hay un interés potencial entre los elementos criminales; veamos si los desarrolladores de aplicaciones de servicios de coche compartido han reaccionado ante ello. ¿Han pensado en la seguridad del usuario y han protegido su software frente a accesos no autorizados? Probamos 13 aplicaciones para móviles y (¡aviso de spoiler!) los resultados no fueron muy alentadores.
Empezamos por comprobar la capacidad de las aplicaciones para evitar su ejecución en dispositivos Android con privilegios de raíz, y evaluamos lo bien que se ofusca el código de las aplicaciones. Lo hicimos por dos razones:
- la gran mayoría de las aplicaciones para Android pueden descompilarse, los delincuentes modifican su código (por ejemplo, para que las credenciales de los usuarios sean enviadas a un C&C), vuelven a compilar la aplicación, la firman con un nuevo certificado y la cargan de nuevo en una tienda de aplicaciones;
- un atacante desde un dispositivo enraizado puede infiltrarse en el proceso de la aplicación y obtener acceso a los datos de autenticación.
Otro elemento de seguridad importante es la posibilidad de elegir un nombre de usuario y una contraseña cuando se utiliza un servicio. Muchos servicios utilizan el número de teléfono de una persona como su nombre de usuario. Este dato es bastante fácil de obtener para los delincuentes cibernéticos ya que los usuarios a menudo olvidan ocultarlo en los medios sociales, mientras que los usuarios de coches compartidos pueden ser identificados en las redes sociales por sus hashtags y fotos.
Seguridad de la contraseña
La mitad de las aplicaciones que probamos no permiten que el usuario cree sus propias credenciales; en cambio, obligan al usuario a utilizar su número de teléfono y un código PIN enviado mediante un mensaje de texto. Por un lado, esto significa que el usuario no puede establecer una contraseña débil como «1234»; por otro lado, presenta una oportunidad para que un atacante obtenga la contraseña (interceptándola mediante la vulnerabilidad SS7, o haciendo que se vuelva a emitir la tarjeta SIM del teléfono). Decidimos utilizar nuestras propias cuentas para ver lo fácil que es averiguar la «contraseña».
Si un atacante descubre el número de teléfono de una persona en las redes sociales e intenta utilizarlo para acceder a la aplicación, el propietario recibirá un SMS con un código de validación. El código de validación tiene solo cuatro dígitos, lo que significa que solo se necesitan 10 000 intentos para adivinarlo, no es un número tan grande. Lo ideal sería que esos códigos tuviesen al menos seis dígitos y que incluyesen caracteres en mayúsculas y minúsculas, además de números.
Otro servicio de uso compartido de coches envía contraseñas más seguras a los usuarios; sin embargo, eso también tiene un inconveniente. Los códigos se crean siguiendo una única plantilla: siempre tienen números en primer y último lugar y cuatro caracteres latinos en minúscula en el medio.
Eso significa que hay 45 millones de combinaciones posibles para buscar; si no se restringiese la posición de los números, el número de combinaciones se elevaría a dos mil millones. Por supuesto, 45 000 000 es también una gran cantidad, pero la aplicación no tiene un tiempo de espera para entrar en la siguiente combinación, por lo que no hay obstáculos que impidan la utilización de un método de fuerza bruta.
Ahora, volvamos a los códigos PIN de la primera aplicación. La aplicación da a los usuarios un minuto para introducir el PIN; si no lo hacen en este tiempo, los usuarios tienen que solicitar un nuevo código. Resultó que la vida útil de la combinación es de un poco más de dos minutos. Utilizamos un método de fuerza bruta, reproducimos parte del protocolo de comunicación app/servidor e iniciamos el ataque con fuerza bruta. Tenemos que admitir que no pudimos forzar el código, y hay dos posibles razones para ello. En primer lugar, nuestra línea de Internet puede haber sido inadecuada o, en segundo lugar, el operador del coche compartido estableció un tiempo de espera de dos minutos para el código PIN, por lo que no podría ser forzado en bruto dentro de este período de dos minutos incluso con una excelente conexión a Internet. Decidimos no continuar, confirmando solo que el servicio seguía respondiendo y que se podía continuar un ataque después de varios intentos de enviar 10 000 solicitudes a la vez.
Al hacerlo, iniciamos deliberadamente el ataque de fuerza bruta en un solo hilo de una sola dirección IP, dando así al servicio la posibilidad de detectar y bloquear el ataque, ponerse en contacto con la posible víctima y, como último recurso, desactivar la cuenta. Pero no sucedió ninguna de estas cosas. Decidimos dejarlo así y pasamos a probar la siguiente aplicación.
Intentamos todos los procedimientos anteriores en la segunda aplicación, con la única excepción de que no registramos un ataque de fuerza bruta para la contraseña. Decidimos que si el servidor permite que se comprueben 1 000 combinaciones, probablemente también permitirá que se comprueben 45 millones de combinaciones, así que es solo cuestión de tiempo.
Es un proceso largo con un resultado predecible. Esta aplicación también almacena el nombre de usuario y la contraseña a nivel local en un formato cifrado, pero si el ciberdelincuente conoce su formato, el forzado bruto solo llevará un par de minutos, la mayor parte de este tiempo se dedicará a generar el par contraseña/algoritmo hash MD5 (la contraseña se procesa con un algoritmo hash con MD5 y se escribe en un archivo en el dispositivo).
Protección contra la superposición
Por supuesto, es mucho más rápido y efectivo (desde el punto de vista del atacante) si se puede infectar un dispositivo Android, es decir, el SMS de autorización puede ser interceptado, por lo que el atacante puede conectarse instantáneamente en otro dispositivo. Si la contraseña es segura, el atacante puede secuestrar la ejecución de la aplicación mostrando una ventana falsa con campos de entrada para los datos de acceso que cubre la interfaz de la aplicación genuina. Ninguna de las aplicaciones que hemos analizado podría contrarrestar este tipo de actividad. Si la versión del sistema operativo es lo suficientemente antigua, se pueden escalar los privilegios y, en algunos casos, se pueden extraer los datos necesarios.
Resultado
La situación es muy similar a la que el equipo de Kaspersky encontró en las aplicaciones de Connected Car. Parece que los desarrolladores de aplicaciones no entienden del todo las amenazas actuales para las plataformas móviles, tanto en la fase de diseño como en la de creación de la infraestructura. Un buen primer paso sería ampliar la funcionalidad para notificar a los usuarios de la existencia de actividades sospechosas, en la actualidad solamente uno de los servicios envía notificaciones a los usuarios sobre los intentos de acceder a su cuenta desde un dispositivo diferente. La mayoría de las aplicaciones que analizamos están mal diseñadas desde el punto de vista de la seguridad y necesitan ser mejoradas. Además, muchos de los programas no solo son muy similares entre sí, sino que están basados en el mismo código.
Los operadores rusos de servicios de coches compartidos podrían aprender una o dos cosas de sus colegas de otros países. Por ejemplo, un actor importante en el mercado del alquiler de coches a corto plazo solo permite a los clientes acceder a un coche con una tarjeta especial, lo que puede hacer que el servicio sea menos cómodo, pero sin duda mejora drásticamente la seguridad.
Recomendaciones para los servicios de coche compartido
- Utilizar los empaquetadores y ofuscadores disponibles en el mercado para complicar la ingeniería inversa. Prestar especial atención al control de integridad, para que no sea posible modificar la aplicación.
- Utilizar mecanismos para detectar operaciones en dispositivos enraizados.
- Permitir al usuario crear sus propias credenciales; asegurarse de que todas las contraseñas sean seguras.
- Notificar a los usuarios sobre los inicios de sesión exitosos en otros dispositivos.
- Cambiar a notificaciones PUSH: todavía es raro que el malware vigile la barra de notificaciones en Android.
- Proteger la interfaz de la aplicación para que no se pueda superponer a ella ninguna aplicación falsa.
- Añadir una comprobación del certificado del servidor.
- Considerar la posibilidad de invertir en una solución antifraude completa para la empresa que ayude a prevenir el fraude y a reducir los costes de una autenticación de segundo factor ineficaz
Recurso: https://securelist.com/a-study-of-car-sharing-apps/86948/