Seguridad en Smartphones
Actividad 2
CLAUDIA FERNÁNDEZ GUTIÉRREZ
ÍNDICE DE CONTENIDOS
OBJETIVOS 2
SELECCIÓN DE APKS 2
HERRAMIENTAS USADAS 2
MASTG ANDROID 4
- ALCALCE 4
- RECOLECCIÓN DE INFORMACIÓN 5
- ANÁLISIS ESTÁTICO 6
- ANÁLISIS DINÁMICO 15
LUCKY PATCHER 21
- ALCALCE 21
- RECOLECCIÓN DE INFORMACIÓN 22
- ANÁLISIS DINÁMICO 29
UPTODOWN 31
- ALCALCE 31
- RECOLECCIÓN DE INFORMACIÓN 33
- ANÁLISIS DINÁMICO 40
OBJETIVOS
Analizar 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 han de utilizar tanto herramientas stand-alone como online, de manera
que produzcan resultados complementarios y completen un análisis exhaustivo de las
aplicaciones. Una vez seleccionadas las herramientas se puede organizar el trabajo de
análisis siguiendo las siguientes tareas:
1. Definir el alcance.
2. Recolección de información, como especificaciones técnicas,
3. Análisis estático (observar recursos de la app, código fuente, ficheros de
configuración…)
4. Análisis dinámico (ejecutar la app y monitorizar la actividad)
SELECCIÓN DE APKS
A continuación, se enumeran las apks seleccionadas :
- MASTG Android Java App, como apk no oficial con vulnerabilidades
deliberadamente introducidas.
- Lucky Patcher, como apk de un repositorio no oficial de apks, una herramienta
para modificar apps y obtener acceso sin límites a aplicaciones Android. Debido
a su naturaleza no está disponible en Google Play.
- UpToDown, como apk descarga desde una tienda oficial, se trata de un simple
juego de móvil.
HERRAMIENTAS USADAS
Las herramientas que han sido usadas para realizar el análisis completo de la aplicación
son las siguientes:
- Web OWASP, se ha empleado para obtener información acerca de las
vulnerabilidades más comunes en aplicaciones móviles y manuales de testing.
- ADB (Android Debug Bridge), herramienta principal para conectarse a un
dispositivo Android ya sea emulad o físico.
- ApkTool, para la descompresión de la apk.
- JADX, decompilador Java.
- AVD (Android Virtual Device), a través de Android Studio se pueden ejecutar
máquinas virtuales Android donde probar las apks.
- Virus Total, sitio web que proporciona análisis de archivos y páginas web a
través de antivirus.
- MobSF (Mobile Security Framework), se trata de una aplicación de código
abierta dedicada a analizar aplicaciones móviles capaz de realizar tanto análisis
estático como dinámico.
- Wireshark, analizador de protocolos utilizado para realizar análisis y solucionar
problemas en redes de comunicaciones, para análisis de datos y protocolos.
- BurpSuite, conjunto de herramientas especializadas para realizar pruebas de
penetración.
**Mi intención era capturar el tráfico tanto, mediante Wireshark como
BurpSuite sin embargo, no he sido capaz de llevarlo a cabo. Ya que no he
encontrado la manera de poder capturar el tráfico.
MASTG ANDROID
ALCALCE
OBJETIVO
El presente análisis tiene como objetivo identificar los posibles riesgos y
vulnerabilidades asociadas a la aplicación MASTG Android.
Se va a llevar a cabo un Gray-box testing, al contar con información parcial de la
estructura interna de la aplicación (wiki).
ASPECTOS A EVALUAR
Los aspectos que van a evaluarse se describen a continuación:
1. Recolección previa de información de la aplicación. Que nos proporcionará
contexto y ayudará a guiar el enfoque del análisis. Aquí se incluye la revisión de
cualquier tipo de documentación disponible sobre la aplicación, información
acerca del desarrollador…
2. Análisis estático, empleando un enfoque híbrido automático/manual:
- Código fuente. Se llevará a cabo una revisión del código fuente de la aplicación
en busca de posibles vulnerabilidades, exposición de datos sensibles…
- Permisos. Se realizará un análisis de los permisos usados por la aplicación,
llegando a determinar si resultan excesivos o innecesarios al igual que aquellos
que impliquen acceso a funcionalidades críticas del dispositivo o datos sensibles.
3. Análisis dinámico, es decir la prueba y evaluación de la aplicación en tiempo de
ejecución real. Como principal objetivo está el encontrar vulnerabilidades de
seguridad y puntos débiles, además de verificar que los mecanismos de
seguridad brindan la protección suficiente contra los tipos de ataques más
frecuentes.
ENTREGABLES
- Reporte de la aplicación MobSF (mobsfv_MASTG.pdf)
- Análisis de Virus Total.
RECOLECCIÓN DE INFORMACIÓN
El activo a analizar es MASTG perteneciente al entorno de “MASTG HACKING
PLAYGROUND”, una colección de aplicaciones educativas (Android e IOS), que son
intencionalmente inseguras para brindar orientación a desarrolladores, investigadores y
pentesters.
ESPECIFICACIONES TÉCNICAS
Plataforma de desarrollo: Android Studio
Lenguaje de programación: Java
Nombre del Paquete: sg.vp.owasp_mobile.omtg_android
Compatibilidad: Android 4.4
Minimum SDK Version: 21
Target SDK Version: 26
MÁS INFORMACIÓN
La aplicación está compuesta por un total de 25 activities. La actividad MyActivity es
la MAIN y LANCHER. Además cuenta con:
- un servico (org.acra.sender.SenderService), servicio probablemente empleado
por la aplicación para la gestión de informes de errores utilizando ACRA
(Application Crash Report for Android)
- y un provider
(OMTG_CODING_003_SQL_Injection_Content_Provider_Implementation
).
Puesto que se trata de una aplicación orientada a fines educativos su wiki cuenta con
información acerca de los diferentes casos de pruebas existentes:
01. Bad Encryption 02. KeyChain
03. Keystore 04. Internal/External Storage
05. SharedPreferences 06. SQLite Not Encrypted/Encrypted
07. Logging 08. Keyboard cache
09. Memory 10. Webview Remote/Local
11. Best practice 12. Sql Injection
13. Code Injection 14. Secure Channel
ANÁLISIS ESTÁTICO
VIRUS TOTAL
La web Virus Total no ha encontrado nada especial a destacar:
MOBSF
La herramienta de MobSF ha calificado la aplicación con una puntuación de 41 sobre
100, encontrándose en el grado B (riesgo medio) de riego.
MANIFEST
Severida
Nº Vulnerabilidad
d
1 Versión vulnerable de Android Alta
La aplicación puede ser instalada en una versión vulnerable de Android (Android 5.0-
5.0.2, [minSDK=21]
2 Aplicación depurable Alta
Una APK de producción no debería serlo, ya que implica poder adjuntar un depurador de
Java a la aplicación en ejecución, inspeccionarla en tiempo real, establecer puntos de
interrupción, avanzar paso a paso, recompilar valores de variables e incluso cambiarlos:
3 Atributo backup Warning
El atributo backup define si los datos de la aplicación pueden ser respaldados y
restaurados por un usuario que ha habilitado la depuración USB. Si está configurado
como true, permite a un atacante tomar el respaldo de los datos de la aplicación a través
de adb incluso si el dispositivo no está rooteado. Esta configuración debe estar
establecida a false en aplicación que manejen información sensible:
4 Permisos peligrosos Warning
Tanto el permiso de Internet (conexión a Internet) como el de Read_external_storage
(acceder y almacenar en el almacenamiento externo del dispositivo), son permisos
considerados peligrosos. La presencia de estos permisos no implica necesariamente que
haya brechas de seguridad, sin embargo se ha de tener en cuenta, ya que se puede abusar
de dichos permisos.
ANÁLISIS DE CERTIFICADO
Al realizar el análisis de certificados se ha encontrado lo siguiente:
Severida
Nº Vulnerabilidad Descripción
d
Certificado de Aplicación firmada con el certificado de
1 depuración. Una aplicación no debe ser Alta
depuración
enviada con un certificado de depuración.
La aplicación está firmada con el esquema
de firma v1, lo que la hace vulnerable a la
2 Vulnerable a Janus vulnerabilidad Janus en Android 5.0-7.0. Warning
Las aplicaciones firmadas con esquemas v1
y v2/v3 también son vulnerables
La aplicación está firmada con
Certificado vulnerable SHA1withRSA. SHA1 tiene problemas de
3 Warning
a colisión hash. colisión. El archivo de manifiesto indica que
SHA256 está en uso
ANÁLISIS DE ARCHIVOS
Se han encontrado los siguientes archivos
- Archivos de certificado y clave incrustado directamente en el código, en lugar
de ser gestionados de manera segura. (assets/server.p12
res/raw/certificate.pem)
- Archivos Keystore, empleado para almacenar claves criptográficas lo que puede
comprometer la seguridad de la aplicación y los datos que maneja.
(res/raw/mykeystore.bks)
ANÁLISIS DE CÓDIGO
Resultado del análisis de código hemos obtenido lo siguiente:
N Vulnerabilidad Standard Severidad
CWE: CWE-919: Weaknesses in Mobile
Configuración de Applications
1 depuración OWASP Top 10: M1: Improper Platform Alta
habilitada Usage
OWASP MASVS: MSTG-RESILIENCE-2
En ambientes de producción está variable debería estar desactivada.
Clase: BuildConfig
CWE: CWE-532: Insertion of Sensitive
Logeo de información
2 Information into Log File Alta
sensible OWASP MASVS: MSTG-STORAGE-3
Se está logando información sensible como el usuario y contraseña en plaintext. Todo el
código de registro y depuración deben eliminarse antes de crear una versión de
producción.
Clase: OMTG_DATAST_002_Logging
OWASP Top 10: M5: Insufficient
3 Encriptación débil Alta
Cryptography
Se deben utilizar bibliotecas y funciones de cifrado adecuados ya que algoritmos débiles
pueden someterse fácilmente a ingeniera inversa.
Clase: OMTG_DATAST_002_Logging
CWE: CWE-89: Improper Neutralization of
Special Elements used in an SQL Command
4 Inyección SQL ('SQL Injection')
Alta
OWASP Top 10: M7: Client Code Quality
En ambos casos , la query SQL y el content provider son propensos a ataques de
inyección SQL
Clase: OMTG_CODING_003_SQL_Injection
Clase: OMTG_CODING_003_SQL_Injection_Content_Provider
5 Almacenamiento de OWASP Top 10: M1: Improper Credential Alta
credenciales en Usage
SharedPreferences
Las credenciales de usuario se están guardando en un clave-valor. Esto debe evitarse ya
que se almacenan por defecto en texto plano.
Clase: OMTG_DATAST_001_SharedPreferences
CWE: CWE-749: Exposed Dangerous Method
Implementación or Function
6 insegura de WebView OWASP Top 10: M1: Improper Platform Alta
Usage
OWASP MASVS: MSTG-PLATFORM-7
En ambos casos se ha realizado una implementación insegura de WebView lo que
puede hacer posible ejecutar métodos java a través de JavaScript.
Clase: OMTG_ENV_005_WebView_Local
Clase: OMTG_ENV_005_WebView_Remote
Canal de comunicación
7 OWASP: Insecure Communication Alta
inseguro
El canal de comunicación empleado es inseguro ya que se está empleando http, lo que
puede llevar a la monitorización de todo el tráfico.
Clase: OMTG_NETW_001_Secure_Channel
CWE: CWE-276: Incorrect Default Permissions
Lectura/escritura en
8 OWASP Top 10: M2: Insecure Data Storage Warning
almacenamiento externo OWASP MASVS: MSTG-STORAGE-2
Almacenar información sensible tanto en el almacenamiento interno como externo
puede llevar a fugas de información, ya que dicha información se guarda en archivos
que pueden ser fácilmente encontrados en el dispositivo.
Clase: OMTG_DATAST_001_InternalStorage
Clase: OMTG_DATAST_001_ExternalStorage
9 Sql not encrypted CWE: CWE-312: Cleartext Storage of Sensitive Warning
Information
OWASP Top 10: M9 Reverse Engineering
OWASP MASVS: MSTG-STORAGE-14
No se debe guardar información sensible en SQLite ya que por defecto se almacena en
texto plano.
Clase: OMTG_DATAST_001_SQLite_Not_Encrypted
CWE: CWE-312: Cleartext Storage of Sensitive
Información sensible Information
10 Warning
hardcodeada OWASP Top 10: M9 Reverse Engineering
OWASP MASVS: MSTG-STORAGE-14
Clase : MyApplication.java
CWE: CWE-327: Use of a Broken or Risky
Cryptographic Algorithm
11 Uso de SHA1 OWASP Top 10: M5: Insufficient Warning
Cryptography
OWASP MASVS: MSTG-CRYPTO-4
Este algoritmo es vulnerable a colisiones de hash.
CWE: CWE-330: Use of Insufficiently Random
Values
Generador de números
12 OWASP Top 10: M5: Insufficient Info
aleatorios inseguro Cryptography
OWASP MASVS: MSTG-CRYPTO-6
La librería empleada para generar números aleatorios en insegura.
ANÁLISIS DINÁMICO
EJECUCIÓN DE LA APLICACIÓN
1. Aplicación Debugeable
Puesto que la aplicación es debugeable podemos, por ejemplo, extraer información
del directorio privado data de la aplicación (acceso al shell no rooteado). También
puede llegar a ejecutarse código arbitrario.
Si tratamos de acceder a otra aplicación empleando el mismo método vemos que no
es posible.
2. Backup
Puesto que la aplicación presenta el atributo de allowBackup = true, podemos
realizar una copia backup de la aplicación, sin necesidad de tener el dispositivo
rooteado
3. Bad Encryption
Si observamos el código podemos dar con la contraseña.
Con el siguiente método podemos obtener la cadena desencriptada:
4. Internal Storage:
Para poder acceder a la carpeta donde se encuentra los archivos del almacenamiento
interno debemos acceder al shell del dispositivo. Una vez ahí nos dirigimos a la
siguiente ruta data/data/{nombre_paquete}/files:
- En el directorio data/data se almacenan los datos de las aplicaciones instaladas.
Cada aplicación tiene su propio directorio nombrado por el nombre de su
paquete.
- La carpeta files pertenece al almacenamiento interno.
Encontramos un archivo (test_file) que como podemos ver contiene información
sensible:
5. External Storage
Al igual que el almacenamiento interno el almacenamiento externo guarda su
información en una carpeta. Sin embargo no he sido capaz de acceder a ella.
A continuación podemos ver el log del error:
6. Shared Preferences,
La aplicación crashea al intentar acceder a la Activity. Sin embargo, la intención es
crear un archivo de clave valor (key.xml) con credenciales, como podemos ver a
través del código:
Para acceder al archivo hemos de acceder a la siguiente ruta:
data/data/{nombre_paquete}/shared_prefs
7. SqLite
Se crea una base de datos SQLite sin ningún tipo de encriptación, por lo que se
puede acceder a ella y ver sus contenidos. Para acceder a las bases de datos debemos
ir a la siguiente ruta data/data/{nombre_paquete}/databases:
8. Logging
Al iniciar sesión se realiza un logeo de las credenciales:
9. SqlInyection
Fácilmente podemos hacer Login, al hacer una inyección de SQL:
10. SqlInyection content provider
El content provider también puede ser vulnerable a ataques de inyección.
11. Code Inyection
Esta actividad simula una inyección de código a través de la clase DexClassLoader,
tratando de cargar dinámicamente archivos JAR externos.
Pero como podemos ver ha saltado una excepción por lo que no se ha completado:
LUCKY PATCHER
ALCALCE
OBJETIVO
El presente análisis tiene como objetivo identificar los posibles riesgos y
vulnerabilidades asociadas a la aplicación Lucky Patcher.
Se va a llevar a cabo un Gray-box testing, al contar con información parcial de la
estructura interna de la aplicación.
ASPECTOS A EVALUAR
Los aspectos que van a evaluarse se describen a continuación:
1. Recolección previa de información de la aplicación. Que nos proporcionará
contexto y ayudará a guiar el enfoque del análisis. Aquí se incluye la revisión de
cualquier tipo de documentación disponible sobre la aplicación, información
acerca del desarrollador…
2. Análisis estático, empleando un enfoque híbrido automático/manual:
- Código fuente. Se llevará a cabo una revisión del código fuente de la aplicación
en busca de posibles vulnerabilidades, exposición de datos sensibles…
- Permisos. Se realizará un análisis de los permisos usados por la aplicación,
llegando a determinar si resultan excesivos o innecesarios al igual que aquellos
que impliquen acceso a funcionalidades críticas del dispositivo o datos sensibles.
3. Análisis dinámico, es decir la prueba y evaluación de la aplicación en tiempo de
ejecución real. Como principal objetivo está el encontrar vulnerabilidades de
seguridad y puntos débiles, además de verificar que los mecanismos de seguridad
brindan la protección suficiente contra los tipos de ataques más frecuentes.
ENTREGABLES
- Reporte de la aplicación MobSF (mobsfv_LuckyPatcher.pdf)
- Análisis de Virus Total
RECOLECCIÓN DE INFORMACIÓN
El activo a analizar es Lucky Patcher es una herramienta para modificar apps y obtener
acceso sin límites a aplicaciones y juegos Android.
ESPECIFICACIONES TÉCNICAS
Las especificaciones técnicas encontradas:
Plataforma de desarrollo Android Studio
Lenguaje de programación Java
Compatibilidad Android 4.0
Versión Actual 9.20.6.1
Target SDK 25
Min SDK 16
MÁS INFORMACIÓN
En su sitio web podemos ver más información sobre ella. Se trata de una aplicación que
esta desactivada en el Play Store, por lo que la única forma de instalarla es mediante
webs no oficiales. Según la web, se trata de una app completamente segura a pesar de
que el dispositivo la detecte como virus o malware. Su funcionamiento se basa en
acceder a diferentes aplicaciones y modificarlas según las necesidades del usuario.
Cuenta con un total de 11 activities, 10 servicios, 14 receivers y 6 providers.
ANÁLISIS ESTÁTICO
VIRUS TOTAL
Si nos fijamos en el resultado de Detección de VirusTotal podemos ver que uno de los
proveedores de seguridad la ha calificado como Malware:
Y ha destacado con un Warning las siguientes reglas de IDS colaborativas.:
- ET INFO Android Device Connectivity Check, relacionada con la detección de
algún tipo de actividad o comportamiento vinculado a la conectividad de
dispositivos Android.
- SURICATA STREAM PACKET with Invalid timestamp, indica la detección
de un paquete de red con una marca de tiempo invalidad por parte de Suricata, lo
que puede indicar un comportamiento anómalo en la comunicación de red, ya sea
algo malicioso o un error de protocolo de red.
La activación de ambas reglas no tiene por qué estar relacionado con un problema
graves simplemente han sido identificadas como sospechosas.
MOBSF
Los resultados del análisis estático realizado por MobSF la califica con un riesgo alto
(37/100) y un grado C.
MANIFEST
En el manifest podemos ver que hay un total de 20 permisos de los cuales 11 son
considerados como peligrosos:
- Authenticate_Accounts, que permite a la aplicación utilizar las capacidades de
autentificación de cuentas del Administrador de cuentas, incluida la creación de
cuentas, así como la obtención y configuración de sus contraseñas.
- Camera: permite a una aplicación tomar fotos y videos con la cámara.
- Get_Accounts: acceso a la lista de cuenta en el servicio de Cuentas.
- Manage_Accounts, permite a la aplicación realizar operaciones como agregar y
eliminar cuentas e incluso sus respectivas contraseñas.
- Use_credential, permite usar las contraseñas de una cuenta, solicitando tokens
de autentificación
- Write_External_Storage, permite leer, modificar y eliminar contenidos del
almacenamiento externo.
- Install_packages, permite instalar paquetes de aplicación sin la intervención
directa del usuario. Se trata de un permiso crítico ya que concede a la aplicación
un alto nivel de control, pudiendo ser utilizado para instalar aplicaciones sin el
consentimiento del usuario.
Severida
Nº Vulnerabilidad
d
1 Versión vulnerable de Android Alta
La aplicación puede ser instalada en una versión anterior de Android con múltiples
vulnerabilidades no corregidas.
2 Task Hijacking/StrandHogg (cm.aptoide.pt.view.MainActivity) Alta
La activity no debería tener el atributo modo de inicio de establecido en singleTask, ya
que es posible que otras aplicaciones coloquen una actividad maliciosa encima de la pila
de aplicaciones, resultando en un secuestro de tareas.
3 StrandHogg 2.0 Alta
La activity es vulnerable a la StrandHogg 2.0 , lo que hace posible que otras aplicaciones
coloquen actividad maliciosa encima de la pila de actividades de la aplicación vulnerable.
(com.facebook.CustomTabActivity/ cm.aptoide.pt.DeepLinkIntentReceive)
4 App Link assests.json not found Alta
La url de verificación de activos de App Link no se encontró o se configuró
incorrectamente. Los enlaces de aplicaciones permiten a los usuarios redirigir desde una
URL web/correo electrónico a la aplicación. Si este archivo falla o está configurado
incorrectamente para el host/dominio , una aplicación maliciosa puede secuestrar dichas
URL.
[android:name=cm.aptoide.pt.DeepLinkIntentReceiver]
[android:host=http://webservices.aptoide.com]
[android:host=http://become-a-power-gamer.aptoide.com]
5 El Launch Mode no es estándar (cm.aptoide.pt.view.MainActivity) Warning
Una actividad no deber tener el atributo de modo de inicio establecido en
“singleTask/singleInstance”, ya que se convierte en Activity Root y es posible que otras
aplicaciones lean el contenido de la intención de llamada.
6 TaskAffinity is set for activity Warning
Si se configura TaskAffinity, entonces otra aplicación podría leer los Intents enviados a
las actividades que pertenecen a otra tarea.
cm.aptoide.pt.wallet.WalletInstallActivity, cm.aptoide.pt.view.MainActivity
7 Component not Protected Warning
Se han encontrado componentes que comparte con otras aplicaciones en el dispositivo, por
lo que lo deja accesible para cualquier otra aplicación en esta. La presencia de intent-filter
indica que el servicio se exporta explícitamente. (Service, Content Provider, Activity,
Broadcast Receiver)
cm.aptoide.pt.toolbox.ToolboxContentProvider, cm.aptoide.pt.account.AccountAuthenticatorService
com.facebook.CustomTabActivity, cm.aptoide.pt.DeepLinkIntentReceiver,
cm.aptoide.pt.notification.NotificationReceiver, cm.aptoide.pt.install.CheckRootOnBoot,
m.aptoide.pt.widget.SearchWidgetProvider, cm.aptoide.pt.DeepLinkIntentREceiverr
cm.aptoide.pt.install.InstalledBroadcastReceiver
9 High Intent Priority Warning
Al establecer una prioridad de intención más alta que otra, la aplicación anula de manera
efectiva otras solicitudes
ANÁLISIS DE CERTFICADO
Al realizar el análisis de certificados se ha encontrado lo siguiente:
Severida
Nº Vulnerabilidad Descripción
d
La aplicación está firmada con el esquema
de firma v1, lo que la hace vulnerable a la
2 Vulnerable a Janus vulnerabilidad Janus en Android 5.0-7.0. Warning
Las aplicaciones firmadas con esquemas v1
y v2/v3 también son vulnerables
La aplicación está firmada con
Certificado vulnerable SHA1withRSA. SHA1 tiene problemas de
3 Warning
a colisión hash. colisión. El archivo de manifiesto indica que
SHA256 está en uso
ANÁLISIS DE ARCHIVOS
Se han encontrado los siguientes archivos
- Archivos de certificado y clave incrustado directamente en el código, en lugar
de ser gestionados de manera segura. (res/raw/vanilla_certificate.pem)
ANÁLISIS DE CÓDIGO
El análisis de código es el siguiente:
Severida
N Vulnerabilidad Standard
d
CWE: CWE-200: Information Exposure
1 Divulgación de Ip OWASP MASVS: MSTG-CODE-2 Warning
Se produce una divulgación de la ip 224.0.0.251.
CWE: CWE-89: Improper Neutralization of Special
2 Raw Query Elements used in an SQL Command ('SQL Injection') Warning
OWASP Top 10: M7: Client Code Quality
La aplicación usa raw SQL query, por lo que puede ser vulnerable a SQL Injection.
CWE: CWE-312: Cleartext Storage of Sensitive
Information
5 Sensitive information OWASP Top 10: M9: Reverse Engineering
Warning
OWASP MASVS: MSTG-STORAGE-14
La aplicación puede contener archivos que tengan información sensible hardcodeada
como contraseñas, usuarios, claves…
CWE: CWE-327: Use of a Broken or Risky
Cryptographic Algorithm
4 Md5/sha1 OWASP Top 10: M5: Insufficient Cryptography
Info
OWASP MASVS: MSTG-CRYPTO-4
Ambos algoritmos criptográficos tienden a tener colisión de hashes:
CWE: CWE-330: Use of Insufficiently Random Values
5 Random Generator OWASP Top 10: M5: Insufficient Cryptography Info
OWASP MASVS: MSTG-CRYPTO-6
Se emplea una librería de generación de números aleatorios no segura.
TRACKERS
Tiene un total de 6 trackers:
Nombre Categoría
Facebook Login Identificación
Estadísticas sobre compartición de
Facebook Share
contenido
Flurry Add y Analíticas
Google AdMob Add
Google Firebase Analitycs Analíticas
Sentry Reportar crashes
ANÁLISIS DINÁMICO
EJECUCIÓN DE LA APLICACIÓN
Algunas capturas dentro de la aplicación, podemos ver que aparecen todas las
aplicaciones instaladas en el dispositivo con diversas opciones que pueden realizarse
sobre ellas.
También puede modificarse el archivo APK:
Desde la propia aplicación podemos acceder a la carpeta de almacenamiento del
dispositivo:
UPTODOWN
ALCALCE
OBJETIVO
El presente análisis tiene como objetivo identificar los posibles riesgos y
vulnerabilidades asociadas a la aplicación Uptodown.
Se va a llevar a cabo un Gray-box testing, al contar con información parcial de la
estructura interna de la aplicación.
ASPECTOS A EVALUAR
Los aspectos que van a evaluarse se describen a continuación:
1. Recolección previa de información de la aplicación. Que nos proporcionará
contexto y ayudará a guiar el enfoque del análisis. Aquí se incluye la revisión de
cualquier tipo de documentación disponible sobre la aplicación, información
acerca del desarrollador…
2. Análisis estático, empleando un enfoque híbrido automático/manual:
- Código fuente. Se llevará a cabo una revisión del código fuente de la aplicación
en busca de posibles vulnerabilidades, exposición de datos sensibles…
- Permisos. Se realizará un análisis de los permisos usados por la aplicación,
llegando a determinar si resultan excesivos o innecesarios al igual que aquellos
que impliquen acceso a funcionalidades críticas del dispositivo o datos sensibles.
3. Análisis dinámico, es decir la prueba y evaluación de la aplicación en tiempo de
ejecución real. Como principal objetivo está el encontrar vulnerabilidades de
seguridad y puntos débiles, además de verificar que los mecanismos de
seguridad brindan la protección suficiente contra los tipos de ataques más
frecuentes.
ENTREGABLES
- Reporte de la aplicación MobSF (mobsfv_Uptodown.pdf)
- Análisis de Virus Total.
RECOLECCIÓN DE INFORMACIÓN
El activo a analizar es Uptodown se trata de una herramienta gratuita que permite
instalar aplicaciones
ESPECIFICACIONES TÉCNICAS
Las especificaciones técnicas encontradas:
Plataforma de desarrollo Android Studio
Versión Actual 5.68
Target SDK 21
Min SDK 33
MÁS INFORMACIÓN
Uptodown permite instalar aplicaciones de Android que usen formatos no detectados
por el instalador de paquetes incluido por defecto en el sistema operativo.
La aplicación está formada por un total de 51 activities, 14, services, 14 receivers, 4
providers.
ANÁLISIS ESTÁTICO
VIRUS TOTAL
Ninguno de los proveedores de seguridad de la web Virus Total ha considerado esta aplicación como
maliciosa:
Sin embargo, hay un Warning en la siguiente regla del IDS colaborativo:
- ET INFO Android Device Connectivity Check, relacionada con la detección de
algún tipo de actividad o comportamiento vinculado a la conectividad de
dispositivos Android.
MOBSF
La herramienta MobSF ha calificado la aplicación con una puntuación de 49 sobre
100, encontrándose en el grado B, correspondiente a grado medio.
MANIFEST
En el manifest podemos ver observar que hay un total de 7 permisos, sobre los cuales no
hay mucho que destacar.
Severida
Nº Vulnerabilidad
d
1 Versión vulnerable de Android Alta
La aplicación puede ser instalada en una versión anterior de Android con múltiples
vulnerabilidades no corregidas (Android 5.0-5.0.2, [minSDK =21]).
2 App Link assests.json not found Alta
La url de verificación de activos de App Link no se encontró o se configuró
incorrectamente. Los enlaces de aplicaciones permiten a los usuarios redirigir desde una
URL web/correo electrónico a la aplicación. Si este archivo falla o está configurado
incorrectamente para el host/dominio , una aplicación maliciosa puede secuestrar dichas
URL.
android:name=com.uptodown.activities.MainActivity, android:host=https://dw.uptodown.com
3 BackUp Warning
Esto permite que cualquiera pueda hacer una copia de seguridad de los datos de la
aplicación a través de adb. Permite a los usuarios que han habilitado la depuración USB
copiar datos de la aplicación fuera del dispositivo.
4 Protection level should be checked Warning
Si se configura TaskAffinity, entonces otra aplicación podría leer los Intents enviados a
las actividades que pertenecen a otra tarea.
cm.aptoide.pt.wallet.WalletInstallActivity, cm.aptoide.pt.view.MainActivity
5 Component not Protected Warning
Se han encontrado componentes que comparte con otras aplicaciones en el dispositivo, por
lo que lo deja accesible para cualquier otra aplicación en esta. La presencia de intent-filter
indica que el servicio se exporta explícitamente. (Service, Content Provider, Activity,
Broadcast Receiver)
com.uptodown.tv.ui.activity.TvMainActivity, com.uptodown.core.activities.InstallerActivity,
com.uptodown.activities.SearchActivity, com.uptodown.receivers.BootDeviceReceive,
com.uptodown.receivers.MyAppUpdatedReceiver,
com.google.android.gms.auth.api.signin.RevocationBoundService,
com.google.firebase.iid.FirebaseInstanceIdReceiver,
androidx.work.impl.background.systemjob.SystemJobService,
androidx.work.impl.diagnostics.DiagnosticsReceiver, androidx.profileinstaller.ProfileInstallReceiver,
com.google.firebase.iid.FirebaseInstanceIdReceiver,
com.google.android.gms.auth.api.signin.RevocationBoundService,
ndroidx.profileinstaller.ProfileInstallReceiver, androidx.work.impl.diagnostics.DiagnosticsReceiver,
androidx.work.impl.background.systemjob.SystemJobService
6 High Intent Priority Warning
Al establecer una prioridad de intención más alta que otra, la aplicación anula de manera
efectiva otras solicitudes
ANÁLISIS DE CERTIFICADO
Al realizar el análisis de certificados se ha encontrado lo siguiente:
Severida
Nº Vulnerabilidad Descripción
d
La aplicación está firmada con el esquema
de firma v1, lo que la hace vulnerable a la
2 Vulnerable a Janus vulnerabilidad Janus en Android 5.0-7.0. Warning
Las aplicaciones firmadas con esquemas v1
y v2/v3 también son vulnerables
La aplicación está firmada con
Certificado vulnerable SHA1withRSA. SHA1 tiene problemas de
3 Warning
a colisión hash. colisión. El archivo de manifiesto indica que
SHA256 está en uso
ANÁLISIS DE CÓDIGO
Severida
N Vulnerabilidad Standard
d
Archivo CWE: CWE-276: Incorrect Default Permissions
1 SharedPreferences es OWASP Top 10: M2: Insecure Data Storage Alta
OWASP MASVS: MSTG-STORAGE-2
leíble.
Cualquier aplicación puede leer el archivo.
Lectura en CWE: CWE-89: Improper Neutralization of Special
2 almacenamiento Elements used in an SQL Command ('SQL Injection') Warning
externo OWASP Top 10: M7: Client Code Quality
Cualquier aplicación puede acceder a la información escrita en el almacenamiento
externo.
CWE: CWE-312: Cleartext Storage of Sensitive
Information
5 Sensitive information OWASP Top 10: M9: Reverse Engineering
Warning
OWASP MASVS: MSTG-STORAGE-14
La aplicación puede contener archivos que tengan información sensible hardcodeada
como contraseñas, usuarios, claves…
CWE: CWE-89: Improper Neutralization of Special
Raw SQL
6 Elements used in an SQL Command ('SQL Injection') Warning
Querys OWASP Top 10: M7: Client Code Quality
La aplicación usa raw SQL query, por lo que puede ser vulnerable a SQL Injection.
CWE: CWE-749: Exposed Dangerous Method or
Implementación Function
7 OWASP Top 10: M1: Improper Platform Usage
Warning
Insegura de WebView
OWASP MASVS: MSTG-PLATFORM-7
La ejecución de Código controlador por el usuario en WebView es un agujero de
seguridad crítico.
CWE: CWE-327: Use of a Broken or Risky
Cryptographic Algorithm
4 Md5/SHA1 OWASP Top 10: M5: Insufficient Cryptography
Info
OWASP MASVS: MSTG-CRYPTO-4
Ambos algoritmos criptográficos tienden a tener colisión de hashes:
CWE: CWE-330: Use of Insufficiently Random Values
5 Random Generator OWASP Top 10: M5: Insufficient Cryptography Info
OWASP MASVS: MSTG-CRYPTO-6
Se emplea una librería de generación de números aleatorios no segura.
TRACKERS
Tiene un total de 2 trackers:
Nombre Categoría
Google CrahLytics Reporte de crashes
Google Firebase Analitycs Analytics
ANÁLISIS DINÁMICO
EJECUCIÓN DE LA APLICACIÓN
Podemos ver que se trata de una aplicación similar al Google Play de Android, donde
poder descargar aplicaciones (apks)
Contiene incluso una opción donde muestra aplicaciones potencialmente peligrosas:
Algunas capturas más de dentro de la aplicación: