Mobile Application Penetration Testing Cheat Sheet
La hoja de referencia de pentest de aplicaciones móviles fue creada para proporcionar una colección concisa de información de alto valor sobre temas específicos de pruebas de penetración en aplicaciones móviles y una lista de verificación, que está mapeada con el OWASP Mobile Risk Top 10 para realizar pentest.
Distribuciones de Pruebas de Seguridad para Aplicaciones Móviles
- Appie - Un paquete de software portátil para pentesting de Android y una alternativa increíble a las máquinas virtuales existentes.
- Android Tamer - Android Tamer es una plataforma virtual / en vivo para profesionales de la seguridad de Android.
- Androl4b - Una máquina virtual para evaluar aplicaciones Android, ingeniería inversa y análisis de malware.
- Vezir Project - Entorno de pentesting de aplicaciones móviles y análisis de malware.
- Mobexler - Mobexler es una máquina virtual personalizada, diseñada para ayudar en las pruebas de penetración de aplicaciones Android e iOS.
Frameworks de Seguridad Móvil Todo-en-Uno
- Mobile Security Framework - MobSF - Mobile Security Framework es un framework de pruebas de penetración automatizadas para aplicaciones móviles (Android/iOS) de código abierto, inteligente y todo-en-uno, capaz de realizar análisis estático y dinámico.
python manage.py runserver 127.0.0.1:1337
- Needle - Needle es un framework modular de código abierto para agilizar el proceso de realización de evaluaciones de seguridad de aplicaciones iOS, incluyendo análisis binario, análisis estático de código, manipulación en tiempo de ejecución mediante Cycript y hooking con Frida, entre otros.
- Objection - Objection es un kit de herramientas de exploración móvil en tiempo de ejecución, impulsado por Frida. Fue construido con el objetivo de ayudar a evaluar aplicaciones móviles y su postura de seguridad sin necesidad de un dispositivo móvil con jailbreak o rooteado.
- RMS-Runtime-Mobile-Security - Runtime Mobile Security (RMS), impulsado por FRIDA, es una potente interfaz web que te ayuda a manipular aplicaciones Android e iOS en tiempo de ejecución.
Pruebas de Penetración en Aplicaciones Android
Ingeniería Inversa y Análisis Estático
- APKTool - Una herramienta para la ingeniería inversa de aplicaciones Android binarias, cerradas y de terceros. Puede decodificar los recursos a una forma casi original y reconstruirlos después de realizar algunas modificaciones.
- Desensamblar el archivo apk de Android
- Reconstruir los recursos decodificados de vuelta a APK/JAR binario con firma de certificado
apktool b <modified folder>
keytool -genkey -v -keystore keys/test.keystore -alias Test -keyalg RSA -keysize 1024 -sigalg SHA1withRSA -validity 10000
jarsigner -keystore keys/test.keystore dist/test.apk -sigalg SHA1withRSA -digestalg SHA1 Test
- Bytecode Viewer - Bytecode Viewer es un visor de bytecode Java avanzado y ligero. Está escrito completamente en Java y es de código abierto.
- Jadx - Descompilador de Dex a Java: herramientas de línea de comandos y GUI para producir código fuente Java a partir de archivos Android Dex y Apk.
- APK Studio - IDE de código abierto, multiplataforma basado en Qt para la ingeniería inversa de paquetes de aplicaciones Android.
- Oat2dex - Una herramienta para convertir archivos .oat en archivos .dex.
- Deoptimizar clases de arranque (La salida estará en las carpetas "odex" y "dex")
java -jar oat2dex.jar boot <boot.oat file>
Análisis Dinámico y en Tiempo de Ejecución
- Cydia Substrate - Cydia Substrate para Android permite a los desarrolladores realizar cambios en el software existente con extensiones de Substrate que se inyectan en la memoria del proceso objetivo.
- Xposed Framework - El framework Xposed te permite modificar la apariencia y el comportamiento del sistema o de las aplicaciones en tiempo de ejecución, sin modificar ningún paquete de aplicación Android (APK) ni volver a flashear.
- PID Cat - Una actualización del excelente script de colores de logcat de Jeff Sharkey que solo muestra entradas de registro para procesos de un paquete de aplicación específico.
- Inspeckage - Inspeckage es una herramienta desarrollada para ofrecer análisis dinámico de aplicaciones Android. Aplicando hooks a funciones de la API de Android, Inspeckage te ayudará a entender qué está haciendo una aplicación Android en tiempo de ejecución.
- Frida - El kit de herramientas funciona mediante un modelo cliente-servidor y te permite inyectar en procesos en ejecución no solo en Android, sino también en iOS, Windows y Mac.
- Diff-GUI - Un framework web para comenzar a instrumentar con los módulos disponibles, enganchando en nativo, inyectando JavaScript usando Frida.
- Fridump - Fridump utiliza el framework Frida para volcar direcciones de memoria accesibles desde cualquier plataforma soportada. Puede usarse desde un sistema Windows, Linux o Mac OS X para volcar la memoria de una aplicación iOS, Android o Windows.
- House - Un kit de herramientas de análisis de aplicaciones móviles en tiempo de ejecución con interfaz web, impulsado por Frida, diseñado para ayudar a evaluar aplicaciones móviles mediante la implementación de hooks e interceptación dinámica de funciones, y pensado para hacer que la escritura de scripts de Frida sea lo más simple posible.
- AndBug - AndBug es un depurador dirigido a la máquina virtual Dalvik de la plataforma Android, pensado para ingenieros inversos y desarrolladores.
- Identificar el proceso de la aplicación usando adb shell
adb shell ps | grep -i "App keyword"
Análisis de Red y Pruebas del Lado del Servidor
- Tcpdump - Una utilidad de captura de paquetes por línea de comandos.
- Wireshark - Un analizador de paquetes de código abierto.
- Capturas de paquetes en vivo en tiempo real
adb shell "tcpdump -s 0 -w - | nc -l -p 4444"
adb forward tcp:4444 tcp:4444
nc localhost 4444 | sudo wireshark -k -S -i –
- Mallory - Una herramienta de Hombre en el Medio (MiTM) que se utiliza para monitorear y manipular el tráfico en dispositivos y aplicaciones móviles.
- Burp Suite - Burp Suite es una plataforma integrada para realizar pruebas de seguridad de aplicaciones.
- Instalar la CA de confianza a nivel del sistema operativo Android (dispositivo root/emulador) para Android N+ de la siguiente manera:
openssl x509 -inform PEM -subject_hash -in BurpCA.pem | head -1
cat BurpCA.pem > 9a5ba580.0
openssl x509 -inform PEM -text -in BurpCA.pem -out /dev/null >> 9a5ba580.0
adb root
Evasión de la Detección de Root y del SSL Pinning
- Magisk - Las suites de Magisk proporcionan acceso root a tu dispositivo, capacidad para modificar particiones de solo lectura mediante la instalación de módulos y ocultar Magisk de las detecciones de root/verificaciones de integridad del sistema.
- Xposed Module: Just Trust Me - Módulo Xposed para evadir el SSL certificate pinning.
- Xposed Module: SSLUnpinning - Módulo Xposed de Android para evadir la validación del certificado SSL (Certificate Pinning).
- Cydia Substrate Module: Android SSL Trust Killer - Herramienta de caja negra para evadir el SSL certificate pinning en la mayoría de las aplicaciones que se ejecutan en un dispositivo.
- Cydia Substrate Module: RootCoak Plus - Parchea la verificación de root para indicaciones de root comúnmente conocidas.
- Android-ssl-bypass - una herramienta de depuración de Android que se puede utilizar para evadir SSL, incluso cuando el certificate pinning está implementado, así como para otras tareas de depuración. La herramienta se ejecuta como una consola interactiva.
- Apk-mitm - Una aplicación CLI que prepara automáticamente archivos APK de Android para la inspección HTTPS
- Frida CodeShare - El proyecto Frida CodeShare está formado por desarrolladores de todo el mundo que trabajan juntos con un objetivo: llevar a Frida a sus límites de formas nuevas e innovadoras.
- Evadiendo la detección de root
frida --codeshare dzonerzy/fridantiroot -f YOUR_BINARY
- Evadiendo SSL Pinning
frida --codeshare pcipolloni/universal-android-ssl-pinning-bypass-with-frida -f YOUR_BINARY
Librerías de Seguridad
- PublicKey Pinning - El pinning en Android puede lograrse a través de un X509TrustManager personalizado. X509TrustManager debe realizar las comprobaciones X509 habituales además de llevar a cabo la configuración de pinning.
- Android Pinning - Un proyecto de librería independiente para el certificate pinning en Android.
- Java AES Crypto - Una clase simple de Android para cifrar y descifrar cadenas, con el objetivo de evitar los errores clásicos de los que adolecen la mayoría de estas clases.
- Proguard - ProGuard es un reductor de archivos de clase Java, optimizador, ofuscador y preverificador gratuito. Detecta y elimina clases, campos, métodos y atributos no utilizados.
- SQL Cipher - SQLCipher es una extensión de código abierto de SQLite que proporciona cifrado AES transparente de 256 bits de los archivos de base de datos.
- Secure Preferences - Envoltorio de Shared Preferences de Android que cifra las claves y valores de Shared Preferences.
- Trusted Intents - Librería para interacciones confiables y flexibles entre aplicaciones Android.
- RootBeer - Una práctica librería de verificación de root y una aplicación de ejemplo.
- Cifrado de extremo a extremo - Capillary es una librería para simplificar el envío de mensajes push cifrados de extremo a extremo desde servidores de aplicaciones basados en Java hasta clientes Android.
Pruebas de Penetración en Aplicaciones iOS
Acceso al Sistema de Archivos en iDevice
- FileZilla - Soporta FTP, SFTP y FTPS (FTP sobre SSL/TLS).
- Cyberduck - Navegador libre de FTP, SFTP, WebDAV, S3, Azure y OpenStack Swift para Mac y Windows.
- itunnel - Se usa para reenviar SSH por USB.
- iProxy - Te permite conectar tu portátil al iPhone para navegar por la web.
- iFunbox - La herramienta de gestión de archivos y aplicaciones para iPhone, iPad y iPod Touch.#### Ingeniería inversa y análisis estático
- otool - El comando otool muestra partes específicas de archivos de objetos o bibliotecas.
- Clutch - Descifra la aplicación y vuelca el bundleID especificado en un archivo binario o .ipa.
- Dumpdecrypted - Vuelca archivos mach-o descifrados de aplicaciones iPhone cifradas desde la memoria al disco. Esta herramienta es necesaria para que los investigadores de seguridad puedan mirar bajo el capó del cifrado.
iPod:~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Scan.app/Scan
- class-dump - Una utilidad de línea de comandos para examinar la información de runtime de Objective-C almacenada en archivos Mach-O.
- dsdump - Un nm mejorado + class-dump de objc/swift.
- Weak Classdump - Un script de Cycript que genera un archivo de cabecera para la clase pasada a la función. Es muy útil cuando no puedes usar classdump o dumpdecrypted, cuando los binarios están cifrados, etc.
iPod:~ root# cycript -p Skype weak_classdump.cy; cycript -p Skype
Análisis dinámico y de runtime
- cycript - Cycript permite a los desarrolladores explorar y modificar aplicaciones en ejecución, ya sea en iOS o Mac OS X, usando una combinación de sintaxis de Objective-C++ y JavaScript a través de una consola interactiva con resaltado de sintaxis y autocompletado con tabulación.
- Mostrar el controlador de vista actualmente visible
cy# UIApp.keyWindow.rootViewController.visibleViewController
- Mostrar el controlador de vista en la parte superior de la pila de navegación
cy# UIApp.keyWindow.rootViewController.topViewController
- Obtener un array de objetos existentes de una determinada clase
cy# choose(UIViewController)
- Volcado de UI, recorta muchas descripciones de UIView
cy# [[UIApp keyWindow] _autolayoutTrace].toString()
- Omitir UIView y nextResponders para obtener ViewControllers directamente
cy# [[[UIApp keyWindow] rootViewController] _printHierarchy].toString()
- Listar métodos en runtime
cy# classname.messages o
cy# function printMethods(className, isa) { var count = new new Type("I"); var classObj = (isa != undefined) ? objc_getClass(className)->isa : objc_getClass(className); var methods = class_copyMethodList(classObj, count); var methodsArray = []; for(var i = 0; i < *count; i++) { var method = methods[i]; methodsArray.push({selector:method_getName(method), implementation:method_getImplementation(method)}); } free(methods); return methodsArray; }
Análisis de red y pruebas del lado del servidor
- Mallory - Una herramienta de hombre en el medio (MiTM) que se usa para monitorear y manipular el tráfico en dispositivos y aplicaciones móviles.
- Burp Suite - Burp Suite es una plataforma integrada para realizar pruebas de seguridad de aplicaciones.
- OWASP ZAP - OWASP Zed Attack Proxy Project es un escáner de seguridad de aplicaciones web de código abierto. Está pensado para ser utilizado tanto por quienes son nuevos en seguridad de aplicaciones como por probadores de penetración profesionales.
- Charles Proxy - Proxy HTTP / monitor HTTP / proxy inverso que permite a un desarrollador ver todo el tráfico HTTP y SSL / HTTPS entre su máquina e Internet.
Evasión de detección de root y fijación de SSL (SSL Pinning)
- SSL Kill Switch 2 - Herramienta de caja negra para deshabilitar la validación de certificados SSL, incluida la fijación de certificados, dentro de aplicaciones iOS y OS X.
- iOS TrustMe - Deshabilita las comprobaciones de confianza de certificados en dispositivos iOS.
- tsProtector - Otra herramienta para evadir la detección de jailbreak.
- JailProtect - Además de evadir la detección de jailbreak, también te permite falsificar fácilmente la versión de tu firmware iOS.
- Shadow - Shadow es un tweak para evadir la detección de jailbreak que supera los métodos de detección básicos usados por muchas aplicaciones de App Store.
- Frida CodeShare - El proyecto Frida CodeShare está formado por desarrolladores de todo el mundo que trabajan juntos con un objetivo: llevar a Frida a sus límites de formas nuevas e innovadoras.
- Evasión de fijación de SSL
frida --codeshare lichao890427/ios-ssl-bypass -f YOUR_BINARY
frida --codeshare dki/ios10-ssl-bypass -f YOUR_BINARY
Bibliotecas de seguridad
- PublicKey Pinning - La fijación en iOS se realiza a través de un NSURLConnectionDelegate. El delegado debe implementar connection:canAuthenticateAgainstProtectionSpace: y connection:didReceiveAuthenticationChallenge:. Dentro de connection:didReceiveAuthenticationChallenge:, el delegado debe llamar a SecTrustEvaluate para realizar las comprobaciones X509 habituales.
- Swiftshield - SwiftShield es una herramienta que genera nombres cifrados e irreversibles para los objetos de tu proyecto iOS (incluidos tus Pods y Storyboards) con el fin de proteger tu aplicación de herramientas que realizan ingeniería inversa en aplicaciones iOS, como class-dump y Cycript.
- IOSSecuritySuite - iOS Security Suite es una biblioteca avanzada y fácil de usar de seguridad de plataforma y anti-manipulación escrita en Swift puro. Si desarrollas para iOS y quieres proteger tu aplicación según el estándar OWASP MASVS, capítulo v8, esta biblioteca podría ahorrarte mucho tiempo.
- OWASP iMAS - iMAS es un proyecto de investigación colaborativo de MITRE Corporation centrado en controles de seguridad iOS de código abierto.
Laboratorio de pruebas de penetración móvil
- WaTF Bank - What-a-Terrible-Failure Mobile Banking Application (WaTF-Bank), escrita en Java, Swift 4, Objective-C y Python (framework Flask) como servidor backend, está diseñada para simular una aplicación de banca móvil "del mundo real" habilitada para servicios web que contiene más de 30 vulnerabilidades basadas en los 10 riesgos principales de OWASP Mobile.
- InsecureBankv2 - Esta vulnerable aplicación Android se llama "InsecureBankv2" y está hecha para entusiastas y desarrolladores de seguridad que aprendan las inseguridades de Android probando esta aplicación vulnerable. Su componente de servidor backend está escrito en Python.
- DVIA-v2 - Damn Vulnerable iOS App (DVIA) es una aplicación iOS que es enormemente vulnerable. Su objetivo principal es proporcionar una plataforma a entusiastas, profesionales o estudiantes de seguridad móvil para poner a prueba sus habilidades de pruebas de penetración iOS en un entorno legal.
- DIVA Android - DIVA (Damn insecure and vulnerable App) es una aplicación diseñada intencionalmente para ser insegura. El objetivo de la aplicación es enseñar a desarrolladores, control de calidad y profesionales de seguridad las fallas que generalmente están presentes en las aplicaciones debido a malas prácticas de codificación o prácticas inseguras.
- DVHMA - Damn Vulnerable Hybrid Mobile App (DVHMA) es una aplicación móvil híbrida (para Android) que contiene vulnerabilidades intencionalmente. Su propósito es permitir que los profesionales de seguridad prueben sus herramientas y técnicas legalmente, y ayudar a los desarrolladores a comprender mejor los errores comunes al desarrollar aplicaciones móviles híbridas de forma segura.
- MSTG Hacking Playground - Esta es una colección de aplicaciones móviles iOS y Android, construidas intencionalmente de forma insegura. Estas aplicaciones se usan como ejemplos para demostrar diferentes vulnerabilidades explicadas en la Guía de Pruebas de Seguridad Móvil de OWASP.
- UnCrackable Mobile Apps - UnCrackable Apps para Android e iOS, una colección de desafíos de ingeniería inversa móvil. Estos desafíos se usan como ejemplos a lo largo de la Guía de Pruebas de Seguridad Móvil.
- OWASP iGoat - Goat es una herramienta de aprendizaje para desarrolladores iOS (iPhone, iPad, etc.) y probadores de penetración de aplicaciones móviles. Está inspirada en el proyecto WebGoat y tiene un flujo conceptual similar.
Contribución
Tus contribuciones y sugerencias son bienvenidas.
Licencia

Esta obra está bajo una Licencia Internacional Creative Commons Atribución 4.0