Está en la página 1de 21

Proyecto de Seguridad en Smartphones

Enunciado:

A lo largo de los contenidos se ha hablado de OWASP, análisis estático y análisis dinámico,


vulnerabilidades, desarrollo seguro, etc. Los Smartphones no quedan libres de ataques. OWASP
define un top 10 de riesgos en aplicaciones para dispositivos móviles.

Se pide:

A partir de los contenidos estudiados y tras leer el enunciado anterior, analiza al menos tres
aplicaciones (.apk) en busca de vulnerabilidades.

. Una apk no oficial, con vulnerabilidades deliberadamente introducidas, y que se publican en


internet para prácticas de entrenamiento.

. Una descargada de algún repositorio no oficial de apks.

. Una descargada desde una tienda oficial.

Para el análisis se deben utilizar tanto herramientas stand-alone como online, de manera que
produzcan resultados complementarios y completen un análisis exhaustivo de las aplicaciones.

En cualquier caso, una vez seleccionadas las herramientas, se puede organizar el trabajo de análisis
siguiendo las siguientes tareas:

Recolección de información (definir alcance y secciones a evaluar).

Análisis estático (observar recursos de la app, código fuente, ficheros de configuración, etc.).

Análisis dinámico (ejecutar la app y monitorizar la actividad).


INDICE
1.Recolección de información.

2.Análisis Estático.

3.Análisis Dinámico.

4.Bibliografia
1.Recolección de información.

Al pedirnos 3 aplicaciones de las que 2 son de sitios fiables, por así decirlo solo tendríamos
que recoger información de la app InsecureBankv2, pero para comprobar lo haremos de las
3.

El proceso de la recopilación de información sobre una aplicación como esta implica


identificar y recopilar información sobre sus vulnerabilidades, configuraciones incorrectas o
debilidades de diseño que podrían ser aprovechadas por los atacantes.

Hay varios métodos típicos para recopilar información:


-Para identificar los puertos abiertos en el servidor utilizaremos una herramienta muy
completa y nos ayuda a ver qué servicios son más vulnerables.

-Identificar los servicios vulnerables y podemos buscar o enumerar los archivos en un


servidor web.

-Analizar el código fuente: ver el código fuente de una aplicación web para comentarios de
código, nombre de archivos, rutas de recursos secretas y más. Puede relevar información
valiosa.

-Parámetro de inyección: estructura de las bases de datos, nombre de tablas, columnas, etc.
Intentar inyectar parámetros de solicitudes HTTP mediante ataques SQL o inyección de
comandos

-Enumeración de usuarios: intentar enumerar usuarios validos mediante la fuerza en


formularios o manipulando solicitudes de aplicación.
-Recopilar información del servidor: obtener información sobre el servidor web y su
configuración pueden revelar posibles debilidades. Estos incluyen detalles como la versión
del servidor y S.O.

Elegiremos de aplicaciones de InsecureBankv2, WhatsApp y Instagram

2.Análisis Estático.

Utilizaremos la información recopilada por la aplicación que he descargado llamada Apktool,


revise el archivo AndroidManifest.xml, al revisarlo se ve que se han exportado cuatro
actividades.
-InsecureBankv2

-Whatsapp
Como podemos ver tiene muchísima más seguridad que la de InsecureBank por lo tanto no hay
vulnerabilidades.

-X

Tampoco vemos ninguna vulnerabilidad ya que es código bastante correcto y seguro.

En InsecureBankv2 vemos que hay permisos sin declarar que son usados por Android en la
aplicación.

READ_PHONE_STATE
Permiso usado en Changepassword , que es accesible desde otras aplicaciones, por lo cual
vemos que es una vulnerabilidad clara.

READ_CALL_LOG

Permiso usado en PostLogin, es accesible desde otras activities. Esto puede generar un leak
de datos hacia estas otras activities.

SEND_SMS

Permiso usado en MyBroadCastReceiver, accesible por otras aplicaciones, lo cual lo hace aun
más vulnerable y hace que los atacantes puedan enviar distintos SMS no deseados a la
aplicación.

Trafico

Ahora usaremos la aplicación de jadx que da información más detallada de cómo es el


código fuente.

En la activity ChangePassword se puede ver que usa una conexión HTTP, lo que nos dice que
por ese protocolo esta sin cifrar y que se envía información sensible , esto puede desembocar
en ataques MITM y hacerlo mas vulnerable.
-Esto muestra cómo se recuperan y se guardan las credenciales en cada una de las aplicaciones.

En el código fuente de LoginActivty se puede ver que esta aplicación tiene un botón que no
podemos ver. Además, comprobamos que en el archivo strings.xml se puede ver que el
is_admin está como no, lo que quiere decir que está usando setVisibility(8) para configurar el
botón para que no se vea.
Si cambiamos el valor de is_admin de no a sí, y volvemos a usar apktool para reconstruirla se
puede ver cómo nos sale un botón de create user.

Pero si luego vemos el código y vamos donde createUser() nos dice que el botón no deja
crear ningún usuario por lo que es una vulnerabilidad más.

