Hace poco respondí en detalle a la pregunta: ¿Cómo configurar el proxy HTTPS de Wi-Fi, no HTTP, a través de adb shell? , tratando de aclarar algunas confusiones que muchos de nosotros (incluyéndome a mí) tenemos con respecto a cómo funciona el proxy.
¿SU APLICACIÓN GENERA TRÁFICO HTTP?
Por lo general, el apoderamiento significa http
proxy, pero no todo el tráfico generado por cada aplicación es http
- un protocolo de capa 7 en Modelo OSI . Los clientes de correo electrónico, por ejemplo, utilizan IMAP
/ POP3
/ SMTP
(L6/7) que no funcionan con los protocolos http GET
en lugar de requerir http CONNECT
apoderados. Estos últimos sólo pueden reenviar TCP
el tráfico, para UDP
al menos SOCKS5
se necesita un proxy que opere en L5. Los DNS y sobre todo los juegos y las aplicaciones de VoIP generan tráfico UDP, por lo que no funcionarán con http
de los proxies en absoluto. ping
por ejemplo, utiliza ICMP
(en L3) que no puede ser encapsulado en TCP o UDP, por lo que no funcionará también con SOCKS y requiere VPN.
Ver más detalles en ¿Por qué el proxy configurado en Android no funciona cuando se usa como hotspot?
¿FUNCIONA EL PROXY HTTP CON TODAS LAS APLICACIONES?
El proxy no está pensado para ser configurado en todo el sistema, o en otras palabras, no puedes forzar a todas las aplicaciones a usar el mismo proxy que has configurado en los Ajustes. En cambio, se supone que las aplicaciones deben hacer que el proxy http
conexiones si lo desean. Los sistemas operativos proporcionan librerías proxy-aware (para http
) como parte de los SDK para que los desarrolladores no tengan que ocuparse de las cosas relacionadas con el proxy por separado. Estas aplicaciones Android respetan la configuración del proxy en todo el sistema (pero pueden volver al modo sin proxy si éste falla por alguna razón).
Otros sistemas operativos también utilizan enfoques similares para proporcionar la configuración del proxy en todo el sistema a través de algún menú de configuración de la interfaz gráfica de usuario o utilizando variables de entorno en la CLI. Los navegadores y algunas otras aplicaciones como los clientes de correo electrónico suelen tener su propia configuración para establecer el proxy. Sin embargo, si la aplicación/programa no es compatible con el proxy, no respetará ninguna de las configuraciones del proxy. Es por eso que cuando se configura el proxy Wi-Fi se advierte:
"El proxy HTTP es utilizado por el navegador pero no puede ser utilizado por las otras apps".
Lo mismo ocurre con el proxy configurado a través del archivo PAC o en los APN (datos móviles) o el proxy global (destinado a los dispositivos gestionados).
Pasando a sus preguntas...
Mientras uso el navegador en mi dispositivo Android puedo ver las peticiones registradas en Fiddler
...
Sin embargo, al utilizar ciertas aplicaciones no veo que se registren solicitudes
El guía vinculado en la pregunta sugiere configurar los ajustes WiFi de Android para utilizar el proxy. Como se ha explicado anteriormente, el navegador sería proxy-aware, las "ciertas aplicaciones" no lo son.
Quiero ser capaz de analizar las solicitudes enviadas entre una aplicación en mi teléfono que controla un termostato inalámbrico conectado a mi LAN a través de WiFi.
- Asegúrese de que su aplicación en cuestión está generando
http
tráfico a capturar mientras se olfatea en el proxy. De lo contrario, utilice algo de nivel inferior -por ejemplo, proxy SOCKS o VPN- para otros protocolos.
- Asegúrese de que la aplicación respeta la normativa de Android configuración global del proxy al hacer
http
conexiones. En caso de https
la aplicación debería utilizar CONNECT
en lugar de GET
.
-
Si la aplicación no es proxy-aware, usted necesita para hacer cumplir el proxy en el teléfono y (en caso de https
) hacen la interceptación SSL/TLS forzada/transparente en el proxy.
Aplicación de la delegación es posible por diferentes métodos, por ejemplo utilizando el túnel SOCKS y/o redirigir el tráfico hacia un servidor proxy utilizando algún enfoque de capa 2/3 como VPN ( tun2socks
/ tun2http
) o iptables
( DNAT
). Los módulos Xposed como Inspección también puede imponer el proxy por aplicación enganchándose a las API.
Otro enfoque es utilizar un host local (preferiblemente un PC con Linux) como puerta de enlace por defecto y configurar allí un proxy para interceptar el tráfico de cualquier host de la red local. De esta manera no es necesario configurar el proxy en el teléfono. También es posible configurar una herramienta de análisis de paquetes como Wireshark en lugar del proxy en la red local para interceptar el tráfico.
¿SU APLICACIÓN UTILIZA HTTP SEGURO (HTTPS)?
- Si el propósito del proxy es el DPI, el registro, el escaneo antivirus, el bloqueo de contenidos, el filtrado o la adaptación, es necesario hacer bumping SSL / MITM en el servidor proxy.
- MITM requiere añadir root del proxy Certificado SSL al almacén de credenciales del dispositivo (o la aplicación debería poder ignorar los errores de certificados no válidos). Pero desde Android 7, CAs añadidas por el usuario (como se sugiere en la guía enlazada) son no más confianza para establecer conexiones seguras. Por lo tanto, es necesario añadir el certificado root a
/system/etc/security/cacerts
(requiere un teléfono rooteado). "Pero los desarrolladores de aplicaciones pueden elegir que sus aplicaciones funcionen con certificados CA añadidos manualmente". ( 1 )
- Si la aplicación utiliza su propio almacén de credenciales de confianza en lugar del proporcionado por el sistema operativo, es necesario añadir la CA root del proxy a la lista de CAs mantenidas por la aplicación (si es posible).
- Si la aplicación utiliza Fijación SSL (como el Twitter ), no confiará en ninguna autoridad intermedia excepto en su propia CA root autofirmada. Usted puede tratar de desactivar SSL Pinning tomando el control de las APIs relacionadas. Módulo Xposed SSLUnpinning puede desactivar la fijación de SSL para JSSE, OkHttp y Apache
http
bibliotecas de clientes. Pero si la aplicación utiliza algunas otras bibliotecas/APIs, usted está de nuevo fuera de suerte.
0 votos
¡Hola y bienvenido a Android.SE! Sugiere que la configuración para que el dispositivo Android. utilizar Fiddler falló. ¿No es así?
0 votos
@0xC0000022L - bueno no del todo porque algunos tipos de tráfico fueron capturados y otros no. Mi pregunta es ¿por qué?
0 votos
@Karl entonces tú Necesito para calificar su declaración En mi caso la aplicación que estoy usando es capaz de recuperar información a través de la red sin problemas, pero no puedo ver las peticiones que se hacen en Fiddler. Porque la red es un superconjunto de HTTP y este último suele ser el único tipo de tráfico del que se ocupa Fiddler debido a la forma en que está configurado.