Usar un Proxy para conectar Android en Virtual Box a Internet y analizar el tráfico
Usar el emulador AVD de android se hace pesado porque es demasiado lento. Gracias al proyecto para portar Android a la plataforma x86, para que funcione en ordenadores, http://www.android-x86.org/ , se puede usar un entorno virtual (VirtualBox) para ejecutar Android de una manera mucho más rápida.
Configurar la Red con un PROXY
Si nuestro entorno de Red se conecta a internet a través de un proxy, o bien pensando en el desarrollo y análisis de aplicaciones Android, para lo que es muy útil usar un Proxy que hace de intermediario entre el emulador de Android e Internet, tenemos que configurar el entorno virtual (VirtualBox y Android)
(estoy usando VirtualBox 4.3.12 para windows y Android-x86 4.4-RC2 (KitKat-x86) 2014/05/20
Usaré como Proxy Burp Suite, y antes de empexzar con la máquina virtual lo lanzamos….
Configuración de Red en Virtual Box: NAT, y adaptador PCnet-FAST III
Con esto la máquina virtual de Android tendrá una configuración correcta de RED (Ip, DNS, etc). Lo único que faltará para la conexión a internet será el Proxy.
En internet aparecen multitud de maneras para definir el proxy en la máquina virtual de Android, abrir un terminal y ejecutar los comandos #setprop net.gpr.http-proxy x.x.x.x:8080, otros similares,o modificar la base de datos de configuración del sistema (con sqlite3). Ninguna de ellas funciona...
La solución es usar iptables para redirigir todo el tráfico saliente a nuestro proxy (en esta prueba el propio PC host que está ejecutando el Burp en el puerto 8080)
Abrimos el terminal en Android (ya tiene instalado por defecto una aplicación de Terminal Emulator), nos hacemos superusuarios y ejecutamos el comando de iptables para redirigir la salida al proxy (he borrado la ip de mi máquina)
iptables -t nat -A OUTPUT -p tcp -j DNAT --to-destination x.x.x.x:8080
Así, todo funciona correctamente, muestro capturas del navegador en Android y del Burp Proxy capturándo las peticiones, no sólo las del navegador (que no avanza porqe el Burp está en modo intercep, y para las peticiones)
Eres un crack. Te quiero mucho!!!!
iptables not found … ahora que …
Es muy raro, iptables es una utilidad linux que está en Android. Comprueba la iso de Androidx86.
Gracias.
He regenerado la maquina virtual y ahora si tengo iptables 😉
Con android x86 4.3 me funcionaron los proxies a la primera usando proxydroid. Mi problema es con la 44r2, que no lo consigo de forma alguna.
He visto que proxydroid deja las iptables así (tanto en la 4.3 como en la 44r2):
Return tcp — anywhere proxy.ip
Redirect tcp — anywhere anywhere tcp:dpt www redir ports 8123
» » » » » » : » https redir ports 8124
» » » » » » : » 5228 redir ports 8124
Tu propuesta no me funka en 44r2 (tampoco el proxydroid …)…
¿podrias explorer con la 44r2 a ver si reproduces el fallo o la solucion?
Gracias de Nuevo
CT
Hola,
Me he descargado la iso del Android X86 4.4.r2 (1 de enero de 2015), por alguna razón no funciona bien en mi PC con VirtualBox (no consigue arrancar el entorno gráfico, sólo veo la parte de seleccionar idioma y wifi, luego se queda negro) algún problema de drivers gráficos. Sin embargo, el acceso a la terminal de comandos sí funciona (Alt+F1) y he ejecutado el comando allí y todo sale de acuerdo al post, es decir el tráfico pasa al proxy. (Nada más ejecutar el comando el proxy ha detectado una petición, también he hecho más pruebas con wget y funciona igual)
Me paso algo similar, lo solucione asi:
1- deshabilita la red de virtualbox (deja tu andriod sin tarjetas de red)
2- inicia virtual box
3- seleccionas el idioma
4- le das SKIP o ignorar a todos los mensaje que muestre en adelante
>una vez que se muestre la Pantalla Home de Android:
– apaga la maquina virtual.
– reactiva la Red de virtualbox
– reinicia VBox
This works for me:
iptables -t nat -A OUTPUT -p tcp -o lo –dport 80 -j DNAT –to publicip:3128
iptables -t nat -A OUTPUT -p tcp -o lo –dport 443 -j DNAT –to publicip:3128
http://stackoverflow.com/a/20240713/1291546
Hi again!
I was able to set up the abrazalaweb rule, but needed to clean up iptables (iptables -t nat -F) . I launched the browser and got back an answer: illegal connection …. (page footer implying that the answer is coming from the proxy).
I wonder if this has to do with the proxy being or not transparent as here indicated:
https://groups.google.com/forum/#!topic/android-x86/XfIRyHQ5nmk
I cannot run Burp as I have no admin control of the pc. I see that the virtual machine does reach the proxy machine as ping works ok.
Any further idea?
Thanks in advance.
CT
Forgot to point out that previous version 4.3 was working smoothly with the corporate proxy using proxy droid.
Working VM 43
iptables -L after proxy droid ON: snapshot posted at
http://www.imagesup.net/?di=1514235071785
iptables -L after proxy droid OFF: anything within Chain OUTPUT is deleted.
Perhaps could you direct me how to get the same iptables config manually so that I try under 44r2?
(I tried to learn iptables but I do not feel myself able …)
(by the way, I am unsure if I said that I cannot run Burp as I lack admin level in the host machine – I am allowed to run gest VMs in full admin level)
Thanks in advance
CTone
Sorry, I am somewhat unfocused. Perhaps you could joint together/cut-paste all today posts …
I forgot to say that in the posted imaged configuration I was unable to find proxy port, that is set up with proxy droid to 3128.
Thanks.
Hola,
revisa la configuración del proxy Burp y de las iptables. Te adjunto captura de las mías, (la ip que introduzco en iptables es la de mi equipo, el resultado de ipconfig, del tipo 192.168.1.20, p. ej)
De esta manera el Burp Proxy captura los paquetes. No obstante, sigo sin poder arrancar el entorno gráfico de Android x86 en mi portátil, y por tanto no sé si al navegar por internet da algún error. Por otra parte, si te estás conectando a través de un poroxy de empresa o similar a internet, tienes que configurar Burp para que lo use.
No puedo usar el Burp porque requiere privilegios de Admin para enganchar con el stack IP.
El área de concordia entre las necesidades de seguridad corporativa, informática y los usuarios es facilitar el uso de maquinas virtuales en los puestos de usuario, así los usuarios pueden efectuar pruebas en las maquinas virtuales.
Pero el puesto esta securizado, no hay derechos de administrador y la red se usa, bajo un proxy.
Lo raro es que la x-86 43 va pero la 44r2 no. Y que no tengo suficientes conocimientos de iptables como para poner la configuracion que va ok en la 43 en la 44r2 (por ello te puse la imagen de la 43 para ver si me pudieras indicar algo mas…)
Vale,
las reglas iptables que tienes que usar para reproducir la tabla que tienes en Android x86 4.3 son las siguientes (por orden)
iptables -t nat -A OUTPUT -p tcp -j RETURN --destination xxxxx.es
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8123
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 8124
iptables -t nat -A OUTPUT -p tcp --dport 5288 -j REDIRECT --to-ports 8124
Espero que te funcione,
Gracias pero yo solo tengo devuelto net::ERR_NAME_NOT_RESOLVED
Intento tanto a traves de proxy Socks como Proxy Squid
Hola chicos,
He intentado lo que dice en el post sin éxito :/. He metido el proxy y todo correctamente pero como es un proxy dedicado no me pide autentificación y no me puedo conectar (se necesita user y password para acceder a internet).
Os adjunto los screenshots por si sabéis como solucionar esto =)
Antes de introducir el proxy:
http://postimg.org/image/xtsm1p68j/
Introduciendo el proxy:
http://postimg.org/image/qpassnyz7/
Después de introduci el proxy:
http://postimg.org/image/g6at3hwb7/
Llevaba dos horas intentandolo y al final siguiendo los pasos, solucionado, pero ahora si apago y enciendo el movil tengo que volver a realizar todo de cero, ¿se me habra roto algo del móvil?, muchas gracias y cordial saludo.
Hola, al introducir los comandos «a mano», al reiniciar esa configuración se pierde. Será necesario hacer un script con los comandos que se cargue en el arranque.