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!
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
Y posteriormente generamos el payload deseado para el APK malicioso, exactamente igual que anteriormente hicimos.
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/
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.
Ambas APKs han sido decompiladas cada una en una carpeta distinta, podemos revisar el contenido de estas carpetas.
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
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.
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.
Lo abrimos con nuestro editor de texto preferido y buscamos la siguiente parte.
Localizadas estas líneas debemos fijarnos en el atributo de android:name dentro de la etiqueta <activity>
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.
Con nuestro editor favorito, abrimos el .smali e intentamos localizar el siguiente valor
Una vez localizado, debajo del invoke-super añadimos la siguiente línea:
invoke–static {p0}, Lcom/metasploit/stage/Payload;->start(Landroid/content/Context😉V
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.
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.»/>
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.
Una vez terminado el proceso, podemos localizar nuestro APK infectado dentro de la carpeta dist de la apk correspondiente
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
Generamos la clave privada
Y firmamos nuestro APK infectado
¡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
Vamos a instalarlo, pero antes en muestra consola de metasploit habilitamos un handler para escuchar la conexión que recibiremos.
Una vez escuchando, vamos a instalar la APK en nuestro terminal Android virtualizado.
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.
Si revisamos nuestro metasploit…¡bingo!
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!