Captura de Paquetes con un Clic

La función de captura de paquetes Man-in-the-Middle (MitM) con un clic puede habilitar automáticamente un MitM global en el dispositivo. La diferencia con las herramientas que utiliza habitualmente es que no necesita preocuparse por problemas como la instalación de certificados y la configuración de proxy, ni por las diferencias en los métodos de captura entre distintas versiones del sistema. Funciona sin problemas en Android 6.0 - 14. Nos hemos encargado de todo por usted, solo necesita centrarse en sus tareas específicas. Además, admite la modificación e interceptación de paquetes en tiempo real, lo que lo hace más adecuado para su uso en tareas reales que los programas con interfaz gráfica de usuario (GUI) comunes, que a menudo se limitan a "capturar un paquete para echar un vistazo".

Además, podemos garantizarle que no hay paquetes que no se puedan capturar (excepto por el anclaje de certificados), y la tasa de éxito de la captura también es más alta que con los métodos de software convencionales. Puede interceptar el tráfico http/s de las aplicaciones. Puede aplicar y revocar automáticamente el MitM, y el dispositivo y la red volverán a su estado original después de salir del script. No necesita realizar ninguna otra configuración. El script también admite la captura de paquetes MitM internacional (implementada a través de un proxy ascendente), lo que le permite capturar fácilmente el tráfico de software extranjero.

Atención

Independientemente del sistema operativo que utilice, antes de comenzar la captura de paquetes, para garantizar una ejecución precisa y sin errores, por favor, desactive temporalmente y por completo su **firewall de red**.

Preparativos Previos

Primero, asegúrese de que el ordenador y el dispositivo estén en la misma subred o que tengan una conexión USB. A continuación, asumiremos que 192.168.0.2 es la IP del dispositivo móvil que ejecuta FIRERPA. En segundo lugar, asegúrese de que ha clonado correctamente el código del proyecto y ha instalado las dependencias correspondientes. Verifique en la línea de comandos que mitmproxy se ha instalado correctamente (puede verificarlo escribiendo mitmdump en la línea de comandos).

Si no tiene Python y no está familiarizado con la clonación y las dependencias, puede descargar startmitm.exe desde nuestra página de lanzamientos. Es una versión empaquetada de startmitm.py que le permite ejecutar la captura de paquetes sin instalar Python. Es un programa de consola y sus parámetros de comando son los mismos que los de startmitm.py (este archivo puede ser detectado como un virus, por favor, decida bajo su propio riesgo si desea utilizarlo).

Captura Básica de Paquetes

Sugerencia

La aplicación cuyos paquetes desea capturar puede utilizar SSL PINNING (anclaje de certificados) o el protocolo QUIC. Ambas situaciones pueden afectar el resultado de la captura. Forzaremos automáticamente la degradación de QUIC, pero debido a un posible tiempo de FallBack, la aplicación puede experimentar una red muy lenta. Por favor, espere un momento. Las aplicaciones con anclaje de certificados no se pueden interceptar directamente. Necesitará utilizar ingeniería inversa y escribir un script de Frida para eludir la lógica de SSL PINNING.

Puede iniciar rápidamente la captura de paquetes con el siguiente comando. Este es el método de uso más simple.

python3 -u startmitm.py 192.168.0.2

Importante

**Es crucial recordar que después de ejecutar el comando startmitm, debe cerrar completamente la aplicación que desea analizar y volver a abrirla. Cerrar la aplicación desde la barra de tareas no es un método fiable. Por favor, use la API para cerrarla o utilice el comando `kill -9` para terminar todos los PID relacionados con la aplicación; de lo contrario, la captura no funcionará correctamente.**

Presione la combinación de teclas CONTROL + C una vez para salir de la captura de paquetes. Por favor, no la presione varias veces seguidas.

Compartir la Captura de Paquetes

Si desea analizar los paquetes junto con sus compañeros en la misma red local, ejecute el siguiente comando. Luego, pídales que abran http://SuDirecciónIP:7890 en un navegador para ver la misma página de captura que usted y poder analizar juntos.

python3 -u startmitm.py 192.168.0.2 --web-port 7890 --web-host 0.0.0.0

Aplicación Específica

Si necesita interceptar el tráfico de una aplicación específica en lugar de todo el tráfico del sistema, puede añadir :nombre_del_paquete después de la dirección IP para capturar los datos de tráfico de esa aplicación. El siguiente ejemplo solo interceptará el tráfico de com.some.package.

