Modificando los scripts de msfvenom para Android

Share this…

En ocasiones, desde el lado de la investigación usamos componentes maliciosos en nuestros entornos de prueba, como por ejemplo un APK malicioso creado específicamente. Para hacerlo, se requiere algo de personalización: modificar el icono de la aplicación, el nombre de la aplicación, la lista de permisos peticionados, alguna funcionalidad que posee un bug o que necesita ajustarse a determinada plataforma o dispositivo, entre otras cosas.

Cuando se trata de una operación de única vez, uno puede arreglárselas en el momento con una consola y algunos comandos, pero cuando se trata de una tarea repetitiva, la automatización se vuelve necesaria.

En particular, me encontraba preparando una demostración que incluía la generación de un APK malicioso con msfvenom para generar una conexión TCP inversa. Según el escenario planteado, era fundamental que el icono y el nombre de la aplicación concordasen con los de la aplicación explotada. Para complicar las cosas, la IP de conexión no podía ser estática, por lo que necesitaría generar el APK malicioso una y otra vez antes de cada evento.

Sé que existen muchas aplicaciones que realizan este tipo de cambios sobre un APK, pero usualmente están pensadas para Windows. También podría haber escrito un script con una decena de líneas que, luego de generar el payload, lo modificasen a elección. No obstante, la curiosidad y la necesidad de optimizar el proceso me inclinaron hacia una tercera opción: editar los archivos de msfvenom para generar el APK que necesitaba de manera automática.

Dentro de la carpeta de metasploit, buscando archivos bajo el nombre “android”, entontré las dos rutas que necesitaba y que pueden verse en la siguiente captura de pantalla:

En la carpeta /usr/share/metasploit-framework/lib/msf/core/payload/android encontraremos los scripts responsables de crear el APK malicioso. El archivo apk.rb es el responsable de embeber el payload dentro de otro APK, si es que se ha utilizado la opción -x al emitir el comando.

Por su parte, el archivo android.rb crea y firma el payload utilizando tres archivos compilados: AndroidManifest.xml, classes.dex y resources.arsc, que se encuentran en la segunda ruta, /usr/share/metasploit-framework/vendor/bundle/ruby/2.3.0/gems/metasploit-payloads-1.2.19/data/android/apk. Por tanto, si modificamos estos archivos compilados, los cambios se incluirán en el APK final.

Para descompilar estos archivos, la forma más sencilla es empaquetarlos a todos en un archivo ZIP y luego cambiar la extensión a APK. Después, podemos utilizar apktool como lo haríamos con cualquier otra aplicación y realizar los cambios necesarios.

apktool -d -f -o /ruta/apk/descompilado /ruta/apk.apk

Ingresa a la carpeta donde has descompilado los archivos y modifícalos como gustes. Para solo cambiar el icono y el nombre, necesitarás realizar los cambios que se enumeran a continuación:

  1. Añadir el tag android:icon="@drawable/ic_launcher" a la etiqueta application dentro del Android Manifest.

  1. Modificar el nombre de la aplicación en el archivo strings.xml dentro de /res/values.

  1. Incluir en /res las carpetas drawable necesarias con los nuevos iconos de aplicación. Para generar los iconos puedes utilizar este sitio.

Si lo deseas, puedes también editar los archivos smali o generar un DEX con funcionalidad personalizada. Cuando termines, compila nuevamente la aplicación. No será necesario que la firmes.

apktool b -o /ruta/nuevo.apk /ruta/apk/descompilado

Ahora convierte ese APK en un ZIP, cópialo en /usr/share/metasploit-framework/vendor/bundle/ruby/2.3.0/gems/metasploit-payloads-1.2.19/data/android/apk/ y extrae los archivos allí.

Lo único que resta es incluir la ruta a los archivos de iconos –y demás recursos que hayas agregado– en el script android.rb. Para ello, deberás modificar la variable files de la función generate_jar para que se vea de la siguiente manera:

¡Listo! Ya puedes generar automáticamente tu payload personalizado con msfvenom.

 Fuente:https://www.welivesecurity.com/la-es/2017/05/05/scripts-de-msfvenom-android/