Deep Security

Reporte de Ciberseguridad en las aplicaciones móviles de homebanking en Perú

 

El último año ha sido clave para la expansión digital de los bancos peruanos. Se han lanzado al mercado todo tipo de utilidades y aplicaciones que ayudan a las personas a gestionar su dinero de una manera más fácil. En DeepSecurity, nos preocupamos por la ciberseguridad del sistema financiero local y por eso hemos llevado a cabo un análisis pasivo (no-intrusivo) de las aplicaciones móviles de 12 bancos del Perú.

El primer paso para realizar esta investigación fue seleccionar a las entidades bancarias más importantes del Perú, basados en la lista publicada por la Superintendencia de Banca, Seguros y AFP (SBS)*; luego procedimos a descargar las aplicaciones móviles de las entidades seleccionadas de las páginas oficiales.

Todas las aplicaciones seleccionadas, fueron evaluadas tomando como base los 10 riesgos establecidos por el proyecto internacional OWASP (OWASP Mobile Top 10).

  •     M1: Improper Platform Usage
  •     M2: Insecure Data Storage
  •     M3: Insecure Communication
  •     M4: Insecure Authentication
  •     M5: Insufficient Cryptography
  •     M6: Insecure Authorization
  •     M7: Client Code Quality
  •     M8: Code Tampering
  •     M9: Reverse Engineering
  •     M10: Extraneous Functionality

 

Imagen extraída del reporte de ciberseguridad de aplicaciones móviles de homebanking.

Para llevar a cabo el análisis técnico, todas las aplicaciones pasaron por un proceso de reconocimiento automatizado mediante el cual se obtuvo la primera información relevante de esta investigación. El 70% de las aplicaciones analizadas no cuenta con protección «anti-reversing» (OWASP M9), esto quiere decir que se pudo acceder al código fuente de las aplicaciones móviles sin usar técnicas de evasión. Para demostrar el impacto de esta vulnerabilidad realizamos las siguiente acciones:

1.- Decompilamos la aplicación.

2.- Modificamos la ruta del servicio de autenticación del banco por un backend operado por DeepSecurity.

3.- Recompilamos la aplicación.

4.- Instalamos correctamente la aplicación modificada en un teléfono móvil (sin root)

5.- Se hizo un intento de autenticación con el cual se obtuvieron credenciales usando la aplicación modificada.

 

Un atacante de la vida real, podría usar este método para enviar aplicaciones modificadas a los clientes del banco y convencerlos de que es la real. Importante recalcar esto se encontró en el 70% de las aplicaciones.

Totalmente comprometidos con realizar las pruebas de forma rigurosa, nuestro equipo de investigadores creó cuentas como clientes finales en los bancos evaluados. Con estas cuentas nos registramos en las aplicaciones móviles y fue ahí donde encontramos otro vector interesante en la investigación. En algunas de las aplicaciones evaluadas, encontramos que el usuario/DNI que se usaba para autenticarse a las cuentas, se quedaba guardado en el móvil en texto plano. Este escenario fue más que interesante porque en una de las aplicaciones, encontramos el hash de la contraseña en SHA512, un cifrado que hasta el momento no ha sido roto. Sin embargo, al analizar a profundidad el código fuente (aplicación vulnerable a M2) y por una mala implementación del método criptográfico (M5) encontramos en el código fuente la función que generaba el hash SHA512 y mediante el cual se podía extraer las contraseñas en texto plano con una fuerza bruta poco compleja. La contraseña de nuestro usuario fue extraída en menos de 60 segundos. Para demostrar el impacto que genera esta vulnerabilidad, nuestro equipo de investigadores realizó las siguientes acciones:

1.- Registramos un usuario en la aplicación.

2.- Se extrajo el archivo local.

3.- Se leyó el archivo y se encontró la contraseña en SHA512.

4.- Se hizo fuerza bruta a la contraseña durante 20 segundos.

5.- Se obtuvo la credencial del usuario.

 

Esta vulnerabilidad la calificamos como crítica dado que cualquier aplicación instalada en el teléfono puede acceder a la contraseña replicando el ataque que nosotros realizamos. Si el teléfono del usuario fuese robado, también de forma local se podría extraer la contraseña de la plataforma del banco en cuestión. Dada la criticidad de la vulnerabilidad, DeepSecurity reportó esta vulnerabilidad al banco y fue reparada en menos de 30 días.

Para los más curiosos, en el archivo local se encontraba el hash de la contraseña en SHA512 y un string llamado «salt». Cuando investigamos, nos dimos cuenta de lo siguiente:

1.- La contraseña que solicitaba la aplicación móvil era débil (8 números).

2.- Si sacamos el hash de la contraseña SHA512($password) no era igual al encontrado en el archivo local.

3.- En el código fuente encontramos la función de cifrado y era SHA512($password+$salt)

4.- En el archivo local encontrado en el movil, hallamos un string llamado salt.

5.- Hicimos una tool que sacara el hash de todas las combinaciones de números de 8 caracteres + el hash.

Fragmento del bruter:

for i in range(0,10000000):
    brute_password =  str(number[1:])
    hash = hashlib.sha512()
    hash.update((‘%s%s’ % (brute_password, salt)).encode(‘utf-8’))
    brute_hash = hash.hexdigest()
    print(Fore.BLUE + ‘Password: ‘ + Fore.YELLOW + brute_password, end=» «,flush=True)                
    if password_hash == brute_hash:

De las 10 vulnerabilidades del Top de OWASP, las 10 fueron encontradas en toda la extensión del análisis. En DeepSecurity, con el interés de fomentar la seguridad, animamos a todos los bancos a re-evaluar la seguridad de las aplicaciones móviles dado que los resultados no mostraron niveles altos de ciberseguridad en general. La investigación completa es de 7 páginas y se encuentra en formato PDF, puede ser descargada dando click aquí.

 

*Listado de empresas bancarias de la SBS.

https://www.sbs.gob.pe/supervisados-y-registros/empresas-supervisadas/directorio-del-sistema-financiero/empresas-bancarias.

Servicios

Contacto

Calle Libertad 174- Of. 205
Miraflores, Lima.

(+51) 949 709 480

[email protected]

Suscribirse a nuestro boletín

Le enviaremos información de interés sobre ciberseguridad.

Copyright © 2020 – Deep Security