Introducción al pentesting de aplicaciones móviles sin morir en el intento
Compartir
Antes de comenzar a hablar de pentesting móvil debemos sentar las bases y diferenciar entre lo que es un análisis estático de la aplicación y un análisis dinámico. Pero no sin antes hablar de la estructura de un APK.
El proceso de desensamblar un APK se denomina descompresión y es por medio de este proceso a través del cual logramos acceder a las entrañas del nuestro binario:
Para ello, bastaría con:
unzip APP.apk -d output-unzip
apktool d APP.apk -o output-apktool
A la hora de decompilar el código fuente, tenemos dos formas, por un lado podemos generar el .smali que es el bytecode “legible” para humanos (apktool), o generar el .java interpretrado, no es el código fuente original, pero nos ayuda a entender la lógica de la aplicación de forma más sencilla (jadx).
Análisis estático vs Dinámico
Análisis estático
- Palabras claves o patrones vulnerables de código.
- Credenciales / api keys.
- Urls / endpoints.
- Identificación de funciones importantes: autenticación, cambios de estado, PII.
- Identificación de función de debug. Presencia de comentarios en el código.
- Identificación de funciones peligrosas: uso de almacenamiento externo, ejecución de código. Sanitización.
- Secretos hardcodeados.