Inyectando malware en una Apk.

 

Introducción.

Este artículo tratará sobre la creación de una APK maliciosa partiendo de una legítima, con el objetivo de ganar acceso al dispositivo Android sobre el que se instala.

En primer lugar, es necesario definir cuál será la aplicación para trabajar y descargarla, a efectos prácticos, este artículo trabajará como ejemplo la app Momo (immomo.com/download/momo.apk) la cual es utilizada por millones de personas en el mundo.

Posteriormente, se puede crear la app maliciosa utilizando las características disponibles en Metasploit Framework, gracias a “msfvenom”, podremos generar un payload específico para Android.

El objetivo es inyectar el payload generado por msfvenom en la apk legítima, de una forma similar a lo que hacemos con ejecutables PE o ELF para sistemas Windows y GNU/Linux a la hora de aplicar la técnica de “code caving”.

Utilizando una herramienta como “apktool” podemos proceder a desempaquetar y decompilar la APK legítima y la APK generada por Metasploit, con ambas muestras, construimos una APK nueva partiendo de la aplicación legítima, pero inyectando el payload de Metasploit.

Manos a la obra.

Debemos generar la Apk maliciosa con Metasploit.

Procedemos a descargar la apk legítima, desempaquetando y descompilando con la herramienta apktool.

Posteriormente, la Apk generada con Metasploit.

Ahora copiamos los archivos descompilados correspondientes al payload, en la aplicación original descompilada. Copiando:

  • <meterpreter_apk>/smali

En el directorio:

  • <momo_apk>/smali

Cuando la Apk original vuelva a compilarse, contendrá el payload correspondiente. Hasta ahora el código del payload no se ejecutará, aún no hemos alterado el flujo de ejecución de la Apk original

Para asegurar la ejecución, necesitamos inyectar el payload en el código smali.

Primero, debemos buscar la actividad adecuada, están declaradas en el archivo “AndroidManifest.xml” de la aplicación original. Buscando el lanzador de la aplicación:

  • <action android:name=”android.intent.action.MAIN”/>
  • <category android:name=”android.intent.category.LAUNCHER”/>

El atributo Android:name  de la actividad principal de la Apk sin modificar es: Android:name=” com.immomo.momo.android.activity.WelcomeActivity”

Ahora debemos editar el código de la actividad principal de la aplicación “WelcomeActivity” ubicada en:

  • <momo_apk>/smali/com/immomo/momo/android/activity/WelcomeActivity

Una vez abierto el código correspondiente a la activity principal de la apk, procedemos a buscar la función “main” de la clase, debe cumplir con el siguiente patrón:

  • ;->onCreate(Landroid/os/Bundle;)V

En la línea inmediatamente posterior debemos incluir la invocación al payload de Metasploit, con lo siguiente:

  • invoke-static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context;)V

El aspecto que finalmente tendrán dichas instrucciones en la activity “WelcomeActivity” será:

Antes de recompilar la apk original con el payload inyectado, necesitamos establecer los permisos adecuados, para que el payload se ejecute correctamente:

Una vez finalizados los cambios anteriores, compilamos la apk con apktool.

El comando anterior brindará como resultado la Apk con todos los cambios realizados en el directorio  <momo_apk>/original/dist

Ahora debemos firmar la Apk generada (JarSigner), para que pueda ser instalada en el dispositivo.

Para este caso, utiliza el keystore por defecto de Android Studio, ubicado en <home>/.Android

Como estamos utilizando un payload del tipo meterpreter-reverse necesitamos lanzar en handler adecuado en la Ip/Dominio especificando LHOST seteado al momento de generar el payload. Una vez concluido todos los pasos anteriores, bastará con distribuir la Apk.

payload reverse meterpreter

La imagen anterior muestra que el usuario instala la aplicación en su dispositivo, el payload se ha inyectado y se ejecuta justo después de la invocación a la “activity” principal, el atacante obtendrá una sesión Meterpreter, lo más importante:

  • La Apk maliciosa conserva el funcionamiento de la Apk legítima, sin ningún tipo de interferencia o comportamiento anómalo.
  • Esto es la parte más importante, el usuario no notará lo que está pasando.

Autor: Adastra

Posts Relacionados

Comments

comments

Deja una respuesta

Tu email no será publicado. Los campos requeridos estan marcados con *
Puedes usar tags HTML y los atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">