¿Cómo captura TODO el tráfico de una aplicación de Android?

12

Quiero capturar todo el tráfico de una aplicación de Android para su prueba de lápiz. ¿Cómo hago eso?

Esto es lo que ya he intentado:

Instalé la aplicación en un emulador e inicié el emulador con un http-proxy apuntando a un puerto local. El puerto local tenía ZAP corriendo en él. Puedo interceptar el tráfico del navegador pero no de la aplicación.

Bueno, puede ser que mi aplicación use https y pensé que tenía algún problema con el certificado. Así que exporté el certificado OWASP ZAP y push ed en el emulador de Android. Por supuesto, las versiones de Android > = ICS tienen sus nombres de certificado marcados con OpenSSL. Así que seguí algunas instrucciones aquí y Logré obtener el certificado de mi ZAP en mi dispositivo. Sin embargo, no puedo interceptar el tráfico.

Mi siguiente línea de pensamiento fue: Puede ser que esta aplicación esté dañada. Así que instalé las aplicaciones de Facebook, Pocket y Guardian (noticias) de la tienda de aplicaciones en el emulador e intenté interceptar su tráfico. Puedo interceptar el tráfico de Guardian pero Pocket y Facebook no pueden conectarse a Internet (al igual que mi aplicación). Sin embargo, puedo navegar por Internet desde mi navegador en el emulador.

Honestamente, estoy al final de mi ingenio. No entiendo por qué está sucediendo esto. No he hecho muchas pruebas de pluma antes, así que creo que me falta experiencia. ¿Alguien podría ayudar a esta pobre alma?

(Por supuesto, siempre puedo usar Wireshark, pero no sería capaz de responder a las solicitudes y respuestas de MiTM de la forma en que lo hacen ZAP o Burp).

EDIT:

Después de "Google-ing" como un loco, finalmente descubrí que Android no tiene soporte para proxy global (que funciona tanto para el navegador como para las aplicaciones). Puede encontrar más información aquí .

    
pregunta Pervy Sage 10.06.2014 - 16:28
fuente

7 respuestas

8

No puede interceptar el tráfico de Facebook porque utiliza la fijación SSL.

En la prueba de lápiz de una aplicación de Android puede encontrar cuatro escenarios diferentes. Los enumeraré abajo concisamente. Puede encontrar un artículo mucho más detallado aquí > > Mi blog El artículo también contiene videos a los que puedes consultar.

  1. Aplicación no SSL

Esta es la aplicación de Android más sencilla que puedes encontrar. Los juegos son ejemplos. Gran parte del tráfico pasa por http. Para interceptar el tráfico, solo tienes que dirigir la configuración del proxy wifi del dispositivo / emulador a la computadora portátil donde se ejecuta el proxy Burp / Zap.

  1. Aplicaciones que utilizan el tráfico HTTPS y se basan en las credenciales de confianza del dispositivo

Las aplicaciones como Instagram utilizan HTTPS para comunicarse con el servidor, sin embargo, dependen de las credenciales de confianza del dispositivo. Para interceptar este tráfico, puede agregar su certificado de proxy a las credenciales de confianza de su dispositivo agregando la apertura desde Settings > Security > Trusted credentials

  1. Aplicaciones que utilizan la fijación SSL

Ciertas aplicaciones pueden usar la fijación de SSL para garantizar que la aplicación sea segura, incluso en el caso de que una credencial confiable se vea comprometida. Se puede usar Android Trust Killer o Xposed Module JustTrustMe del módulo de sustrato de Cydia para omitir el control de fijación de SSL.

  1. Aplicaciones que utilizan su propio Credential Store

La aplicación de Android de Facebook usa su tienda de credenciales pwn y es por eso que no puedes interceptar el tráfico normalmente. Para evitar esto, tendrá que desarmar la aplicación con el código smali. Agregue el certificado en el formato deseado al código, vuelva a compilarlo, firme y vuelva a instalarlo. El proceso se detalla aquí > > Blog de DewHurst Security .

    
respondido por el hax 10.11.2016 - 23:36
fuente
2

Aquí están los pasos que recomendaría tomar. El paso 6 es la respuesta más directa, pero recomendaría seguir los otros pasos. Tenga en cuenta que esta respuesta es similar a otras respuestas, pero más simple en muchos pasos.

1) Configurar proxy : configure Burp Suite en modo transparente, escuche en todas las interfaces cualquier puerto que use su aplicación, como 443.

2) Instalar autoridad de certificación : exporte el certificado en el escritorio y luego haga adb push file.der /sdcard/<file>.cer (note que cambiamos el nombre de .der a .cer) luego vaya a Settings -> Security -> Install from Device Storage e instale su certificado.

3) Proxy del sistema : intente enviar tráfico mediante la modificación de la configuración del proxy de Android (en su configuración de wifi). Encender y apagar el adaptador (activar el modo avión por un segundo) puede ayudar aquí algunas veces si esto no funciona.

4) Problemas de certificados de depuración : observe la pestaña Alertas en Burp Suite para cualquier problema de SSL / TLS. Es posible que su aplicación esté utilizando un certificado codificado, la fijación de certificados o la fijación de claves públicas para evitar que utilice su CA. Puede intentar habilitar el paso a través de SSL en la pestaña de opciones de proxy para ver si esto es un problema para algunos o todos sus dominios dirigidos. Si la fijación de certificados es un problema, deberá omitir las protecciones de fijación de certificados.

5) Spoof DNS : configure /etc/dnsspoof.conf para que contenga una entrada para su dominio y / o una entrada de comodín (ejemplos a continuación):

192.168.1.101 example.com
192.168.1.101 *.com

Establezca su servidor DNS en un host que controle y ejecute el siguiente comando (dnsspoof ya está instalado en Kali):