Eche un vistazo también al código de performLogin() en LoginActivity que se inicia cuando se


pulsamos en el botón para iniciar sesión
Este método hace que se cree la actividad de DoLogin y al observar este código vimos un metodo
interesante llamado postData()

Este método hace que enviase las credenciales de inicio de sesión al servidor, pero como se ve en el
código al meter devadmin , las credenciales se enviaran a un punto final llamado devlogin.
Básicamente que si pones devadmin y cualquier contraseña puedes acceder.

3.Análisis Dinámico.
Usamos la herramienta Docker
Permisos peligrosos
android.permission.ACCESS_COARSE_LOCATION

Acceda a fuentes de ubicación aproximadas, como la base de datos de la red móvil, para determinar
la ubicación aproximada del teléfono, cuando esté disponible.

android.permiso.GET_ACCOUNTS:

Permite acceder a la lista de cuentas en el Servicio de Cuentas.

android.permission.READ_CONTACTS:

Permite que una aplicación lea todos los datos de contacto (dirección) almacenados en su teléfono.

android.permiso.READ_PROFILE:

Permite que una aplicación lea los datos del perfil personal del usuario.

android.permiso.SEND_SMS:

Permite que la aplicación envíe mensajes SMS. Las aplicaciones maliciosas pueden costarle dinero al
enviar mensajes sin su confirmación.

android.permiso.USE_CREDENTIALS:

Permite que una aplicación solicite tokens de autenticación.

android.permission.WRITE_EXTERNAL_STORAGE:

Permite que una aplicación escriba en un almacenamiento externo.


-Virustotal:

Este es el nombre identificativo de varios productos antivirus involucrados en el escaneo de ciertos


archivos o aplicaciones. Cuando carga un archivo en VirusTotal, la plataforma ejecuta un análisis
utilizando varios motores antivirus y otras herramientas de detección de malware. Explica qué
significan estas definiciones.
PUP/Android.FLPrev.1012806: asociado con programas potencialmente no deseados (PUP)
detectados en dispositivos Android.

Android:Evo-gen [Trj]: Indica que se ha detectado un posible caballo de Troya en un dispositivo


Android.

Trojan-Spy.AndroidOS.Agent: Indica la presencia de un troyano espía detectado en su dispositivo


Android.

Troyano (0001140e1): Indica que K7GW ha detectado un troyano.

Artemis!5EE482906564: Esto indica que hay malware detectado por McAfee. "Artemis" es el nombre
común que McAfee asigna a los archivos sospechosos.

Android.Obfus. GEN41318: Indica un archivo potencialmente ambiguo o ambiguo en dispositivos


Android.

Artemis: otra detección de Sophos que sugiere la presencia de un archivo sospechoso.

Andr/Xgen-AOZ: muestra posibles detecciones de malware o amenazas en dispositivos Android.


AppRisk:Generisk: Symantec Mobile Insight identifica este archivo como una amenaza de aplicación
genérica.

A.expense.smsvideo.a: el servicio de detección de Tencent expone las aplicaciones a riesgos de gastos


y mensajes de texto.

Android.PUA.General: Trustlook identifica este archivo como una aplicación potencialmente no


deseada (PUA) en dispositivos Android.

-OWASP MOBILE TOP 10

Una vez terminado el proceso de análisis vemos las vulnerabilidades encontradas en la OWASP
Mobile top 10:

En este análisis hemos encontrado estas:


M1: Uso inadecuado de credenciales

Estos agentes pueden descubrir y hacer un mal uso de las credenciales cifradas o explotar
vulnerabilidades que resulten del mal uso de las credenciales. Ya que explotan credenciales cifradas y
abusan de ellas en aplicaciones móviles pueden incluir ataques automatizados.

M2: Seguridad inadecuada de la cadena de suministro

Los atacantes pueden inyectar código malicioso en el código base de una aplicación móvil o
modificar el código durante el proceso de compilación para introducir puertas traseras, software
espía u otro código malicioso.

M3: Autenticación/Autorización insegura

Los agentes de amenazas que explotan las vulnerabilidades de autenticación y autorización


generalmente lo hacen mediante ataques automatizados que utilizan herramientas personalizadas o
no preparadas.

M5: Comunicación insegura

La mayoría de las aplicaciones móviles modernas intercambian datos con uno o más servidores
remotos. Las transferencias de datos, que suelen ocurrir a través de la red del operador de móvil e
Internet, pueden interceptarse y alterarse por amenazas escondidas si los datos se transmiten en
texto claro o usan cifrado obsoleto.
4.Bibliografia

https://github.com/MobSF/docs/blob/master/docker.md

https://github.com/dineshshetty/Android-InsecureBankv2

https://www.python.org/downloads/

https://www.virustotal.com/gui/file/b18af2a0e44d7634bbcdf93664d9c78a2695e050393fcfbb5e8b9
1f902d194a4/detection

https://www.joesandbox.com/analysis/403615/0/html

https://owasp.org/www-project-mobile-top-10/

https://www.virtualbox.org/

También podría gustarte