burp iptables

Android X86 en Virtual Box: configurar proxy

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

VBOX NAT

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

 

iptables

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)

burp iptables:

 

16 Comments

  1. Valentín · jueves, 26 junio, 2014 Reply

    Eres un crack. Te quiero mucho!!!!

  2. CTone · lunes, 12 enero, 2015 Reply

    iptables not found … ahora que …

  3. CTone · martes, 13 enero, 2015 Reply

    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

    • abrazalaweb · miércoles, 14 enero, 2015 Reply

      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)

      http://blog.abrazalaweb.net/wp-content/uploads/2015/01/Captura.png

      • mnf2kx · jueves, 14 mayo, 2015 Reply

        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

  4. Maxwel Leite · miércoles, 28 enero, 2015 Reply

    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

  5. CTone · lunes, 9 febrero, 2015 Reply

    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

  6. CTone · lunes, 9 febrero, 2015 Reply

    Forgot to point out that previous version 4.3 was working smoothly with the corporate proxy using proxy droid.

  7. CTone · lunes, 9 febrero, 2015 Reply

    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

  8. CTone · lunes, 9 febrero, 2015 Reply

    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.

    • abrazalaweb · martes, 10 febrero, 2015 Reply

      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.

  9. CTone · jueves, 12 febrero, 2015 Reply

    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…)

    • abrazalaweb · viernes, 13 febrero, 2015 Reply

      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,

  10. ZerYorS · martes, 4 agosto, 2015 Reply

    Gracias pero yo solo tengo devuelto net::ERR_NAME_NOT_RESOLVED

    Intento tanto a traves de proxy Socks como Proxy Squid

  11. David · miércoles, 28 octubre, 2015 Reply

    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/

Leave a Reply

Tu dirección de correo electrónico no será publicada.