viernes, 3 de enero de 2025

Ingeniería Inversa de APKs: Aprende a Explorar Código de Apps Android Vulnerables

APKs ingenieria inversa

Las aplicaciones Android, como OLIPAY, pueden ser vulnerables a ingeniería inversa si no implementan medidas de seguridad como la ofuscación de código. En este artículo te mostraré cómo usar dos herramientas esenciales para descomponer y analizar APKs, enfocándonos en el caso de OLIPAY, una app que carece de ofuscación.

Descargar oliPay.apk aquí

¿Qué es la Ingeniería Inversa de APKs?

Es el proceso de analizar una aplicación compilada para entender cómo funciona internamente, explorar vulnerabilidades o aprender de su estructura. Aunque no obtendremos todo el código fuente, herramientas como Apktool y JADX nos permiten acceder a partes esenciales, como el archivo AndroidManifest.xml o el código smali.

Nota: Este artículo tiene fines educativos. Usar ingeniería inversa en software sin autorización puede violar leyes locales.

Herramientas para Ingeniería Inversa en Android

1. Apktool

Apktool es ideal para descompilar y leer archivos APK, permitiéndonos analizar configuraciones clave.

instalar apktool

Caso Práctico: OLIPAY

El archivo APK es, en esencia, un archivo comprimido similar a .zip. Para descomprimirlo, utilizamos:

unzip archivo-ejemplo-comprimido.zip

Con Apktool, descompilamos el archivo de forma específica para extraer su contenido:

apktool d oliPay.apk

Al hacerlo, podemos acceder al archivo AndroidManifest.xml, que revela información clave como permisos, componentes y comportamientos de la aplicación.

Ejemplo visual:

Análisis del archivo manifest.xml con Apktool
  • En la imagen de arriba podemos ver que esta aplicación te solicitara permisos y ente los mas importantes son:
    • para envias SMS
    • para trabajar en segundo plano
    • para leer notificaciones de otras aplicaciones

2. JADX

JADX nos permite decompilar los archivos DEX (Dalvik Executable) y obtener código fuente legible, ya sea mediante su versión de línea de comandos (jadx) o su interfaz gráfica (jadx-gui).

Instalar JADX

En mi caso en mi distro Manjaro se instala asi:

sudo pacman -S jadx

Caso Práctico: OLIPAY

Prefiero usar jadx-gui porque es más cómodo y visual:

  1. Abre jadx-gui desde la terminal:

    jadx-gui
  2. Carga el archivo oliPay.apk para explorar su contenido.

    Ejemplo visual:

    Análisis del código fuente con JADX
    • En la imagen de arriba podemos ver:
      • A primera el nombre de la aplicacion es: com.victormiranda.olinda.cheka
      • Usa la clase NotificationListenerService para integrar el servicio de lectura de notificaciones
      • En esta porcion de codigo se ve un desorden en su orden:
      public static final String FACEBOOK_MESSENGER_PACK_NAME = "com.bcp.bank.bcp";
      public static final String FACEBOOK_PACK_NAME = "pe.com.interbank.mobilebanking";
      public static final String INSTAGRAM_PACK_NAME = "pe.com.scotiabank.blpm.android.client";
      public static final String WHATSAPP_PACK_NAME = "com.bbva.nxt_peru";
      public static final String YAPE_PACK_NAME = "com.bcp.innovacxion.yapeapp";
      • También considero que las validaciones por numeros, me parecen una manera extraña de validación
      if (matchNotificationCode != 4)

Conclusión

Analizar aplicaciones como OLIPAY con Apktool y JADX puede ser un primer paso para aprender cómo funcionan las apps Android y mejorar nuestras habilidades técnicas. Sin embargo, también muestra cómo una mala implementación de seguridad puede dejar a las aplicaciones expuestas.


Glosario

  • Los archivos DEX (Dalvik Executable): son un componente clave en el sistema operativo Android. Contienen el código ejecutable que se genera después de compilar una aplicación escrita en Java o Kotlin para que pueda ser interpretada y ejecutada por la máquina virtual Dalvik o la Android Runtime (ART), dependiendo de la versión de Android.

Fuentes:

No hay comentarios:

Publicar un comentario

Soy Aníbal 🐧💻. ¿Tienes una gran idea? Si me gusta, ¡trabajemos juntos!

¿Tienes un proyecto en mente o necesitas resolver un desafío técnico? Estoy aquí para ayudarte a encontrar la mejor solución. 🚀

Hablemos sobre tu proyecto ¡Necesito una consulta rápida!