915 792 426 - 689 888 537

Blog

ACTUALIDAD
Troyanizando dispositivos Android – Inyección manual
11 Oct 2017

Troyanizando dispositivos Android – Inyección manual

Troyanizando dispositivos Android – Inyección manual

En nuestra entrada anterior, “Troyanizando dispositivos Android”, vimos como podíamos generar un APK malicioso con Metasploit gracias a msfvenom. Ya vimos su enorme potencial pero la aplicación que instalábamos en el dispositivo es muy poco “disimulada” y veíamos que nos instalaba una aplicación sin icono llamada Main Activity, algo realmente visible y sospechoso de cara a nuestra víctima. Hoy seguiremos con Troyanizando dispositivos Android – Inyección manual, ¡prepárate!

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Hoy, con nuestro post “Troyanizando dispositivos Android – Inyección manual“, vamos a aprender como inyectar ese código malicioso en una APK legítima para que nuestra víctima no sospeche del verdadero funcionamiento de la APK.

Para ello, usaremos una APK legítima de CCleaner y herramientas como apktool y msfvenom.

 

Generación del payload

Como veíamos anteriormente, vamos a generar con la herramienta msfvenom el payload reverso con meterpreter para Android.

En primer lugar, comprobamos nuestra IP local

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Y posteriormente generamos el payload deseado para el APK malicioso, exactamente igual que anteriormente hicimos.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Además de generar el APK con el payload, vamos a descargar una aplicación legítima que infectaremos durante este proceso, voy a elegir la aplicación de CCleaner y voy a descargar su APK.

Esto podemos hacerlo desde la web https://apkpure.com/

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Decompilar los APKS con apktool

Teniendo los dos APKS de manera local, nuestro siguiente paso será decompilar ambos. Para ello vamos a utilizar la herramienta apktool. Esta herramienta decompila los apks y hace más “legible” el código, que almacena en ficheros con extensión .smali , además de extraer los ficheros .xml.

Vamos a comenzar el proceso de decompilado, para ello ejecutaremos apktool de la siguiente manera.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel
Ambas APKs han sido decompiladas cada una en una carpeta distinta, podemos revisar el contenido de estas carpetas.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Copiado de archivos contenedores del payload

El próximo paso es copiar esos archivos generados por apktool, los cuales contienen el código del payload generado por msfvenom, a las carpetas generadas de la apk de CCleaner.

Esos archivos contenedores del payload se encuentran en la carpeta /payload/smali/com/metasploit/stage

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Copiamos el archivo Payload.smali dentro de la carpeta de CCleaner, carpeta que debemos crear para que coincida con la ruta de la apk del payload, de la siguiente forma.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Inyectando el payload dentro del Manifest

Tenemos el código malicioso dentro de la APK legitima, pero esto no significa que si generamos el APK el payload va a ejecutarse. De hecho, vamos a hacer que esto sea así inyectando un hook dentro de la actividad original de inicio, la MainActivity, ¿y que es un hook?

En este caso nos referimos a hook a la inyección que vamos a hacer para que cuando se inicie la app original llame a nuestro código payload, y lo ejecute por nosotros de una manera totalmente invisible para el usuario final.

Para ello, vamos a revisar el archivo AndroidManifest.xml de la apk original, tal y como vamos a mostrar a continuación.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Lo abrimos con nuestro editor de texto preferido y buscamos la siguiente parte.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Localizadas estas líneas debemos fijarnos en el atributo de android:name dentro de la etiqueta <activity>

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Esta sería la actividad que inicia la aplicación en una primera instancia, por lo que tendríamos que buscar el MainActivity.smali dentro de los archivos generados por apktool para modificarlo, la ruta nos la da el valor del atributo que acabamos de revisar.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Con nuestro editor favorito, abrimos el .smali e intentamos localizar el siguiente valor

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Una vez localizado, debajo del invoke-super añadimos la siguiente línea:

invokestatic {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context😉V

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

El siguiente paso es añadir los permisos adicionales necesarios para que el payload realice correctamente su trabajo, esos permisos los debemos añadir en el fichero que visitamos antes, el AndroidManifest.xml

Por defecto, nuestra aplicación legítima elegida ya tendrá ciertos permisos establecidos en la siguiente parte del manifiesto.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

En este caso faltaría permisos de realización de llamadas, cambiar el estado del wifi, enviar sms, recibir sms…

Añadimos todo esto con las siguientes líneas.

<uses-permission android:name=“android.permission.CHANGE_WIFI_STATE.”/>

<uses-permission android:name=“android.permission.ACCESS_COURSE_LOCATION.”/>

<uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION.”/>

<uses-permission android:name=“android.permission.SEND_SMS.”/>

<uses-permission android:name=“android.permission.RECEIVE_SMS.”/>

<uses-permission android:name=“android.permission.RECORD_AUDIO.”/>

<uses-permission android:name=“android.permission.CALL_PHONE.”/>

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Para conocer más sobre los permisos de Android en las aplicaciones podéis visitar el siguiente enlace. Continuamos Troyanizando dispositivos Android – Inyección manual.

Recompilando la aplicación original

Llegados a este punto, el siguiente paso es generar nuestro APK legítimo con el payload inyectado. Para ello acudimos de nuevo a nuestra herramienta apktool.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Una vez terminado el proceso, podemos localizar nuestro APK infectado dentro de la carpeta dist de la apk correspondiente

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Una vez generado vamos a firmar el APK ya que Android requiere que todas las apps estén firmadas digitalmente para identificar al autor de la aplicación, igualmente no es necesario que sea firmada por una autoridad certificadora, podemos utilizar certificados autofirmados.

Para ello usaremos herramientas como keytool y jarsigner.

Generamos el keystore

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Generamos la clave privada

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Y firmamos nuestro APK infectado

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

¡Listo! Tenemos nuestro APK legítimo infectado con el payload que hemos generado, llega la hora de probar si realmente funciona.

 

Fase de explotación

Con la APK maliciosa en nuestro poder, ya podemos pasar a la acción, en mi caso voy a infectar un Android virtual para comprobar la eficacia de nuestro CCleaner personalizado

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel
Vamos a instalarlo, pero antes en muestra consola de metasploit habilitamos un handler para escuchar la conexión que recibiremos.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Una vez escuchando, vamos a instalar la APK en nuestro terminal Android virtualizado.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel
Vamos a ejecutarlo y comprobamos que su funcionamiento para el usuario es totalmente legítimo, una aplicación CCleaner haciendo sus funciones con total normalidad.

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Si revisamos nuestro metasploit…¡bingo!

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Troyanizando dispositivos Android – Inyección manual. The Security Sentinel

Esperamos que os resulte interesante el proceso de infección de APKs legítimas para obtener nuestras sesiones meterpreter o Troyanizando dispositivos Android – Inyección manual. Si deseas seguir viendo pequeños tutoriales, micor talleres y otras técnicas en hacking, no olvides echar un vistazo a nuestro blog.

¡Hasta la próxima!