python3 -u startmitm.py 192.168.0.2:com.some.package

Modificación en Tiempo Real

Puede modificar los datos de solicitud y respuesta de la aplicación en tiempo real. Esta función se basa en los ganchos de eventos (event hooks) de mitmproxy. Necesitará escribir sus propios scripts de gancho según la API de mitmproxy. Para obtener información sobre cómo escribir scripts de gancho, consulte la documentación oficial de mitmproxy en docs.mitmproxy.org/stable/addons-examples y el código de ejemplo en mitmproxy/examples/contrib.

Suponiendo que su script de gancho se llama http_flow_hook.py, utilice el siguiente comando para aplicarlo.

python3 -u startmitm.py 192.168.0.2 -s http_flow_hook.py

Redes Diferentes

Si su teléfono y su ordenador no están en la misma red, pero tiene acceso físico al dispositivo, también puede capturar paquetes a través de USB ADB. Asegúrese de que el dispositivo esté conectado al ordenador a través de USB ADB y que la autorización se haya concedido correctamente.

Si solo hay un dispositivo ADB conectado al ordenador, utilice el siguiente comando para la captura. localhost representa el uso del dispositivo ADB.

python3 -u startmitm.py localhost

Si hay varios dispositivos ADB conectados al ordenador, debe especificar el número de serie de ADB, que puede encontrar en la salida del comando adb devices.

python3 -u startmitm.py localhost --serial bfde362

Si su entorno es más restrictivo, por ejemplo, si el teléfono y el ordenador no están en la misma red y no tiene acceso físico al dispositivo, pero puede acceder al puerto de FIRERPA, aún puede realizar el MitM. Este suele ser el caso si ha utilizado el servicio frp incorporado para reenviar FIRERPA a un servidor remoto, o si ha reenviado el puerto 65000 de FIRERPA a otra ubicación por algún medio. En esta situación, solo puede comunicarse con FIRERPA a través de este único puerto, y otros puertos no son mutuamente accesibles. En este escenario, el teléfono no puede acceder a ningún puerto del ordenador local, y el ordenador local solo puede acceder al puerto FIRERPA del teléfono (o el teléfono tiene una IP pública, pero el ordenador está en una red interna). En este caso, debe proceder de la siguiente manera. (La interconexión de red a través de OpenVPN no se considera en este escenario).

En este punto, debe utilizar la siguiente combinación de pasos. Primero, use adb_pubkey.py o llame a la API usted mismo para instalar su propia clave pública de ADB en el dispositivo. Una vez completada la instalación, continúe con el siguiente proceso, donde x.x.x.x es la IP que puede conectarse al puerto 65000 o 127.0.0.1, modifíquelo según su situación real.

adb connect x.x.x.x:65000

Finalmente, proceda con la captura de paquetes a través de USB como se describió anteriormente.

python3 -u startmitm.py localhost

O de la siguiente manera, donde el serial es la dirección de adb connect en lugar del número de serie hexadecimal.

python3 -u startmitm.py localhost --serial x.x.x.x:65000

Proxy Ascendente / Captura Internacional

startmitm inicia mitmproxy como un servicio de proxy. Por defecto, todo el tráfico se origina desde la tarjeta de red del ordenador local. Si necesita que el tráfico pase a través de un proxy ascendente en lugar de originarse localmente, puede especificar uno de la siguiente manera. Solo se admiten proxies de protocolo HTTP como proxies ascendentes. Al mismo tiempo, debe especificar un DNS ascendente que admita consultas TCP para evitar el envenenamiento de DNS (DNS poisoning).

Consejo

El modo de proxy ascendente requiere que la versión de mitmproxy sea >= 9.0.0 (y Python >= 3.9).
python3 -u startmitm.py 192.168.0.2 --upstream http://127.0.0.1:7890 --proxy-dns 8.8.8.8

Si el proxy HTTP ascendente requiere autenticación, utilice el siguiente comando y reemplace USER:PASSWORD.

python3 -u startmitm.py 192.168.0.2 --upstream http://USER:PASSWORD@x.x.x.x:8080 --proxy-dns 8.8.8.8

Todos los comandos anteriores enrutarán el tráfico del dispositivo a través del proxy ascendente (upstream) y enviarán todas las consultas DNS del ordenador local a 8.8.8.8 a través del proxy.