Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hacking Ético
Hacking en sistemas y
aplicaciones móviles
Índice
Esquema 3
Ideas clave 4
7.1. Introducción y objetivos 4
7.2. Principios de seguridad en sistemas Android e
iOS 4
7.3. Vulnerabilidades en sistemas Android e iOS 9
7.4. Análisis estático en aplicaciones móviles 12
© Universidad Internacional de La Rioja (UNIR)
A fondo 23
Test 24
© Universidad Internacional de La Rioja (UNIR)
Tema 7. Esquema
Esquema
Hacking Ético
3
Ideas clave
Una vez hemos estudiado cómo tener acceso dentro de una infraestructura interna
a través de dispositivos perimetrales, es momento de conocer cómo encontrar y
explotar vulnerabilidades en otro tipo de sistemas, como es el caso de los dispositivos
móviles. En este tema, el estudiante aprenderá cómo encontrar vulnerabilidades en
dispositivos móviles Android e iOS y cómo llevar a cabo una auditoría técnica en
aplicaciones móviles.
Objetivos:
Hacking Ético
4
Tema 7. Ideas clave
Al margen de que pueden tener vulnerabilidades explotables a nivel de plataforma
(en última instancia son ordenadores y pueden existir vulnerabilidades más cercanas
al exploiting), la principal fuente de vulnerabilidades en los dispositivos móviles son
sus aplicaciones: un fallo de diseño en una aplicación puede permitir acceder a todas
las funcionalidades que el usuario le haya otorgado de una forma difícil de detectar.
Hacking Ético
5
Tema 7. Ideas clave
Android
Además, Android cuenta con un entorno de desarrollo nativo en C++ con el que
pueden construirse módulos y librerías para las aplicaciones, de cara a realizar
procesos a bajo nivel que no serían viables en Java en términos de tiempo, o
consumo.
Cada aplicación se instala con un usuario propio dentro del sistema y se ejecuta
dentro de una sandbox, para utilizar solo las funciones de la API que el usuario
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
6
Tema 7. Ideas clave
Figura 1. Arquitectura de Android. Fuente: Tally Ho, s. f.
iOS
Por su parte, iOS está construido, al igual que su homólogo para ordenadores macOS,
sobre un kernel derivado de FreeBSD. Sin embargo, al igual que Android, despliega
un entorno de usuario basado en la utilización de aplicaciones aisladas del resto del
sistema operativo.
© Universidad Internacional de La Rioja (UNIR)
Desde el punto de vista de las aplicaciones, iOS se organiza de una forma similar a
Android: las aplicaciones se ejecutan dentro de una sandbox que, en este caso,
además de aislarlas, ejerce como sistema de control de accesos a los recursos.
Hacking Ético
7
Tema 7. Ideas clave
Estas aplicaciones, sin embargo, sí que se ejecutarán de forma nativa. Las
aplicaciones para iOS están desarrolladas en los lenguajes Objective-C y Swift y,
gracias a que Apple controla toda la pila de ejecución (la compañía decide tanto el
software como el hardware), no requiere de un intérprete que permita portar las
aplicaciones entre diferentes arquitecturas. Estas aplicaciones también contarán
con un sistema de permisos que determinará qué funciones de las API, y
componentes de la arquitectura (Figura 2) pueden utilizar.
Hacking Ético
8
Tema 7. Ideas clave
Procedimiento de análisis
Análisis de vulnerabilidades.
Análisis estático.
Análisis dinámico.
Mientras que la tecnología de cada una de las plataformas puede variar, existen
ciertos elementos clave que debemos tener en cuenta a la hora de realizar nuestro
análisis de vulnerabilidades y están presentes en todos los entornos.
Almacenamiento
Hacking Ético
9
Tema 7. Ideas clave
También requiere la evaluación de las restricciones que tiene el sistema operativo
con respecto al uso de disco. Por ejemplo, el directorio/system de Android no debería
ser accesible desde una terminal. También es posible que la propia aplicación escriba
en un path que no esté protegido.
Uno de los elementos más característicos de los dispositivos móviles son las
capacidades de conexión por radio. En este sentido, debemos tener en cuenta que
todas estas tecnologías de conexión suponen también una superficie de ataque:
(última versión, HSTS, HPKP, etc.) o si se está utilizando algún otro protocolo
(protocolos propios desarrollados con protobuf, los protocolos Signal y Noise
utilizados en WhatsApp, etc.).
Hacking Ético
10
Tema 7. Ideas clave
Ataques a sistemas de autenticación y autorización: por último, se deben auditar
los procedimientos de control de acceso contra los sistemas finales. Dos de las
tecnologías más utilizadas, en parte debido a la íntima relación entre aplicaciones
móviles y aplicaciones web, son OAuth2 y JWT. En ocasiones no se almacenan
correctamente (de forma segura) los tokens de OAuth2 o incluso se llegan a
exponer tokens de desarrollo. Por otro lado, buscando mejorar la eficiencia de los
sistemas, o simplemente por desconocimiento, la configuración de JWT no
siempre es la más segura, lo que puede dejar expuestos los sistemas finales
(OWASP, s. f.).
La comunicación entre distintos procesos del sistema suele ser una fuente de
vulnerabilidades. Revisar los puntos de entrada de la aplicación desde una
perspectiva de modelado de amenazas permite encontrar puntos de fuga.
Hacking Ético
11
Tema 7. Ideas clave
En el caso de las aplicaciones basadas en web o híbridas, encontraremos fallos
relacionados exclusivamente con las tecnologías web, especialmente
vulnerabilidades de inyección de contenido. Al aumentar la complejidad de la
aplicación (mezclar lenguajes como javascript con la lógica de acceso a las API del
sistema, con la interacción con servidores, etc.), aumenta la superficie de ataque.
Android
Hacking Ético
12
Tema 7. Ideas clave
Figura 3. Código: extracción de apk utilizando adb. Fuente: elaboración propia.
A efectos prácticos son un fichero ZIP, por lo que podemos hacer un primer análisis
simplemente descomprimiendo su contenido. La estructura canónica de un apk
descomprimido contiene principalmente los siguientes ficheros y directorios:
Con la herramienta jadx podemos abrir directamente el fichero apk y acceder a todo
su contenido (código fuente incluido). A la hora de realizar el análisis estático,
debemos centrarnos, principalmente, en los siguientes elementos:
Hacking Ético
13
Tema 7. Ideas clave
Análisis del manifiesto. El fichero AndroidManifest.xml contiene la especificación
de actividades que ejecutará la aplicación. Además, define los permisos que debe
tener para ejecutarse (qué API puede utilizar). La Figura 4 muestra el manifiesto
de una aplicación que requiere acceso a la cámara y permisos de accesibilidad.
una CA válida como en los navegadores web). Por lo tanto, en ocasiones, se puede
detectar una copia fraudulenta de una aplicación porque su certificado no es el
de la aplicación legítima.
Hacking Ético
14
Tema 7. Ideas clave
Assets. Algunas muestras de malware contienen, junto con los iconos e imágenes,
ficheros que pueden llegar a ejecutarse (normalmente ofuscados o cifrados).
Análisis del código fuente. El código Java de las aplicaciones Android puede leerse
sin problemas utilizando herramientas como jadx (o decompilándolo con dex2jar,
y utilizando herramientas más clásicas, como jd-gui). El código desarrollado para
la API nativa (el código C++) también podrá analizarse utilizando herramientas de
reversing, como IDA o Ghidra, pero normalment estará preparado para
plataformas tipo ARM.
iOS
Una vez en posesión del fichero .ipa, observaremos que también es un zip con una
estructura definida para la plataforma. Al abrirlo, nos encontraremos con los
siguientes elementos clave:
© Universidad Internacional de La Rioja (UNIR)
Directorio Payload/<NOMBRE_APP>.app/
• <NOMBRE_APP> Binario con el contenido ejecutable
• Info.plist Propiedades como iconos, strings utilizados por la aplicación, etc.
• **.nib Ficheros de interfaz
Hacking Ético
15
Tema 7. Ideas clave
Para realizar el análisis estático de estas aplicaciones, deberemos comenzar
analizando el fichero Info.plist con herramientas como plistutil o la librería plistlib de
Python. Este fichero, que hará las veces del manifest de Android, nos permitirá saber
la metainformación de la aplicación (nombre, versión, etc.), pero nos interesará
especialmente porque identificará los permisos que necesita.
Hacking Ético
16
Tema 7. Ideas clave
Figura 5. Análisis estático vs. Dinámico. Fuente: elaboración propia.
Algunas veces contendrán toda la lógica ofuscada, pero, en otras, recurrirá incluso a
recursos externos o a la interacción con librerías del dispositivo, que no podremos
conocer más que ejecutando la aplicación.
Máquina virtual.
Emulador (Android Studio / Xcode). Ambos entornos de desarrollo oficiales de
Android y iOS (respectivamente) permiten desarrollar, construir y testear
aplicaciones. Mientras que Android es mucho más versátil, Xcode es una de las
pocas formas de trabajar con desarrollos iOS e interactuar con dispositivos reales.
Dispositivo con root / jalbreak.
Herramientas de análisis
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
17
Tema 7. Ideas clave
Adb. Es una interfaz CLI de comunicación con dispositivos móviles (o emuladores
de dispositivos móviles) de Android.
JADX. Nos permite obtener el código fuente de una aplicación Android sin tener
que realizar procesos tediosos de decompilado dentro de un entorno destinado a
la ingeniería inversa con herramientas de búsqueda, de relación entre archivos
interdependientes, etc.
ZAP / Burp. Tanto ZAP como Burp son dos herramientas que pueden actuar de
proxy para analizar, manipular y repetir peticiones HTTP. Podemos utilizar
cualquiera de las dos para hacer ingeniería inversa de las peticiones que hacen
las aplicaciones, una vez sorteados los controles criptográficos de la conexión.
Bfinject. Cuando se descarga una aplicación en iOS, esta tiene un cifrado especial
destinado a nuestro dispositivo. Con Bfinject podemos, mediante la inyección de
una librería en una aplicación de iOS (de forma similar a como opera Frida),
obtener el binario de la aplicación desde memoria (donde lo ha descifrado el
propio sistema operativo para poder ejecutarlo).
Cydia. Sistema que permite instalar aplicaciones desde fuera del AppStore de
iOS. Por defecto, si una aplicación no se descarga de la AppStore, no se pueden
© Universidad Internacional de La Rioja (UNIR)
SSL Kill Switch v2. Para lidiar sencillamente con SSL y HPKP en iOS. Actualmente
se puede hacer con Frida, y un proxy normal (Burp, ZAP, MiTM Proxy, etc.).
Hacking Ético
18
Tema 7. Ideas clave
7.6. Herramientas de análisis. MobSF
Aunque las funcionalidades que provee MobSF pueden ser cubiertas utilizando
muchas otras herramientas, el hecho de que estas funcionalidades estén integradas
dentro de un marco de trabajo facilita enormemente la gestión de evidencias
forenses (muestras maliciosas), así como la obtención de elementos clave.
Instalación
Sin perder de vista los documentos oficiales, que pueden cambiar a medida que
evolucionen las versiones, para poder hacer análisis dinámico necesitaremos:
© Universidad Internacional de La Rioja (UNIR)
Instalar MobSF de forma nativa (no nos vale una imagen de docker).
Un hipervisor que emule sistemas Android, como Genymotion, dispositivos
virtuales de Android Studio, etc.
Hacking Ético
19
Tema 7. Ideas clave
Además, para que MobSF pueda cargar todos los elementos de instrumentación, será
necesario poder iniciar shell como root en el dispositivo.
Análisis estático
Análisis dinámico
Hacking Ético
20
Tema 7. Ideas clave
Uso de la API del sistema móvil.
Bypass de SSL pinning.
Captura de Strings utilizadas por la aplicación.
Uso de determinadas clases nativas de Java (File, Sockets, etc.) que evidencian la
lógica de la aplicación.
Hacking Ético
21
Tema 7. Ideas clave
7.7. Lecciones magistrales
En estos vídeos, titulados Análisis estático con MobSF y Análisis dinámico con MobSF,
se presentan soluciones para realizar un análisis estático y dinámico de manera
automatizada con la herramienta pública MobSF. Gracias a la información que nos
arrojará tendremos una visión de las vulnerabilidades en estos aplicativos.
DotNetTricks. (2018, Agosto 6). Understanding Xamarin iOS - Build Native iOS App.
https://www.dotnettricks.com/learn/xamarin/understanding-xamarin-ios-build-
native-ios-app
security-testing
Hacking Ético
22
Tema 7. Ideas clave
A fondo
OWASP Mobile Security Testing Guide
Hacker One (2021, febrero 24). Android Hacking Workshop by @B3nac Sec [Vídeo].
Youtube. https://www.youtube.com/watch?v=lhRXV9LZ7bY
Hacking Ético
23
Tema 7. A fondo
Test
1. ¿Cuál es la extensión de las aplicaciones de iOS?
A. fichero .ios.
B. fichero .ipa.
C. fichero .apk.
D. No tiene extensión, en UNIX se utiliza el número mágico.
Hacking Ético
24
Tema 7. Test
5. Para obtener una aplicación de iOS:
A. La descargaremos de Apkpure.
B. Debemos extraerla del teléfono cuando se ejecute.
C. Bastará con descargarla del playstore y sacarla de disco.
D. No se puede por copyright.
6. El sistema adb:
A. Es el equivalente a gdb en Android.
B. Es una herramienta de comunicación con sistemas Android para su
administración.
C. Permite desarrollar aplicaciones para Android.
D. No es compatible con teléfonos reales.
9. Frida es:
A. Un sistema de fuzzing de aplicaciones móviles.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
25
Tema 7. Test
10. Señale la respuesta falsa. Podemos tratar de evadir las verificaciones HPKP:
A. Instalando una CA propia.
B. Con SSL Kill Switch.
C. Con un certificado válido.
D. Con Frida.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
26
Tema 7. Test