sábado, 26 de mayo de 2012

Packet Sniffer ( Analizador de Paquetes )

Me gustaría explicarles de manera sencilla, a aquellos que desconocen del tema, que es un Packet Sniffer o Analizador de Paquetes.

Cuando hablamos de  Packet Sniffer o Analizador de Paquetes, generalmente nos referimos a una pieza de software que nos permite capturar todo o parte del tráfico en nuestra red o alguna a la que tengamos acceso casual ( wireless ), analizarlo y/o modificarlo.

Para lograr esto el sniffer generalmente, aunque no necesariamente, coloca nuestra placa de red en modo "promiscuo", o "monitoring" en el caso de adaptadores inalámbricos, para que de esta manera acepte tanto los paquetes que son destinados a nuestra placa, como todos los demás. 


Claro que esto solo puede ser posible si nos encontramos en una red que no envíe los paquetes únicamente al destinatario como puede ser por ejemplo un Hub, o estamos intentando capturar los paquetes que salen y entran a nuestro propio adaptador de red. 

Switchs y routers utilizan técnicas de direccionamiento que envían los paquetes de A a B sin pasar por C, por ende, parados en C no podemos ver el tráfico destinado o generado por A o B. Aún así, existen medios para poder sniffear una red de estás carácterísticas y, si les interesa saber más del tema, les recomiendo buscar información acerca de "ARP Spoofing".

Hace unos días estaba desarrollando una aplicación que automatiza el uso de una página web y para ello debía saber como el navegador web interactuaba con el sitio, cuales eran los parámetros envíados por los métodos GET y POST y cuál el contenido de las cabeceras HTML. Eso lo podemos hacer con las herramientas de desarrollador de Google Chrome, solo por dar un ejemplo.

Pero que tal si aún conociendo lo que el navegador web envía el programa no funciona? En este punto solo queda sniffear para ver que está enviando nuestro programa al web server y compararlo con lo que envía el navegador. Para esto utilicé Wireshark.


Utilizando Wireshark pude evadir el principal problema a la hora de interceptar tráfico de red, y es la tremenda cantidad de datos que en todo momento entran y salen de nuestros adaptadores. Con la cual mas de uno se encontraría perdido, sobre todos si es un principiante y no sabe mucho sobre el tema como yo.

Primero tenemos que iniciar el sniffing seleccionando la placa de red que queremos sniffear.


Y ahora, a maravillarnos con la hermosa cantidad de paquetes.

Ahora, si volvemos al caso que les describí anteriormente, lo que se necesita es interceptar todos los paquetes entre mi PC y el webserver ( En este caso mi router ). Pero para refinar la búsqueda sería necesario filtrar solo los paquetes que involucren el protocolo HTTP y dentro de este las solicitudes con métodos POST y GET.

Parece complicado no? No lo es, simplemente tenemos que utilizar las expresiones de filtrado. Para este caso utilicé la siguiente.
ip.dst_host == "192.168.1.1" and ( http.request.method == "GET" or http.request.method == "POST")
No es tan difícil solo hay que mirar un poco el dialogo de expresiones. Es increíble la cantidad de protocolos que reconoce el Wireshark. Solo hay que ponerse a investigar y jugar un poco para darse cuenta de las posibilidades.

Una vez filtrado es más fácil encontrar el paquete buscado y observar la información que contiene.


Con esto ya pude terminar mi programa y automatizar la configuración de mi router a través de su propio webadmin.

Espero que les haya sido de interés.

Cualquier cosa no duden en comentar!

No hay comentarios:

Publicar un comentario