Backdooring de APK’s en Android mediante Spade

Previamente habia tocado el tema de “embedding malware”,usando otras herramientas o Tecnicas,  alguna vez habrán usado otros tipos de “binders” para lograr hacer que un payload, script o código malicioso trabaje en conjunto con un programa o aplicación legítima, consiguiendo así la infección  que buscábamos en un sistema. Sin embargo el proceso anterior resulta laborioso por todos los detalles que hay que tomar en cuenta, y más si se trata de Apk’s para Android, en donde hay que añadir certificados de instalación y private Keys para darle más autenticidad  a esta aplicación.

Aquí aparece Spade, una herramienta que nos permite realizar la automatización de esta tarea,  usando algo de Reversing y  Metasploit.

Lo que necesitarás para este ataque.

  • Una Distribución para pentesting actualizada, recomiendo Parrot 3.3 o 3.4, y Kali 2016.2, ya que las anteriores puede que no cuenten con las dependencias que usa Spade
  • Un dispositivo Android al que infectar en el mismo segmento de red que te encuentres tú.

Obtención de Spade.

Al igual que con otras herramientas que he demostrado, Spade no viene precargada en las distros para pentesting más populares, por lo que habrá que descargarla e instalarla por nuestra cuenta.
Entra a este URL para ver más detalles: https://github.com/suraj-root/spade

Como es de saberse, para tenerlo en tu distro puedes bajarlo mediante el comando “git clone”, ejecutando: git clone https://github.com/suraj-root/spade.git

1

Como el vector de ataque será la ejecución de un payload que trabajará en conjunto con Metasploit, lo primero que se tendrá que hacer  es iniciar el servicio de la base de datos del Framework, está siendo PostgreSQL debe mandarse a llamar el servicio correspondiente. En las últimas versiones de Parrot, la formas de iniciarlo han cambiado y por ende la sintaxis, una forma diferente de hacerlo es con el comando “systemctl”, ejecutándolo e esta forma; “systemctl start postgresql”:

2

Dejando esto listo, ahora tenemos que revisar o actualizar nuestra version de Apktool, ya que esta debe contar con  las librerías que usará “Spade”, para asi hacer un Debugging y Recompiling  correcto de la Aplicación legítima, esto lo resolvemos con el comando “apt-get Install apktool”.

Ya descargado navegamos a su directorio que es “/root/spade/”, al mostrar el contenido con el comando “ls” notaremos que se encuentra un archivo con extensión “.pem”, otro con “.key”, estos serán parte del proceso de automatización del “embedder” a agregarlos a nuestra aplicación final.

Haciendo un poco a un lado lo teórico, establecemos una configuracion con chmod +x spade .py y después ejecutamos el script de Spade indicando al último el directorio donde reside la APK sobre la que trabajará, esta puede ser cualquier APK, ya sea que tú la programes o que la consigas de algún  repertorio oficial de estas, para esto ejecutamos el siguiente comando:

“python ./spade.py /root/Downloads/PasswordRecoveryMaster3.7.apk”

3

Después de la ejecución veremos unos detalles de inicio sobre la APK y un listado de Payloads, de estas 6 opciones que nos arroja Spade son las que podremos “Bindear” o “Mezclar” con la aplicación, en este caso se usará la opción 3, para que al momento de la instalación de la APK final obtengamos una shell inversa sobre el movil.

Para esta opción se usaran solo 2 parámetros de configuracion; la dirección IP y puerto TCP en donde se creará este canal de comunicación con el movil, estos 2 serán tu IP y el puerto de tu elección, al hacer la selección comenzará el proceso de Debugging por parte de Apktool, esta nos permite hacer reversing a los archivos .apk para android, asi decodificándolas para posteriormente trabajar con ellas, lo que se consigue con esta herramienta es descompilar la APK legítima para poder hacer modificaciones, como lo es el ingreso/remplazo de scripts, cambios de “meta-paquetes”, adición/inyección de payloads, adición o cambio de permisos en el AndroidManifest.xml etc:

5

Haremos uso del certificado de instalación (.PEM)  y una llave privada (.pk8) “private key” para aumentar la legitimidad del software, esto funciona de la siguiente manera: Al desarrollar una App de android “legitima” se recomienda que mediante un certificado sea firmada de forma digital antes de ser instalada, cuando se firma un Apk (signing), la herramienta que realiza esto concede un certificado con su respectiva llave (key), este certificado sirve como una huella digital o “Fingerprint” que asocia de forma univoca a llave (key) con la Apk.

Para conseguir esto haremos uso de un certificado, una llave privada (private key), signapk, que es una herramienta para realizar estos “Fingerprints”

67

8

Al acabar de hacer los cambios necesarios, incluida la agregación del certificado .pem y el private key, Spade de nuevo hará uso de Apktool para reconstruir la Apk a la que hizo reversing, terminando así los últimos pasos.

9

Al finalizar obtendremos una nueva Apk, con diferente nombre (-Final.apk), está será la que ingresaremos al dispositivo Android Victima, algo que no está de más mencionar es…

