# Pentesting de Aplicaciones Android {% hint style="success" %} Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Apoya a HackTricks * Revisa los [**planes de suscripci贸n**](https://github.com/sponsors/carlospolop)! * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
{% endhint %}
隆脷nete al servidor de [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para comunicarte con hackers experimentados y cazadores de bugs! **Perspectivas de Hacking**\ Invol煤crate con contenido que profundiza en la emoci贸n y los desaf铆os del hacking **Noticias de Hacking en Tiempo Real**\ Mantente al d铆a con el mundo del hacking de ritmo r谩pido a trav茅s de noticias e informaci贸n en tiempo real **脷ltimos Anuncios**\ Mantente informado sobre las nuevas recompensas por bugs que se lanzan y actualizaciones cruciales de la plataforma **脷nete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy mismo! ## Fundamentos de Aplicaciones Android Se recomienda encarecidamente comenzar a leer esta p谩gina para conocer las **partes m谩s importantes relacionadas con la seguridad de Android y los componentes m谩s peligrosos en una aplicaci贸n Android**: {% content-ref url="android-applications-basics.md" %} [android-applications-basics.md](android-applications-basics.md) {% endcontent-ref %} ## ADB (Android Debug Bridge) Esta es la herramienta principal que necesitas para conectarte a un dispositivo Android (emulado o f铆sico).\ **ADB** permite controlar dispositivos ya sea por **USB** o **Red** desde una computadora. Esta utilidad permite la **copia** de archivos en ambas direcciones, **instalaci贸n** y **desinstalaci贸n** de aplicaciones, **ejecuci贸n** de comandos de shell, **respaldo** de datos, **lectura** de registros, entre otras funciones. Echa un vistazo a la siguiente lista de [**Comandos ADB**](adb-commands.md) para aprender a usar adb. ## Smali A veces es interesante **modificar el c贸digo de la aplicaci贸n** para acceder a **informaci贸n oculta** (quiz谩s contrase帽as o flags bien ofuscadas). Entonces, podr铆a ser interesante descompilar el apk, modificar el c贸digo y recompilarlo.\ [**En este tutorial** puedes **aprender a descompilar un APK, modificar el c贸digo Smali y recompilar el APK** con la nueva funcionalidad](smali-changes.md). Esto podr铆a ser muy 煤til como una **alternativa para varias pruebas durante el an谩lisis din谩mico** que se van a presentar. Entonces, **siempre ten en mente esta posibilidad**. ## Otros trucos interesantes * [Suplantar tu ubicaci贸n en Play Store](spoofing-your-location-in-play-store.md) * **Descargar APKs**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) * Extraer APK del dispositivo: ```bash adb shell pm list packages com.android.insecurebankv2 adb shell pm path com.android.insecurebankv2 package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk adb pull /data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk ``` * Fusiona todos los splits y apks base con [APKEditor](https://github.com/REAndroid/APKEditor): ```bash mkdir splits adb shell pm path com.android.insecurebankv2 | cut -d ':' -f 2 | xargs -n1 -i adb pull {} splits java -jar ../APKEditor.jar m -i splits/ -o merged.apk # after merging, you will need to align and sign the apk, personally, I like to use the uberapksigner java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ``` ## An谩lisis Est谩tico Primero que nada, para analizar un APK deber铆as **echar un vistazo al c贸digo Java** usando un descompilador.\ Por favor, [**lee aqu铆 para encontrar informaci贸n sobre diferentes descompiladores disponibles**](apk-decompilers.md). ### Buscando informaci贸n interesante Solo echando un vistazo a las **cadenas** del APK puedes buscar **contrase帽as**, **URLs** ([https://github.com/ndelphit/apkurlgrep](https://github.com/ndelphit/apkurlgrep)), **claves** de **api**, **cifrado**, **bluetooth uuids**, **tokens** y cualquier cosa interesante... busca incluso **backdoors** de ejecuci贸n de c贸digo o backdoors de autenticaci贸n (credenciales de administrador codificadas en la aplicaci贸n). **Firebase** Presta especial atenci贸n a las **URLs de firebase** y verifica si est谩 mal configurado. [M谩s informaci贸n sobre qu茅 es Firebase y c贸mo explotarlo aqu铆.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### Comprensi贸n b谩sica de la aplicaci贸n - Manifest.xml, strings.xml La **examinaci贸n de los archivos \_Manifest.xml**_\*\* y \*\*_**strings.xml**\_\*\* de una aplicaci贸n puede revelar posibles vulnerabilidades de seguridad\*\*. Estos archivos se pueden acceder usando descompiladores o renombrando la extensi贸n del archivo APK a .zip y luego descomprimi茅ndolo. **Vulnerabilidades** identificadas en el **Manifest.xml** incluyen: * **Aplicaciones Depurables**: Las aplicaciones configuradas como depurables (`debuggable="true"`) en el archivo _Manifest.xml_ representan un riesgo ya que permiten conexiones que pueden llevar a la explotaci贸n. Para una mejor comprensi贸n sobre c贸mo explotar aplicaciones depurables, consulta un tutorial sobre c贸mo encontrar y explotar aplicaciones depurables en un dispositivo. * **Configuraciones de Respaldo**: El atributo `android:allowBackup="false"` debe ser establecido expl铆citamente para aplicaciones que manejan informaci贸n sensible para prevenir respaldos de datos no autorizados a trav茅s de adb, especialmente cuando la depuraci贸n por usb est谩 habilitada. * **Seguridad de Red**: Configuraciones de seguridad de red personalizadas (`android:networkSecurityConfig="@xml/network_security_config"`) en _res/xml/_ pueden especificar detalles de seguridad como pines de certificado y configuraciones de tr谩fico HTTP. Un ejemplo es permitir tr谩fico HTTP para dominios espec铆ficos. * **Actividades y Servicios Exportados**: Identificar actividades y servicios exportados en el manifiesto puede resaltar componentes que podr铆an ser mal utilizados. Un an谩lisis adicional durante las pruebas din谩micas puede revelar c贸mo explotar estos componentes. * **Proveedores de Contenido y FileProviders**: Proveedores de contenido expuestos podr铆an permitir acceso no autorizado o modificaci贸n de datos. La configuraci贸n de los FileProviders tambi茅n debe ser examinada. * **Receptores de Difusi贸n y Esquemas de URL**: Estos componentes podr铆an ser aprovechados para explotaci贸n, prestando especial atenci贸n a c贸mo se gestionan los esquemas de URL para vulnerabilidades de entrada. * **Versiones de SDK**: Los atributos `minSdkVersion`, `targetSDKVersion` y `maxSdkVersion` indican las versiones de Android soportadas, destacando la importancia de no soportar versiones de Android obsoletas y vulnerables por razones de seguridad. Del archivo **strings.xml**, se puede descubrir informaci贸n sensible como claves de API, esquemas personalizados y otras notas de desarrollador, subrayando la necesidad de una revisi贸n cuidadosa de estos recursos. ### Tapjacking **Tapjacking** es un ataque donde una **aplicaci贸n maliciosa** se lanza y **se posiciona encima de una aplicaci贸n v铆ctima**. Una vez que oculta visiblemente la aplicaci贸n v铆ctima, su interfaz de usuario est谩 dise帽ada de tal manera que enga帽a al usuario para interactuar con ella, mientras pasa la interacci贸n a la aplicaci贸n v铆ctima.\ En efecto, est谩 **cegando al usuario para que no sepa que realmente est谩 realizando acciones en la aplicaci贸n v铆ctima**. Encuentra m谩s informaci贸n en: {% content-ref url="tapjacking.md" %} [tapjacking.md](tapjacking.md) {% endcontent-ref %} ### Secuestro de Tareas Una **actividad** con el **`launchMode`** configurado como **`singleTask` sin ning煤n `taskAffinity`** definido es vulnerable al secuestro de tareas. Esto significa que una **aplicaci贸n** puede ser instalada y si se lanza antes de la aplicaci贸n real, podr铆a **secuestrar la tarea de la aplicaci贸n real** (por lo que el usuario estar谩 interactuando con la **aplicaci贸n maliciosa pensando que est谩 usando la real**). M谩s informaci贸n en: {% content-ref url="android-task-hijacking.md" %} [android-task-hijacking.md](android-task-hijacking.md) {% endcontent-ref %} ### Almacenamiento de datos inseguro **Almacenamiento Interno** En Android, los archivos **almacenados** en el **almacenamiento interno** est谩n **dise帽ados** para ser **accesibles** exclusivamente por la **aplicaci贸n** que los **cre贸**. Esta medida de seguridad es **aplicada** por el sistema operativo Android y generalmente es adecuada para las necesidades de seguridad de la mayor铆a de las aplicaciones. Sin embargo, los desarrolladores a veces utilizan modos como `MODE_WORLD_READABLE` y `MODE_WORLD_WRITABLE` para **permitir** que los archivos sean **compartidos** entre diferentes aplicaciones. Sin embargo, estos modos **no restringen el acceso** a estos archivos por otras aplicaciones, incluidas las potencialmente maliciosas. 1. **An谩lisis Est谩tico:** * **Aseg煤rate** de que el uso de `MODE_WORLD_READABLE` y `MODE_WORLD_WRITABLE` sea **examinado cuidadosamente**. Estos modos **pueden potencialmente exponer** archivos a **acceso no intencionado o no autorizado**. 2. **An谩lisis Din谩mico:** * **Verifica** los **permisos** establecidos en los archivos creados por la aplicaci贸n. Espec铆ficamente, **verifica** si alg煤n archivo est谩 **configurado para ser legible o escribible a nivel mundial**. Esto puede representar un riesgo de seguridad significativo, ya que permitir铆a que **cualquier aplicaci贸n** instalada en el dispositivo, independientemente de su origen o intenci贸n, **lea o modifique** estos archivos. **Almacenamiento Externo** Al tratar con archivos en **almacenamiento externo**, como tarjetas SD, se deben tomar ciertas precauciones: 1. **Accesibilidad**: * Los archivos en almacenamiento externo son **globalmente legibles y escribibles**. Esto significa que cualquier aplicaci贸n o usuario puede acceder a estos archivos. 2. **Preocupaciones de Seguridad**: * Dada la facilidad de acceso, se aconseja **no almacenar informaci贸n sensible** en almacenamiento externo. * El almacenamiento externo puede ser removido o accedido por cualquier aplicaci贸n, haci茅ndolo menos seguro. 3. **Manejo de Datos desde Almacenamiento Externo**: * Siempre **realiza validaci贸n de entrada** en los datos recuperados del almacenamiento externo. Esto es crucial porque los datos provienen de una fuente no confiable. * Almacenar ejecutables o archivos de clase en almacenamiento externo para carga din谩mica est谩 fuertemente desaconsejado. * Si tu aplicaci贸n debe recuperar archivos ejecutables del almacenamiento externo, aseg煤rate de que estos archivos est茅n **firmados y verificados criptogr谩ficamente** antes de ser cargados din谩micamente. Este paso es vital para mantener la integridad de seguridad de tu aplicaci贸n. El almacenamiento externo puede ser **accedido** en `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard` {% hint style="info" %} A partir de Android 4.4 (**API 17**), la tarjeta SD tiene una estructura de directorio que **limita el acceso de una aplicaci贸n al directorio que es espec铆ficamente para esa aplicaci贸n**. Esto previene que aplicaciones maliciosas obtengan acceso de lectura o escritura a los archivos de otra aplicaci贸n. {% endhint %} **Datos sensibles almacenados en texto claro** * **Preferencias compartidas**: Android permite a cada aplicaci贸n guardar f谩cilmente archivos xml en la ruta `/data/data//shared_prefs/` y a veces es posible encontrar informaci贸n sensible en texto claro en esa carpeta. * **Bases de datos**: Android permite a cada aplicaci贸n guardar f谩cilmente bases de datos sqlite en la ruta `/data/data//databases/` y a veces es posible encontrar informaci贸n sensible en texto claro en esa carpeta. ### TLS Roto **Aceptar Todos los Certificados** Por alguna raz贸n, a veces los desarrolladores aceptan todos los certificados incluso si, por ejemplo, el nombre de host no coincide con l铆neas de c贸digo como la siguiente: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` Una buena manera de probar esto es intentar capturar el tr谩fico usando alg煤n proxy como Burp sin autorizar Burp CA dentro del dispositivo. Tambi茅n puedes generar con Burp un certificado para un nombre de host diferente y usarlo. ### Criptograf铆a Rota **Procesos de Gesti贸n de Claves Pobres** Algunos desarrolladores guardan datos sensibles en el almacenamiento local y los encriptan con una clave codificada/predictible en el c贸digo. Esto no deber铆a hacerse, ya que alguna ingenier铆a inversa podr铆a permitir a los atacantes extraer la informaci贸n confidencial. **Uso de Algoritmos Inseguros y/o Obsoletos** Los desarrolladores no deber铆an usar **algoritmos obsoletos** para realizar **verificaciones de autorizaci贸n**, **almacenar** o **enviar** datos. Algunos de estos algoritmos son: RC4, MD4, MD5, SHA1... Si se utilizan **hashes** para almacenar contrase帽as, por ejemplo, se deber铆an usar hashes resistentes a **fuerza bruta** con sal. ### Otras verificaciones * Se recomienda **ofuscar el APK** para dificultar el trabajo de ingenier铆a inversa a los atacantes. * Si la aplicaci贸n es sensible (como las aplicaciones bancarias), deber铆a realizar sus **propias verificaciones para ver si el m贸vil est谩 rooteado** y actuar en consecuencia. * Si la aplicaci贸n es sensible (como las aplicaciones bancarias), deber铆a verificar si se est谩 utilizando un **emulador**. * Si la aplicaci贸n es sensible (como las aplicaciones bancarias), deber铆a **verificar su propia integridad antes de ejecutarse** para comprobar si ha sido modificada. * Usa [**APKiD**](https://github.com/rednaga/APKiD) para verificar qu茅 compilador/empaquetador/ofuscador se utiliz贸 para construir el APK. ### Aplicaci贸n React Native Lee la siguiente p谩gina para aprender c贸mo acceder f谩cilmente al c贸digo javascript de aplicaciones React: {% content-ref url="react-native-application.md" %} [react-native-application.md](react-native-application.md) {% endcontent-ref %} ### Aplicaciones Xamarin Lee la siguiente p谩gina para aprender c贸mo acceder f谩cilmente al c贸digo C# de aplicaciones xamarin: {% content-ref url="../xamarin-apps.md" %} [xamarin-apps.md](../xamarin-apps.md) {% endcontent-ref %} ### Aplicaciones Superempaquetadas Seg煤n este [**blog**](https://clearbluejar.github.io/posts/desuperpacking-meta-superpacked-apks-with-github-actions/), superempaquetado es un algoritmo Meta que comprime el contenido de una aplicaci贸n en un solo archivo. El blog habla sobre la posibilidad de crear una aplicaci贸n que descomprima este tipo de aplicaciones... y una forma m谩s r谩pida que implica **ejecutar la aplicaci贸n y recopilar los archivos descomprimidos del sistema de archivos.** ### An谩lisis Est谩tico Automatizado de C贸digo La herramienta [**mariana-trench**](https://github.com/facebook/mariana-trench) es capaz de encontrar **vulnerabilidades** mediante el **escaneo** del **c贸digo** de la aplicaci贸n. Esta herramienta contiene una serie de **fuentes conocidas** (que indican a la herramienta los **lugares** donde la **entrada** es **controlada por el usuario**), **sumideros** (que indican a la herramienta **lugares peligrosos** donde la entrada maliciosa del usuario podr铆a causar da帽os) y **reglas**. Estas reglas indican la **combinaci贸n** de **fuentes-sumideros** que indica una vulnerabilidad. Con este conocimiento, **mariana-trench revisar谩 el c贸digo y encontrar谩 posibles vulnerabilidades en 茅l**. ### Secretos filtrados Una aplicaci贸n puede contener secretos (claves API, contrase帽as, URLs ocultas, subdominios...) dentro de ella que podr铆as descubrir. Podr铆as usar una herramienta como [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks). ### Bypass de Autenticaci贸n Biom茅trica {% content-ref url="bypass-biometric-authentication-android.md" %} [bypass-biometric-authentication-android.md](bypass-biometric-authentication-android.md) {% endcontent-ref %} ### Otras funciones interesantes * **Ejecuci贸n de c贸digo**: `Runtime.exec(), ProcessBuilder(), native code:system()` * **Enviar SMS**: `sendTextMessage, sendMultipartTestMessage` * **Funciones nativas** declaradas como `native`: `public native, System.loadLibrary, System.load` * [Lee esto para aprender **c贸mo revertir funciones nativas**](reversing-native-libraries.md) ### **Otros trucos** {% content-ref url="content-protocol.md" %} [content-protocol.md](content-protocol.md) {% endcontent-ref %} ***
隆脷nete al servidor de [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para comunicarte con hackers experimentados y cazadores de bugs! **Perspectivas de Hacking**\ Invol煤crate con contenido que profundiza en la emoci贸n y los desaf铆os del hacking. **Noticias de Hackeo en Tiempo Real**\ Mantente al d铆a con el mundo del hacking de ritmo r谩pido a trav茅s de noticias e informaci贸n en tiempo real. **脷ltimos Anuncios**\ Mantente informado sobre las nuevas recompensas por bugs que se lanzan y actualizaciones cruciales de la plataforma. **脷nete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy mismo! *** ## An谩lisis Din谩mico > Primero que nada, necesitas un entorno donde puedas instalar la aplicaci贸n y todo el entorno (certificado Burp CA, Drozer y Frida principalmente). Por lo tanto, se recomienda encarecidamente un dispositivo rooteado (emulado o no). ### An谩lisis din谩mico en l铆nea Puedes crear una **cuenta gratuita** en: [https://appetize.io/](https://appetize.io). Esta plataforma te permite **subir** y **ejecutar** APKs, por lo que es 煤til para ver c贸mo se comporta un apk. Incluso puedes **ver los registros de tu aplicaci贸n** en la web y conectarte a trav茅s de **adb**. ![](<../../.gitbook/assets/image (831).png>) Gracias a la conexi贸n ADB, puedes usar **Drozer** y **Frida** dentro de los emuladores. ### An谩lisis Din谩mico Local #### Usando un emulador * [**Android Studio**](https://developer.android.com/studio) (Puedes crear dispositivos **x86** y **arm**, y seg煤n [**esto**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html) **las 煤ltimas versiones x86** **soportan bibliotecas ARM** sin necesidad de un emulador arm lento). * Aprende a configurarlo en esta p谩gina: {% content-ref url="avd-android-virtual-device.md" %} [avd-android-virtual-device.md](avd-android-virtual-device.md) {% endcontent-ref %} * [**Genymotion**](https://www.genymotion.com/fun-zone/) **(Versi贸n gratuita:** Edici贸n Personal, necesitas crear una cuenta. _Se recomienda **descargar** la versi贸n **CON** _**VirtualBox** para evitar errores potenciales._) * [**Nox**](https://es.bignox.com) (Gratis, pero no soporta Frida o Drozer). {% hint style="info" %} Al crear un nuevo emulador en cualquier plataforma, recuerda que cuanto m谩s grande sea la pantalla, m谩s lento funcionar谩 el emulador. As铆 que selecciona pantallas peque帽as si es posible. {% endhint %} Para **instalar servicios de google** (como AppStore) en Genymotion, necesitas hacer clic en el bot贸n marcado en rojo de la siguiente imagen: ![](<../../.gitbook/assets/image (277).png>) Adem谩s, ten en cuenta que en la **configuraci贸n de la VM de Android en Genymotion** puedes seleccionar **Modo de Red Bridge** (esto ser谩 煤til si te conectar谩s a la VM de Android desde una VM diferente con las herramientas). #### Usar un dispositivo f铆sico Necesitas activar las **opciones de depuraci贸n** y ser铆a genial si puedes **rootearlo**: 1. **Configuraci贸n**. 2. (Desde Android 8.0) Selecciona **Sistema**. 3. Selecciona **Acerca del tel茅fono**. 4. Presiona **N煤mero de compilaci贸n** 7 veces. 5. Regresa y encontrar谩s las **Opciones de desarrollador**. > Una vez que hayas instalado la aplicaci贸n, lo primero que debes hacer es probarla e investigar qu茅 hace, c贸mo funciona y familiarizarte con ella.\ > Sugerir铆a **realizar este an谩lisis din谩mico inicial usando MobSF an谩lisis din谩mico + pidcat**, para que podamos **aprender c贸mo funciona la aplicaci贸n** mientras MobSF **captura** muchos **datos interesantes** que puedes revisar m谩s tarde. ### Filtraci贸n de Datos No Intencionada **Registro** Los desarrolladores deben tener cuidado de exponer **informaci贸n de depuraci贸n** p煤blicamente, ya que puede llevar a filtraciones de datos sensibles. Se recomiendan las herramientas [**pidcat**](https://github.com/JakeWharton/pidcat) y `adb logcat` para monitorear los registros de la aplicaci贸n y proteger la informaci贸n sensible. **Pidcat** es preferido por su facilidad de uso y legibilidad. {% hint style="warning" %} Ten en cuenta que desde **versiones posteriores a Android 4.0**, **las aplicaciones solo pueden acceder a sus propios registros**. As铆 que las aplicaciones no pueden acceder a los registros de otras aplicaciones.\ De todos modos, sigue siendo recomendable **no registrar informaci贸n sensible**. {% endhint %} **Cach茅 del Portapapeles** El marco **basado en portapapeles** de Android permite la funcionalidad de copiar y pegar en las aplicaciones, pero presenta un riesgo ya que **otras aplicaciones** pueden **acceder** al portapapeles, exponiendo potencialmente datos sensibles. Es crucial **deshabilitar las funciones de copiar/pegar** para secciones sensibles de una aplicaci贸n, como los detalles de tarjetas de cr茅dito, para prevenir filtraciones de datos. **Registros de Fallos** Si una aplicaci贸n **se bloquea** y **guarda registros**, estos registros pueden ayudar a los atacantes, especialmente cuando la aplicaci贸n no puede ser revertida. Para mitigar este riesgo, evita registrar en caso de fallos, y si los registros deben ser transmitidos a trav茅s de la red, aseg煤rate de que se env铆en a trav茅s de un canal SSL por seguridad. Como pentester, **intenta echar un vistazo a estos registros**. **Datos de An谩lisis Enviados a Terceros** Las aplicaciones a menudo integran servicios como Google Adsense, que pueden inadvertidamente **filtrar datos sensibles** debido a una implementaci贸n incorrecta por parte de los desarrolladores. Para identificar posibles filtraciones de datos, es aconsejable **interceptar el tr谩fico de la aplicaci贸n** y verificar si se est谩 enviando informaci贸n sensible a servicios de terceros. ### Bases de Datos SQLite La mayor铆a de las aplicaciones utilizar谩n **bases de datos SQLite internas** para guardar informaci贸n. Durante el pentest, echa un **vistazo** a las **bases de datos** creadas, los nombres de las **tablas** y **columnas** y todos los **datos** guardados porque podr铆as encontrar **informaci贸n sensible** (lo que ser铆a una vulnerabilidad).\ Las bases de datos deber铆an estar ubicadas en `/data/data/the.package.name/databases` como `/data/data/com.mwr.example.sieve/databases`. Si la base de datos est谩 guardando informaci贸n confidencial y est谩 **encriptada** pero puedes **encontrar** la **contrase帽a** dentro de la aplicaci贸n, sigue siendo una **vulnerabilidad**. Enumera las tablas usando `.tables` y enumera las columnas de las tablas haciendo `.schema `. ### Drozer (Explotar Actividades, Proveedores de Contenido y Servicios) De [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer** te permite **asumir el rol de una aplicaci贸n Android** e interactuar con otras aplicaciones. Puede hacer **cualquier cosa que una aplicaci贸n instalada puede hacer**, como hacer uso del mecanismo de Comunicaci贸n entre Procesos (IPC) de Android e interactuar con el sistema operativo subyacente.\ Drozer es una herramienta 煤til para **explotar actividades exportadas, servicios exportados y Proveedores de Contenido** como aprender谩s en las siguientes secciones. ### Explotando Actividades Exportadas [**Lee esto si quieres refrescar qu茅 es una Actividad de Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\ Tambi茅n recuerda que el c贸digo de una actividad comienza en el **m茅todo `onCreate`**. **Bypass de Autorizaci贸n** Cuando una Actividad es exportada, puedes invocar su pantalla desde una aplicaci贸n externa. Por lo tanto, si una actividad con **informaci贸n sensible** est谩 **exportada**, podr铆as **eludir** los mecanismos de **autenticaci贸n** **para acceder a ella.** [**Aprende c贸mo explotar actividades exportadas con Drozer.**](drozer-tutorial/#activities) Tambi茅n puedes iniciar una actividad exportada desde adb: * PackageName es com.example.demo * Exported ActivityName es com.example.test.MainActivity ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` **NOTA**: MobSF detectar谩 como malicioso el uso de _**singleTask/singleInstance**_ como `android:launchMode` en una actividad, pero debido a [esto](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750), aparentemente esto solo es peligroso en versiones antiguas (versiones de API < 21). {% hint style="info" %} Ten en cuenta que un bypass de autorizaci贸n no siempre es una vulnerabilidad, depender谩 de c贸mo funcione el bypass y qu茅 informaci贸n est茅 expuesta. {% endhint %} **Filtraci贸n de informaci贸n sensible** **Las actividades tambi茅n pueden devolver resultados**. Si logras encontrar una actividad exportada y desprotegida que llame al m茅todo **`setResult`** y **devuelva informaci贸n sensible**, hay una filtraci贸n de informaci贸n sensible. #### Tapjacking Si el tapjacking no se previene, podr铆as abusar de la actividad exportada para hacer que el **usuario realice acciones inesperadas**. Para m谩s informaci贸n sobre [**qu茅 es Tapjacking sigue el enlace**](./#tapjacking). ### Explotando Proveedores de Contenido - Accediendo y manipulando informaci贸n sensible [**Lee esto si quieres refrescar qu茅 es un Proveedor de Contenido.**](android-applications-basics.md#content-provider)\ Los proveedores de contenido se utilizan b谩sicamente para **compartir datos**. Si una aplicaci贸n tiene proveedores de contenido disponibles, es posible que puedas **extraer datos sensibles** de ellos. Tambi茅n es interesante probar posibles **inyecciones SQL** y **traversales de ruta** ya que podr铆an ser vulnerables. [**Aprende c贸mo explotar Proveedores de Contenido con Drozer.**](drozer-tutorial/#content-providers) ### **Explotando Servicios** [**Lee esto si quieres refrescar qu茅 es un Servicio.**](android-applications-basics.md#services)\ Recuerda que las acciones de un Servicio comienzan en el m茅todo `onStartCommand`. Un servicio es b谩sicamente algo que **puede recibir datos**, **procesarlos** y **devolver** (o no) una respuesta. Entonces, si una aplicaci贸n est谩 exportando algunos servicios, deber铆as **verificar** el **c贸digo** para entender qu茅 est谩 haciendo y **probarlo** **din谩micamente** para extraer informaci贸n confidencial, eludir medidas de autenticaci贸n...\ [**Aprende c贸mo explotar Servicios con Drozer.**](drozer-tutorial/#services) ### **Explotando Receptores de Difusi贸n** [**Lee esto si quieres refrescar qu茅 es un Receptor de Difusi贸n.**](android-applications-basics.md#broadcast-receivers)\ Recuerda que las acciones de un Receptor de Difusi贸n comienzan en el m茅todo `onReceive`. Un receptor de difusi贸n estar谩 esperando un tipo de mensaje. Dependiendo de c贸mo el receptor maneje el mensaje, podr铆a ser vulnerable.\ [**Aprende c贸mo explotar Receptores de Difusi贸n con Drozer.**](./#exploiting-broadcast-receivers) ### **Explotando Esquemas / Enlaces profundos** Puedes buscar enlaces profundos manualmente, utilizando herramientas como MobSF o scripts como [este](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py).\ Puedes **abrir** un **esquema** declarado usando **adb** o un **navegador**: {% code overflow="wrap" %} ```bash adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name] ``` {% endcode %} _Tenga en cuenta que puede **omitir el nombre del paquete** y el m贸vil llamar谩 autom谩ticamente a la aplicaci贸n que deber铆a abrir ese enlace._ {% code overflow="wrap" %} ```markup Click me with alternative ``` {% endcode %} **C贸digo ejecutado** Para encontrar el **c贸digo que se ejecutar谩 en la App**, ve a la actividad llamada por el deeplink y busca la funci贸n **`onNewIntent`**. ![](<../../.gitbook/assets/image (436) (1) (1) (1).png>) **Informaci贸n sensible** Cada vez que encuentres un deep link verifica que **no est茅 recibiendo datos sensibles (como contrase帽as) a trav茅s de par谩metros de URL**, porque cualquier otra aplicaci贸n podr铆a **suplantar el deep link y robar esos datos!** **Par谩metros en la ruta** Debes **verificar tambi茅n si alg煤n deep link est谩 utilizando un par谩metro dentro de la ruta** de la URL como: `https://api.example.com/v1/users/{username}`, en ese caso puedes forzar un recorrido de ruta accediendo a algo como: `example://app/users?username=../../unwanted-endpoint%3fparam=value`.\ Ten en cuenta que si encuentras los endpoints correctos dentro de la aplicaci贸n, podr铆as causar un **Open Redirect** (si parte de la ruta se usa como nombre de dominio), **toma de control de cuenta** (si puedes modificar los detalles de los usuarios sin un token CSRF y el endpoint vulnerable us贸 el m茅todo correcto) y cualquier otra vulnerabilidad. M谩s [info sobre esto aqu铆](http://dphoeniixx.com/2020/12/13-2/). **M谩s ejemplos** Un [informe de bug bounty interesante](https://hackerone.com/reports/855618) sobre enlaces (_/.well-known/assetlinks.json_). ### Fallos en la Inspecci贸n y Verificaci贸n de la Capa de Transporte * **Los certificados no siempre son inspeccionados adecuadamente** por las aplicaciones de Android. Es com煤n que estas aplicaciones pasen por alto advertencias y acepten certificados autofirmados o, en algunos casos, vuelvan a usar conexiones HTTP. * **Las negociaciones durante el apret贸n de manos SSL/TLS a veces son d茅biles**, empleando suites de cifrado inseguras. Esta vulnerabilidad hace que la conexi贸n sea susceptible a ataques de hombre en el medio (MITM), permitiendo a los atacantes descifrar los datos. * **La filtraci贸n de informaci贸n privada** es un riesgo cuando las aplicaciones se autentican utilizando canales seguros pero luego se comunican a trav茅s de canales no seguros para otras transacciones. Este enfoque no protege los datos sensibles, como cookies de sesi贸n o detalles del usuario, de la interceptaci贸n por entidades maliciosas. #### Verificaci贸n de Certificados Nos centraremos en la **verificaci贸n de certificados**. La integridad del certificado del servidor debe ser verificada para mejorar la seguridad. Esto es crucial porque configuraciones TLS inseguras y la transmisi贸n de datos sensibles a trav茅s de canales no encriptados pueden representar riesgos significativos. Para pasos detallados sobre c贸mo verificar certificados de servidor y abordar vulnerabilidades, [**este recurso**](https://manifestsecurity.com/android-application-security-part-10/) proporciona una gu铆a completa. #### SSL Pinning SSL Pinning es una medida de seguridad donde la aplicaci贸n verifica el certificado del servidor contra una copia conocida almacenada dentro de la propia aplicaci贸n. Este m茅todo es esencial para prevenir ataques MITM. Se recomienda encarecidamente implementar SSL Pinning para aplicaciones que manejan informaci贸n sensible. #### Inspecci贸n de Tr谩fico Para inspeccionar el tr谩fico HTTP, es necesario **instalar el certificado de la herramienta proxy** (por ejemplo, Burp). Sin instalar este certificado, el tr谩fico encriptado podr铆a no ser visible a trav茅s del proxy. Para una gu铆a sobre c贸mo instalar un certificado CA personalizado, [**haz clic aqu铆**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine). Las aplicaciones que apuntan a **API Level 24 y superiores** requieren modificaciones en la Configuraci贸n de Seguridad de Red para aceptar el certificado CA del proxy. Este paso es cr铆tico para inspeccionar tr谩fico encriptado. Para instrucciones sobre c贸mo modificar la Configuraci贸n de Seguridad de Red, [**consulta este tutorial**](make-apk-accept-ca-certificate.md). #### Bypass de SSL Pinning Cuando se implementa SSL Pinning, es necesario eludirlo para inspeccionar el tr谩fico HTTPS. Existen varios m茅todos disponibles para este prop贸sito: * Modificar **autom谩ticamente** el **apk** para **eludir** SSLPinning con [**apk-mitm**](https://github.com/shroudedcode/apk-mitm). La mejor ventaja de esta opci贸n es que no necesitar谩s root para eludir el SSL Pinning, pero deber谩s eliminar la aplicaci贸n y reinstalar la nueva, y esto no siempre funcionar谩. * Podr铆as usar **Frida** (discutido a continuaci贸n) para eludir esta protecci贸n. Aqu铆 tienes una gu铆a para usar Burp+Frida+Genymotion: [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/) * Tambi茅n puedes intentar **eludir autom谩ticamente SSL Pinning** usando [**objection**](frida-tutorial/objection-tutorial.md)**:** `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` * Tambi茅n puedes intentar **eludir autom谩ticamente SSL Pinning** usando **an谩lisis din谩mico de MobSF** (explicado a continuaci贸n) * Si a煤n piensas que hay tr谩fico que no est谩s capturando, puedes intentar **redirigir el tr谩fico a burp usando iptables**. Lee este blog: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) #### B煤squeda de Vulnerabilidades Web Comunes Tambi茅n es importante buscar vulnerabilidades web comunes dentro de la aplicaci贸n. La informaci贸n detallada sobre c贸mo identificar y mitigar estas vulnerabilidades est谩 m谩s all谩 del alcance de este resumen, pero se cubre extensamente en otros lugares. ### Frida [Frida](https://www.frida.re) es un kit de herramientas de instrumentaci贸n din谩mica para desarrolladores, ingenieros de reversa e investigadores de seguridad.\ **Puedes acceder a la aplicaci贸n en ejecuci贸n y enganchar m茅todos en tiempo de ejecuci贸n para cambiar el comportamiento, cambiar valores, extraer valores, ejecutar diferentes c贸digos...**\ Si deseas hacer pentesting en aplicaciones de Android, necesitas saber c贸mo usar Frida. * Aprende a usar Frida: [**Tutorial de Frida**](frida-tutorial/) * Algunas "GUI" para acciones con Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) * Ojection es excelente para automatizar el uso de Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) * Puedes encontrar algunos scripts de Frida geniales aqu铆: [**https://codeshare.frida.re/**](https://codeshare.frida.re) * Intenta eludir mecanismos de anti-debugging / anti-frida cargando Frida como se indica en [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace) (herramienta [linjector](https://github.com/erfur/linjector-rs)) ### **Volcar Memoria - Fridump** Verifica si la aplicaci贸n est谩 almacenando informaci贸n sensible en la memoria que no deber铆a estar almacenando, como contrase帽as o mnemot茅cnicas. Usando [**Fridump3**](https://github.com/rootbsd/fridump3) puedes volcar la memoria de la app con: ```bash # With PID python3 fridump3.py -u # With name frida-ps -Uai python3 fridump3.py -u "" ``` Esto volcar谩 la memoria en la carpeta ./dump, y all铆 podr铆as grep con algo como: {% code overflow="wrap" %} ```bash strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$" ``` {% endcode %} ### **Datos sensibles en Keystore** En Android, el Keystore es el mejor lugar para almacenar datos sensibles, sin embargo, con suficientes privilegios, **es posible acceder a 茅l**. Dado que las aplicaciones tienden a almacenar aqu铆 **datos sensibles en texto claro**, las pruebas de penetraci贸n deber铆an verificarlo como usuario root o alguien con acceso f铆sico al dispositivo podr铆a ser capaz de robar estos datos. Incluso si una aplicaci贸n almacena datos en el keystore, los datos deber铆an estar cifrados. Para acceder a los datos dentro del keystore, podr铆as usar este script de Frida: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js) ```bash frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` ### **Bypass de huellas dactilares/bio-m茅tricas** Usando el siguiente script de Frida, podr铆a ser posible **eludir la autenticaci贸n por huellas dactilares** que las aplicaciones de Android podr铆an estar realizando para **proteger ciertas 谩reas sensibles:** {% code overflow="wrap" %} ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` {% endcode %} ### **Im谩genes de Fondo** Cuando pones una aplicaci贸n en segundo plano, Android almacena un **instant谩nea de la aplicaci贸n** para que cuando se recupere al primer plano, comience a cargar la imagen antes de que la aplicaci贸n, por lo que parece que la aplicaci贸n se carg贸 m谩s r谩pido. Sin embargo, si esta instant谩nea contiene **informaci贸n sensible**, alguien con acceso a la instant谩nea podr铆a **robar esa informaci贸n** (ten en cuenta que necesitas root para acceder a ella). Las instant谩neas generalmente se almacenan en: **`/data/system_ce/0/snapshots`** Android proporciona una manera de **prevenir la captura de pantalla configurando el par谩metro de dise帽o FLAG\_SECURE**. Al usar esta bandera, el contenido de la ventana se trata como seguro, impidiendo que aparezca en capturas de pantalla o que se vea en pantallas no seguras. ```bash getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); ``` ### **Analizador de Aplicaciones Android** Esta herramienta puede ayudarte a gestionar diferentes herramientas durante el an谩lisis din谩mico: [https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer) ### Inyecci贸n de Intents Los desarrolladores a menudo crean componentes proxy como actividades, servicios y receptores de difusi贸n que manejan estos Intents y los pasan a m茅todos como `startActivity(...)` o `sendBroadcast(...)`, lo que puede ser arriesgado. El peligro radica en permitir que los atacantes activen componentes de la aplicaci贸n no exportados o accedan a proveedores de contenido sensibles al desviar estos Intents. Un ejemplo notable es el componente `WebView` que convierte URLs en objetos `Intent` a trav茅s de `Intent.parseUri(...)` y luego los ejecuta, lo que puede llevar a inyecciones de Intent maliciosas. ### Puntos Clave Esenciales * **Inyecci贸n de Intents** es similar al problema de Redirecci贸n Abierta en la web. * Los exploits implican pasar objetos `Intent` como extras, que pueden ser redirigidos para ejecutar operaciones inseguras. * Puede exponer componentes no exportados y proveedores de contenido a los atacantes. * La conversi贸n de URL a `Intent` de `WebView` puede facilitar acciones no intencionadas. ### Inyecciones del Lado del Cliente de Android y otros Probablemente conozcas este tipo de vulnerabilidades de la web. Debes tener especial cuidado con estas vulnerabilidades en una aplicaci贸n Android: * **Inyecci贸n SQL:** Al tratar con consultas din谩micas o Content-Providers, aseg煤rate de usar consultas parametrizadas. * **Inyecci贸n de JavaScript (XSS):** Verifica que el soporte de JavaScript y Plugins est茅 deshabilitado para cualquier WebView (deshabilitado por defecto). [M谩s informaci贸n aqu铆](webview-attacks.md#javascript-enabled). * **Inclusi贸n de Archivos Locales:** Los WebViews deben tener el acceso al sistema de archivos deshabilitado (habilitado por defecto) - `(webview.getSettings().setAllowFileAccess(false);)`. [M谩s informaci贸n aqu铆](webview-attacks.md#javascript-enabled). * **Cookies Eternas**: En varios casos, cuando la aplicaci贸n android finaliza la sesi贸n, la cookie no se revoca o incluso podr铆a guardarse en el disco. * [**Secure Flag** en cookies](../../pentesting-web/hacking-with-cookies/#cookies-flags) ***
隆脷nete al servidor de [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para comunicarte con hackers experimentados y cazadores de recompensas por errores! **Perspectivas de Hacking**\ Participa en contenido que profundiza en la emoci贸n y los desaf铆os del hacking. **Noticias de Hackeo en Tiempo Real**\ Mantente al d铆a con el mundo del hacking de ritmo r谩pido a trav茅s de noticias e informaci贸n en tiempo real. **脷ltimos Anuncios**\ Mantente informado sobre las nuevas recompensas por errores que se lanzan y actualizaciones cruciales de la plataforma. **脷nete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy mismo! ## An谩lisis Autom谩tico ### [MobSF](https://github.com/MobSF/Mobile-Security-Framework-MobSF) **An谩lisis est谩tico** ![](<../../.gitbook/assets/image (866).png>) **Evaluaci贸n de vulnerabilidades de la aplicaci贸n** utilizando un bonito frontend basado en la web. Tambi茅n puedes realizar an谩lisis din谩mico (pero necesitas preparar el entorno). ```bash docker pull opensecurity/mobile-security-framework-mobsf docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest ``` Notice que MobSF puede analizar **Android**(apk)**, IOS**(ipa) **y Windows**(apx) aplicaciones (_Las aplicaciones de Windows deben ser analizadas desde un MobSF instalado en un host de Windows_).\ Adem谩s, si creas un **ZIP** con el c贸digo fuente de una **Android** o una **IOS** app (ve a la carpeta ra铆z de la aplicaci贸n, selecciona todo y crea un archivo ZIP), tambi茅n podr谩 analizarlo. MobSF tambi茅n te permite **diff/Comparar** an谩lisis e integrar **VirusTotal** (necesitar谩s configurar tu clave API en _MobSF/settings.py_ y habilitarlo: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Tambi茅n puedes establecer `VT_UPLOAD` en `False`, entonces el **hash** ser谩 **subido** en lugar del archivo. ### An谩lisis din谩mico asistido con MobSF **MobSF** tambi茅n puede ser muy 煤til para el **an谩lisis din谩mico** en **Android**, pero en ese caso necesitar谩s instalar MobSF y **genymotion** en tu host (una VM o Docker no funcionar谩). _Nota: Necesitas **iniciar primero una VM en genymotion** y **luego MobSF.**_\ El **analizador din谩mico de MobSF** puede: * **Volcar datos de la aplicaci贸n** (URLs, registros, portapapeles, capturas de pantalla hechas por ti, capturas de pantalla hechas por "**Exported Activity Tester**", correos electr贸nicos, bases de datos SQLite, archivos XML y otros archivos creados). Todo esto se hace autom谩ticamente excepto por las capturas de pantalla, necesitas presionar cuando quieras una captura de pantalla o necesitas presionar "**Exported Activity Tester**" para obtener capturas de pantalla de todas las actividades exportadas. * Capturar **tr谩fico HTTPS** * Usar **Frida** para obtener **informaci贸n** **en tiempo de ejecuci贸n** Desde las versiones de Android **> 5**, **iniciar谩 autom谩ticamente Frida** y establecer谩 configuraciones de **proxy** globales para **capturar** tr谩fico. Solo capturar谩 tr谩fico de la aplicaci贸n probada. **Frida** Por defecto, tambi茅n usar谩 algunos scripts de Frida para **eludir la fijaci贸n de SSL**, **detecci贸n de root** y **detecci贸n de depurador** y para **monitorear APIs interesantes**.\ MobSF tambi茅n puede **invocar actividades exportadas**, tomar **capturas de pantalla** de ellas y **guardarlas** para el informe. Para **iniciar** la prueba din谩mica presiona el bot贸n verde: "**Start Instrumentation**". Presiona "**Frida Live Logs**" para ver los registros generados por los scripts de Frida y "**Live API Monitor**" para ver todas las invocaciones a m茅todos enganchados, argumentos pasados y valores devueltos (esto aparecer谩 despu茅s de presionar "Start Instrumentation").\ MobSF tambi茅n te permite cargar tus propios **scripts de Frida** (para enviar los resultados de tus scripts de Frida a MobSF usa la funci贸n `send()`). Tambi茅n tiene **varios scripts preescritos** que puedes cargar (puedes agregar m谩s en `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), solo **selecci贸nalos**, presiona "**Load**" y presiona "**Start Instrumentation**" (podr谩s ver los registros de esos scripts dentro de "**Frida Live Logs**"). ![](<../../.gitbook/assets/image (419).png>) Adem谩s, tienes algunas funcionalidades auxiliares de Frida: * **Enumerar Clases Cargadas**: Imprimir谩 todas las clases cargadas * **Capturar Cadenas**: Imprimir谩 todas las cadenas capturadas mientras usas la aplicaci贸n (muy ruidoso) * **Capturar Comparaciones de Cadenas**: Podr铆a ser muy 煤til. **Mostrar谩 las 2 cadenas que se est谩n comparando** y si el resultado fue Verdadero o Falso. * **Enumerar M茅todos de Clase**: Pon el nombre de la clase (como "java.io.File") e imprimir谩 todos los m茅todos de la clase. * **Buscar Patr贸n de Clase**: Buscar clases por patr贸n * **Rastrear M茅todos de Clase**: **Rastrear** una **clase completa** (ver entradas y salidas de todos los m茅todos de la clase). Recuerda que por defecto MobSF rastrea varios m茅todos interesantes de la API de Android. Una vez que hayas seleccionado el m贸dulo auxiliar que deseas usar, necesitas presionar "**Start Intrumentation**" y ver谩s todas las salidas en "**Frida Live Logs**". **Shell** MobSF tambi茅n te ofrece una shell con algunos comandos **adb**, **comandos de MobSF**, y comandos comunes de **shell** en la parte inferior de la p谩gina de an谩lisis din谩mico. Algunos comandos interesantes: ```bash help shell ls activities exported_activities services receivers ``` **Herramientas HTTP** Cuando se captura el tr谩fico http, puedes ver una vista fea del tr谩fico capturado en "**HTTP(S) Traffic**" en la parte inferior o una vista m谩s agradable en el bot贸n verde "**Start HTTPTools**". Desde la segunda opci贸n, puedes **enviar** las **solicitudes capturadas** a **proxies** como Burp o Owasp ZAP.\ Para hacerlo, _enciende Burp -->_ _apaga Intercept --> en MobSB HTTPTools selecciona la solicitud_ --> presiona "**Send to Fuzzer**" --> _selecciona la direcci贸n del proxy_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). Una vez que termines el an谩lisis din谩mico con MobSF, puedes presionar en "**Start Web API Fuzzer**" para **fuzz http requests** y buscar vulnerabilidades. {% hint style="info" %} Despu茅s de realizar un an谩lisis din谩mico con MobSF, la configuraci贸n del proxy puede estar mal configurada y no podr谩s solucionarlo desde la GUI. Puedes corregir la configuraci贸n del proxy haciendo: ``` adb shell settings put global http_proxy :0 ``` {% endhint %} ### An谩lisis Din谩mico Asistido con Inspeckage Puedes obtener la herramienta de [**Inspeckage**](https://github.com/ac-pm/Inspeckage).\ Esta herramienta utilizar谩 algunos **Hooks** para informarte **qu茅 est谩 sucediendo en la aplicaci贸n** mientras realizas un **an谩lisis din谩mico**. ### [Yaazhini](https://www.vegabird.com/yaazhini/) Esta es una **gran herramienta para realizar an谩lisis est谩tico con una GUI** ![](<../../.gitbook/assets/image (741).png>) ### [Qark](https://github.com/linkedin/qark) Esta herramienta est谩 dise帽ada para buscar varias **vulnerabilidades relacionadas con la seguridad de aplicaciones Android**, ya sea en **c贸digo fuente** o **APKs empaquetados**. La herramienta tambi茅n es **capaz de crear un APK "Proof-of-Concept" desplegable** y **comandos ADB**, para explotar algunas de las vulnerabilidades encontradas (Actividades expuestas, intents, tapjacking...). Al igual que con Drozer, no es necesario rootear el dispositivo de prueba. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk qark --java path/to/parent/java/folder qark --java path/to/specific/java/file.java ``` ### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git) * Muestra todos los archivos extra铆dos para una f谩cil referencia * Descompone autom谩ticamente archivos APK a formato Java y Smali * Analiza AndroidManifest.xml en busca de vulnerabilidades comunes y comportamiento * An谩lisis est谩tico del c贸digo fuente para vulnerabilidades y comportamiento comunes * Informaci贸n del dispositivo * y m谩s ```bash reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) SUPER es una aplicaci贸n de l铆nea de comandos que se puede utilizar en Windows, MacOS X y Linux, que analiza archivos _.apk_ en busca de vulnerabilidades. Lo hace descomprimiendo APKs y aplicando una serie de reglas para detectar esas vulnerabilidades. Todas las reglas est谩n centradas en un archivo `rules.json`, y cada empresa o probador podr铆a crear sus propias reglas para analizar lo que necesiten. Descargue los 煤ltimos binarios en la [p谩gina de descarga](https://superanalyzer.rocks/download.html) ``` super-analyzer {apk_file} ``` ### [StaCoAn](https://github.com/vincentcox/StaCoAn) ![](<../../.gitbook/assets/image (297).png>) StaCoAn es una herramienta **multiplataforma** que ayuda a desarrolladores, cazadores de bugs y hackers 茅ticos a realizar [an谩lisis de c贸digo est谩tico](https://en.wikipedia.org/wiki/Static\_program\_analysis) en aplicaciones m贸viles. El concepto es que arrastras y sueltas tu archivo de aplicaci贸n m贸vil (un archivo .apk o .ipa) en la aplicaci贸n StaCoAn y generar谩 un informe visual y port谩til para ti. Puedes ajustar la configuraci贸n y las listas de palabras para obtener una experiencia personalizada. Descargar [煤ltima versi贸n](https://github.com/vincentcox/StaCoAn/releases): ``` ./stacoan ``` ### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework) AndroBugs Framework es un sistema de an谩lisis de vulnerabilidades de Android que ayuda a los desarrolladores o hackers a encontrar posibles vulnerabilidades de seguridad en aplicaciones de Android.\ [Windows releases](https://github.com/AndroBugs/AndroBugs\_Framework/releases) ``` python androbugs.py -f [APK file] androbugs.exe -f [APK file] ``` ### [Androwarn](https://github.com/maaaaz/androwarn) **Androwarn** es una herramienta cuyo objetivo principal es detectar y advertir al usuario sobre comportamientos potencialmente maliciosos desarrollados por una aplicaci贸n de Android. La detecci贸n se realiza con el **an谩lisis est谩tico** del bytecode Dalvik de la aplicaci贸n, representado como **Smali**, con la biblioteca [`androguard`](https://github.com/androguard/androguard). Esta herramienta busca **comportamientos comunes de aplicaciones "malas"** como: exfiltraci贸n de identificadores de telefon铆a, interceptaci贸n de flujos de audio/video, modificaci贸n de datos PIM, ejecuci贸n de c贸digo arbitrario... ``` python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ``` ### [MARA Framework](https://github.com/xtiankisutsa/MARA\_Framework) ![](<../../.gitbook/assets/image (595).png>) **MARA** es un **M**obile **A**pplication **R**everse engineering y **A**nalysis Framework. Es una herramienta que re煤ne herramientas com煤nmente utilizadas para la ingenier铆a inversa y an谩lisis de aplicaciones m贸viles, para ayudar en la prueba de aplicaciones m贸viles contra las amenazas de seguridad m贸vil de OWASP. Su objetivo es facilitar esta tarea y hacerla m谩s amigable para los desarrolladores de aplicaciones m贸viles y profesionales de seguridad. Es capaz de: * Extraer c贸digo Java y Smali usando diferentes herramientas * Analizar APKs usando: [smalisca](https://github.com/dorneanu/smalisca), [ClassyShark](https://github.com/google/android-classyshark), [androbugs](https://github.com/AndroBugs/AndroBugs\_Framework), [androwarn](https://github.com/maaaaz/androwarn), [APKiD](https://github.com/rednaga/APKiD) * Extraer informaci贸n privada del APK usando regexps. * Analizar el Manifest. * Analizar dominios encontrados usando: [pyssltest](https://github.com/moheshmohan/pyssltest), [testssl](https://github.com/drwetter/testssl.sh) y [whatweb](https://github.com/urbanadventurer/WhatWeb) * Deofuscar APK a trav茅s de [apk-deguard.com](http://www.apk-deguard.com) ### Koodous 脷til para detectar malware: [https://koodous.com/](https://koodous.com) ## Ofuscando/Deofuscando c贸digo Tenga en cuenta que dependiendo del servicio y la configuraci贸n que utilice para ofuscar el c贸digo. Los secretos pueden o no terminar ofuscados. ### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\)) De [Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\)): **ProGuard** es una herramienta de l铆nea de comandos de c贸digo abierto que reduce, optimiza y ofusca c贸digo Java. Es capaz de optimizar bytecode as铆 como detectar y eliminar instrucciones no utilizadas. ProGuard es software libre y se distribuye bajo la Licencia P煤blica General de GNU, versi贸n 2. ProGuard se distribuye como parte del SDK de Android y se ejecuta al construir la aplicaci贸n en modo de lanzamiento. ### [DexGuard](https://www.guardsquare.com/dexguard) Encuentra una gu铆a paso a paso para deofuscar el apk en [https://blog.lexfo.fr/dexguard.html](https://blog.lexfo.fr/dexguard.html) (De esa gu铆a) La 煤ltima vez que verificamos, el modo de operaci贸n de Dexguard era: * cargar un recurso como un InputStream; * alimentar el resultado a una clase que hereda de FilterInputStream para descifrarlo; * hacer alguna ofuscaci贸n in煤til para desperdiciar unos minutos del tiempo de un reversor; * alimentar el resultado descifrado a un ZipInputStream para obtener un archivo DEX; * finalmente cargar el DEX resultante como un Recurso usando el m茅todo `loadDex`. ### [DeGuard](http://apk-deguard.com) **DeGuard revierte el proceso de ofuscaci贸n realizado por herramientas de ofuscaci贸n de Android. Esto permite numerosos an谩lisis de seguridad, incluyendo inspecci贸n de c贸digo y predicci贸n de bibliotecas.** Puedes subir un APK ofuscado a su plataforma. ### [Simplify](https://github.com/CalebFenton/simplify) Es un **deofuscador gen茅rico de android.** Simplify **ejecuta virtualmente una aplicaci贸n** para entender su comportamiento y luego **intenta optimizar el c贸digo** para que se comporte de manera id茅ntica pero sea m谩s f谩cil de entender para un humano. Cada tipo de optimizaci贸n es simple y gen茅rico, por lo que no importa qu茅 tipo espec铆fico de ofuscaci贸n se utilice. ### [APKiD](https://github.com/rednaga/APKiD) APKiD te da informaci贸n sobre **c贸mo se hizo un APK**. Identifica muchos **compiladores**, **empaquetadores**, **ofuscadores**, y otras cosas extra帽as. Es [_PEiD_](https://www.aldeid.com/wiki/PEiD) para Android. ### Manual [Lee este tutorial para aprender algunos trucos sobre **c贸mo revertir la ofuscaci贸n personalizada**](manual-deobfuscation.md) ## Labs ### [Androl4b](https://github.com/sh4hin/Androl4b) AndroL4b es una m谩quina virtual de seguridad de Android basada en ubuntu-mate que incluye la colecci贸n de los 煤ltimos frameworks, tutoriales y laboratorios de diferentes expertos en seguridad e investigadores para ingenier铆a inversa y an谩lisis de malware. ## Referencias * [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/) * [https://appsecwiki.com/#/](https://appsecwiki.com/#/) Es una gran lista de recursos * [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Curso r谩pido de Android * [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/) * [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh) * [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec) ## A煤n por probar * [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/) * [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
脷nete al [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para comunicarte con hackers experimentados y cazadores de recompensas por errores! **Perspectivas de Hacking**\ Participa en contenido que profundiza en la emoci贸n y los desaf铆os del hacking **Noticias de Hackeo en Tiempo Real**\ Mantente al d铆a con el mundo del hacking de ritmo r谩pido a trav茅s de noticias e informaci贸n en tiempo real **脷ltimos Anuncios**\ Mantente informado sobre las nuevas recompensas por errores que se lanzan y actualizaciones cruciales de la plataforma **脷nete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy! {% hint style="success" %} Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Apoya a HackTricks * Revisa los [**planes de suscripci贸n**](https://github.com/sponsors/carlospolop)! * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
{% endhint %}