Cómo esnifar el tráfico en dispositivos móviles

Hacer sniffing del tráfico de red no es únicamente una solución para hacking; de hecho, a la hora de desarrollar aplicaciones móviles, nos encontramos en muchos casos con la necesidad de conocer qué información se está intercambiando entre el dispositivo móvil y el servidor. Es bastante habitual que la app que nos está funcionando correctamente contra un servidor local, o uno de nuestra LAN corporativa, de repente no lo hace al apuntar a un servidor en internet, al colocar un SSL delante…

Por todo esto, una técnica que podemos utilizar es interceptar el tráfico de red entrante/saliente con el dispositivo móvil, para poder analizar las cabeceras, el cuerpo de los mensajes, etc. Para ello, en este post vamos a utilizar una potente suite de seguridad, Burpsuite.

En primer lugar, descargaremos Burpsuite. La última versión que he utilizado para este post es la versión 1.5 Free. Es una aplicación Java, por lo que nos funcionará en Windows, Linux y Mac Os X; para ello, previamente deberemos haber descargado una versión de la Java Runtime Environment.

Pulsando sobre el fichero JAR se nos debería abrir la aplicación:

viafirma.com

Burpsuite es una suite de seguridad muy completa, pero en este post sólo vamos a ver el funcionamiento de las pestañas «Target» y «Proxy».

A continuación vamos a crear la configuración de proxy, que posteriormente configuraremos en nuestro dispositivo móvil, asegurando que todo el tráfico del mismo pueda ser interceptado y analizado por Burpsuite. Para ello, pulsamos en Proxy -> Options, y en el apartado de Proxy Listeners, pulsamos en la opción Add, para poder crear una interface de red que esté escuchando a cualquier petición realizada desde el dispositivo móvil. La ventana que se nos abre nos pide un puerto (en mi ejemplo he utilizado el 8081) y seleccionamos la opción «All interfaces«. Deberemos confirmar esta selección al pulsar OK:

viafirma.com

Ya tenemos nuestro proxy creado, escuchando por el puerto 8081. En la pestaña Proxy -> Intercept, veremos que por defecto está seleccionada la opción «Intercept is on». Eso quiere decir que cada petición del móvil va a ser detenida por el proxy; podremos evaluarla, y permitir su ejecución o no pulsando en los botones «Forward» y «Drop».

Ahora vamos a configurar nuestro dispositivo móvil para que las peticiones de red pasen por el proxy. Es importante que el ordenador donde hemos instalado Burpsuite y el móvil estén conectados a la misma red (wifi, por ejemplo). Otra opción que podemos tener es compartir la conexión de red desde el ordenador por wifi, y conectarnos con el móvil a la misma. En mi caso, tanto el ordenador (un Macbook Pro) como el móvil (iPhone) están conectados a la misma red wifi. También necesitaremos conocer la IP de nuestro ordenador (en Mac, es sencillo de comprobar en las Preferencias de Red; en mi caso, tengo la IP 192.168.2.122:

viafirma.com

Ahora voy a configurar el proxy en el iPhone (esto es válido para cualquier otro tipo de dispositivo móvil Android, Windows Phone, BlackBerry, etc., pero los settings de red estarán en otro menú). En iPhone, acudo al menú Ajustes -> Wifi -> y pulso en la flecha azul al lado de la red wifi a la que estoy conectado, entrando en la pantalla de ajustes de la conexión. Abajo del todo se puede configurar un servidor proxy. Seleccionamos «Manual», e introducimos la configuración del proxy Burpsuite, con la IP de nuestro ordenador y el puerto que hemos seleccionado. En mi caso, la IP 192.168.2.122 y el puerto 8081:

viafirma.com

Y en principio, con esto es suficiente. Tenemos un proxy escuchando por un puerto, y hemos configurado dicho proxy en nuestro dispositivo móvil. Ahora procedemos a ejecutar la aplicación que queremos esnifar. Como ejemplo, abro la app de Marca, y vemos en Burpsuite una de las peticiones que hace la aplicación al arrancar:

viafirma.com

Podremos analizar las cabeceras, ver el tráfico en la pestaña «Target», etc. En definitiva, tener información en tiempo real de qué está ocurriendo entre el dispositivo móvil y el servidor de backend.

Espero que os sea de ayuda, y sed buenos!