En este repositorio encontraremos una guía paso a paso sobre cómo realizar ingeniería inversa en un APK.
La Ingeniería Inversa puede ayudarnos en varios aspectos, como identificar software o código malicioso , descubrir fallos de seguridad , encontrar características no esperadas /incumplir reglas de negocio… Dicho esto, profundicemos más en el universo Android.
Empezando por lo básico, podemos dividir nuestro Paquete Android (APK) en algunas partes:
Smali es la versión legible por humanos del código de bytes de Dalvik; en pocas palabras, funciona como un ensamblador/desensamblador. Formato ejecutable Dalvik (.dex)
En términos de código, echemos un vistazo a la diferencia entre Java y Smali:
public static void printHelloWorld() {
System.out.println("Hello World")
}
Y nuestro mismo código en Smali:
.method public static printHelloWorld()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello World"
invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
Repasamos los conceptos básicos necesarios y ¡ahora manos a la obra!
Paso 1:
Elija el APK que desea revertir.
Si no puedes encontrarlo fácilmente a través de la propia tienda de aplicaciones, puedes hacerlo directamente en sitios como APKCombo o APKMonk.
Una vez aquí, presta atención a algunas cosas que te pueden resultar interesantes:
- Qual é o URL da API? (geralmente emos algo como api.domain.com)
- Qual é método de autenticação utilizado? Eu preciso criar um login para acessar?
- Quais são as chamadas que eu posso encontrar e quais são os parâmetros eles esperam?
Una vez que tenemos el APK, toca descompilarlo, para que podamos analizar el código.
(Las herramientas de análisis dinámico como MOBSF permiten descargar el código directamente, ya sea en Java o SMALI).
Ahora vamos a utilizar herramientas, la primera de ellas es APKTOOL, verás más detalles al respecto a continuación, pero en general se encargará de descompilar los archivos, creando una carpeta, en un mismo lugar, con todos los archivos descompilados. . Desde aquí podrás analizar todos los códigos necesarios.
El comando utilizado aquí será el siguiente:
- apktool d ~/Desktop/aplicativo_app.apk
Extrayendo el archivo “classes.dex” del APK.
Utilice la herramienta dex2jar para convertir a archivos de clase Java. Dando como resultado un archivo jar.
- sh d2j-dex2jar.sh classes.dex
Utilice JD-GUI para extraer el código fuente del archivo jar.
- Arraste o arquivo classes-dex2jar.jar pro JD-GUI
Mobile Security Framework es una herramienta que automatiza el análisis de APK. En su interior obtenemos más detalles sobre las partes que componen los APK, que vimos anteriormente.
dex2jar
dedexer
herramienta apk
apktool es una herramienta Java de código abierto para aplicaciones de Android de ingeniería inversa. Puede decodificar archivos APK a su código original en un XML legible por humanos. También dividir todas las clases y métodos contenidos en el archivo en Smali. De esta manera, puede modificar funciones o ejecuciones de programas. Con el código Smalli, puede agregar nuevas funciones dentro de esa aplicación o cambiar el comportamiento esperado.
Comúnmente utilizado para fijación de SSL.
adb (puente de depuración de Android)
androguardia
Marco expuesto
Comandos: //pronto
Omitir SSL de Android
Frida
Ahora que tenemos una base de cómo funciona esto, ¡es hora de practicar! A continuación se muestra una lista de algunos laboratorios que puede utilizar como ejercicio:
Pruebe los siguientes tipos de ataques:
¡Gracias por llegar hasta aquí! Que tenga un lindo día.