Capturar paquetes de red en iOS

Aprende a capturar paquetes de red en iOS, utilizando el terminal de MacOS de una forma fácil y sencilla y sin instalar ninguna herramienta adicional.

Existen muchas herramientas que nos permiten hacer captura de paquetes, tanto en Mac como en otro sistemas operativos. Sin embargo, en los sistemas móviles y sobre todo en iOS, esa tarea se vuelve un poco más complicada. Veamos cómo podemos hacerla.

Para poder capturar paquetes directamente desde iOS, necesitamos poner la tarjeta de red en modo monitor. Sin embargo, como medida preventiva, Apple no permite esta función. Existen herramientas externas que permiten cambiar el estado de la tarjeta de red, pero requieren el Jailbreak del dispositivo, y hoy en día, eso queda descartado. Aun así, existe una forma fácil de hacerlo utilizando nuestro Mac como interceptor de los paquetes que nuestro iOS envía o recibe.

Sacar UDID

Para ello, lo primero que tenemos que hacer es conectar nuestro dispositivo por usb al Mac. Abrimos iTunes, navegamos hasta la información de nuestro iOS y en la sección general, se encuentran los elementos identificativos del dispositivo, debería aparecer algo como esto.

uuid capturar paquetes de red en iOS

Si de primeras no os sale el UDID, haced clic en los números de la ultima etiqueta, y esta ira mostrando diferentes valores hasta que os salga.

Crear una interfaz remota virtual

Para realizar la captura de los paquetes, el Mac tiene que crear una interfaz de red virtual remota que representa la interfaz de red del dispositivo IOS y por la que pasaran todos los paquetes. Abrimos el terminal y escribimos el siguiente comando (necesitamos tener instalado el Command Line Tools de Xcode):


rvictl -s <UDID>

Este comando crea la interfaz del dispositivo cuya UDID hemos indicado. Cabe destacar que podemos realizar este comando con varios dispositivos al mismo tiempo, siempre y cuando todos ellos estén conectados por cable. Podemos listar las interfaces de red usando el comando.


ifconfig -l

Si la interfaz aparece, ya está configurado para realizar la captura.

Realizar la captura

Existen varias herramientas para realizar capturas de paquetes, algunas con interfaz como Wireshark y otras sin ella como tcpdump. Yo personalmente voy a utilizar tcpdump que viene preinstalada en el sistema y es muy fácil de utilizar. En el terminal, ponemos el siguiente comando


sudo tcpdump -i rvi0 -w ./output.pcap

Los parámetros son los siguientes:

  • -i: Le decimos en que interfaz queremos escuchar, en nuestro caso es rvi0 que es la que hemos creado anteriormente con el UDID del dispositivo
  • -w: Ruta y nombre del directorio donde queremos depositar la captura. Para este ejemplo utilizaremos la raíz del sistema ./output.pcap

Tras pulsar intro, tcpdump comenzará a capturar paquetes del dispositivo y a mostrar el peso del archivo de captura. Todo lo que hagamos en el iPhone o iPad, quedará registrado en el archivo de captura. Cuando hayamos concluido las conexiones en el dispositivo, solo habrá que para la captura pulsando Ctrl+C.

Cuando hayas terminado, no olvides de ejecutar el siguiente comando para eliminar la interfaz remota:


rvictl -x <UDID>

Como veis, se trata de una forma fácil y rápida de capturar paquetes de red en iOS. Si tenéis alguna duda, utilizad los métodos de contacto para preguntar.

Fuente: Foro Wireshark