dnsspoof -i eth0 -f /etc/dnsspoof.conf host 192.168.1.201

Si su aplicación no está obedeciendo a la configuración del proxy del sistema o al DNS, le recomendaría que utilice Wireshark para observar el comportamiento de la visión antes de continuar. Es posible que su aplicación esté utilizando un protocolo no HTTP.

6) Debug Network Traffic : ejecute su aplicación en un emulador como Genymotion, preferiblemente en modo puenteado, luego escuche en su interfaz principal y use un filtro de pantalla en su dispositivo solo ip.addr eq 192.168.1.201 .

7) Descompilar la aplicación : use dex2jar para completar la aplicación y revisar el código que produce el tráfico de red para obtener información.

d2j-dex2jar.bat "/path/to/the.apk" -o "/path/to/the/new.jar"

Abre el archivo jar con JD-GUI.

8) MITM : administre el tráfico utilizando una herramienta como ettercap. Considere usar enlace u otros proxies TCP genéricos (aquí hay uno que me gusta: dummyproxy.py ) a man-in-the-middle en el caso de que el resto de usuarios no tenga que esperar. TLS.

    
respondido por el Alex Lauerman 23.06.2017 - 16:23
fuente
1

Intente usar mitmproxy . Le permite rastrear el tráfico HTTP y HTTPS. Puede ver solicitudes y respuestas, así como capturarlas / editarlas.

    
respondido por el jonjesbuzz 10.06.2014 - 16:58
fuente
1

Hay varias formas de interceptar las aplicaciones de Android de manera confiable, salvo el uso de las directivas de línea de comandos --tcpdump y --http-proxy del emulador del SDK de Android (también accesibles en la configuración del emulador Eclipse).

Mi favorito para todas las aplicaciones móviles es utilizar un DNS blackhole , que puede automatizarse aún más con el Android Emulador SDK:

emulator -dns-server 192.168.0.2 -avd <avdname>

El tráfico, como HTTP / TLS, podría interceptarse fácilmente ejecutando Burp (tal vez como raíz) en el host comodín del DNS, aunque Burp debería configurarse para escuchar en los puertos apropiados (normalmente 80 y 443) en invisible modo. Además, ciertas comprobaciones de identificación de certificados podrían ser ignoradas por configurando Burp para hacer -hostname Certificados firmados por CA con un comodín para el dominio de nivel superior (por ejemplo, * .google.com).

Burp también se puede configurar para respuestas del servidor de captura , que pueden ser muy útiles durante la resolución de problemas.

Si desea ver los controladores de archivos junto con los controladores de protocolo de red, sugiero utilizar la herramienta strace a través de ADB. strace se incluye en el emulador de SDK de Android y se puede copiar en dispositivos con ADB o de otro tipo.

    
respondido por el atdre 10.06.2014 - 17:23
fuente
1

Hace poco puse una aplicación que no tenía soporte de proxy nativo. El desarrollador no lo había hecho intencionalmente, por lo que luego lo arregló.

Su configuración es un poco diferente, ya que usé un teléfono físico. Debería ser bastante fácil para usted hacer algo similar en su laboratorio, pero es posible que necesite un VM-guest adicional que ejecute linux, si no lo está utilizando como sistema operativo host.

LoquehiceparainterceptareltráficofueaNATdedestino,todoeltráficoenlospuertos80y443amiproxydeataque.Enmiconfiguración,usounpuntodeaccesoinalámbricoalqueseconectaelteléfono.

Estaconfiguracióndeberíafuncionarindependientementedesihaconfiguradolaconfiguracióndelproxyono.

  • GenereeinstaleelcertificadodeCAparaelproxydeataqueenelteléfono.
  • EnsumáquinaLinux/iptables-machine,configureelreenvíotransparente(destinoNAT):
      

    iptables-tnat-APREROUTING-iwlan0-ptcp-mmultipuerto--dports80,443-jDNAT--toataque-proxy-ip:8080

  • Instaleunpuntodeaccesowifiyconfigurelapuertadeenlacepredeterminadaparaquesealamáquinaiptables(KaliLinux/192.168.0.100enelejemplo)

Ahora,cuandoconectaelteléfonoalpuntodeaccesoinalámbrico,todoeltráficowebdeberedirigirseasuproxydeataque.

Notas:

UséBurp,asíquetuvequehabilitarelsoportedeproxytransparente.Sellama"Soporte de proxy invisible" en Burp.

    
respondido por el Dog eat cat world 13.10.2016 - 10:03
fuente
0

Conecte su dispositivo Android y su plataforma de pruebas de penetración a una LAN. Lleve a cabo un ataque de falsificación / veneno ARP contra el dispositivo Android utilizando ettercap (o su herramienta favorita de suplantación de arp). Esto hará que todos los paquetes desde y hacia el dispositivo Android pasen primero a través de su plataforma de prueba de penetración.

ettercap -T -w dump -M ARP /xx.xx.xx.xx/ // resultado:

Esto se volcará en la pantalla, pero puedes configurarlo para volcarlo en un archivo y luego analizar los paquetes usando Wireshark.

Ettercap

Caín

    
respondido por el ap288 12.07.2014 - 01:36
fuente
0

Así es como capturo todo el tráfico de mi teléfono Android.

1) Tengo un teléfono Android rooteado.
2) Instalar el instalador de certificados FS y luego importé el certificado burp en mi teléfono.
3) Conectar mi teléfono y computadora portátil en la misma red WiFi.
4) Configure el proxy en el teléfono de manera que el burpsuite presente en mi computadora portátil escuche todo el tráfico que llega a través de mi teléfono Android.

    
respondido por el one 13.10.2016 - 09:33
fuente

Lea otras preguntas en las etiquetas