¿Por qué no simplemente crear un payload mediante msfvenom?  

El framework de Metasploit contiene una extensa variedad de herramientas que proveen a un atacante múltiples formas de perjudicar una red o equipo, entre ellas se encuentra msfpayload. Esta nos permite generar payloads, ejecutables, shellcodes y demás, esta herramienta nos permite crear un binario que lanza una shell inversa que permite a un atacante establecer una conexión remota con el dispositivo víctima, este binario es de tipo “standalone” que funcionará como un payload malicioso.

Bien, aunque msfvenom sigue siendo bastante útil si se usa de forma correcta, este no proporciona todas las características de legitimidad y autenticidad como en este método, además de que pasa más desapercibido ante los sistemas de seguridad que traen consigo los dispositivos Android, como pueden ser Antivirus, firewalls, Debuggers, etc, antes de continuar haremos una prueba ante una plataforma de Scanners online entre un payload creado con MSFVENOM y esta Apk recién creada.

10

Para esto, hice un payload mediante este módulo de Metasploit y lo comparé con la Apk Final creada por Spade, ambos fueron cargados a la plataforma de escaneo, en este caso fue https://nodistribute.com (Mi preferida), estos fueron los resultados de cada 1:

Payload de Msfvenom:

11

Apk final con Spade:

12

Bien ya sabemos cuál fue uno de las principales mejoras en cuanto al uso de Spade, lo que falta y lo que nos interesa es la explotación del dispositivo. Spade al final el proceso de Reversing y Compiling, nos preguntará si queremos trabajar con un Listener de conexiones desde ahí mismo o no.

Le diremos que no, ¿Por qué? Es común que desde la herramienta lleves a cabo la explotación del host objetivo, sin embargo, hacerlo por este medio muchas veces  resulta  inestable y las conexiones se caen o “mueren” (Session Died).

Para esto iniciaremos a Metasploit y desde ahí configuraremos nuestro payload de tipo “Stager”, que será el que establecerá el canal de comunicación con el Payload de tipo “Staged” (Apk), en Metasploit ingresaremos los datos anteriores en Spade:

13

Teniendo esto configurado, ejecutamos el comando “exploit” para poner a trabajar el Listener, luego hacemos llegar la aplicación maliciosa al movil víctima, consiguiendo la instalación e inicialización de esta App, al conseguir todo esto, dentro de Metasploit notaremos que se crea una comunicación Client/server (Atacante/Movil), arrojándonos al final una Sesion Meterpreter sobre este movil:

1415

Dentro de esta, podemos ejecutar el comando “help” para ver las distintas acciones interactivas que se pueden hacer desde aquí:

Trabajando con Meterpreter.

Ya obtenida la sesión, podemos hacer uso de comandos que nos permiten obtener información útil acerca del sistema comprometido asi como también realizar tareas sobre el sistema:

  • Mostrar lista de procesos que corren actualmente en el sistema:

17

  • Usando el comando ifconfig, se muestra el status actual de la red a la que está conectado el dispositivo, incluyendo información acerca de demás conexiones o dispositivos18
  • Dentro de la lista de comandos, con ayuda de unos podemos hacer uso de las cámaras que disponga el dispositivo, ya sea frontal, trasera o ambas. Usaremos el comandos “webcams_list”, para ver las cámaras disponibles en el dispositivos y “webcam_snap –h” para ver el modo de uso.

19

  • Configurando los parámetros adecuados para la toma de fotografía, el comando al ejecutarlo, tomará la fotografía a discreción, la guardará, y la descargará en nuestro directorio “/root”, mostrándola enseguida.

20

21

Al ser tomada la fotografía, aparecen datos relevantes acerca de la imagen, como son: tipo, tamaño, ubicación etc. Junto con metadatos, en donde nos muestra datos acerca de la información proporcionada

  • Volcado de información almacenada: Como es de saberse, los teléfonos guardan información en la memoria local o extraíble, ya sean contactos, conversaciones mensajes y demás, una forma de obtener esto es mediante un dumpeo, que mediante un volcado saca la información que está dentro de la memoria, en este caso, haremos un volcado de los contactos guardados, usando el comando dump_contacts:

 22   23

Como se demostró, Spade fue de gran utilidad para conseguir hacer que un payload o código malicioso trabaje en conjunto con alguna otra aplicación o software, otorgándole la misma autenticidad y buen visto que cualquier otra app que se ingrese al teléfono, una vez infectado el dispositivo de la víctima, se puede controlar de forma remota, sin que el usuario note algo extraño en su equipo, puesto a que todas las acciones llevadas a cabo son a discreción ejecutándose a bajo nivel en segundo plano.

Lejos de obtener registros e imágenes, se pueden realizar otras acciones de  ataque como cargar demás malware para que realicen tareas en específico, desde robo de archivos, hasta causar acciones verdaderamente perjudiciales, inclusive monitorear en su totalidad y en tiempo real a la víctima.

Todo el contenido de este escrito fue hecho con fines educativos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *