miércoles, octubre 06, 2010

Metiendo los dedos en el enchufe

En algunas auditorias de servicios es útil conocer que datos está enviando una aplicación desde tu máquina e interceptarlos antes de que sean enviados al servidor. Algo similar a lo que se realiza en una auditoría de seguridad cuando se configura un proxy local para interceptar las peticiones web, pero para aplicaciones que van con otros puertos TCP.

Para realizar esta interceptación y manipulación de datos, es necesario ponerse en medio de las conexiones Socket, o WinSocket, si son aplicaciones Windows. El problema es que muchos de estos programas, en principio, no vienen con soporte para utilizar un servidor “proxy” para sockets por lo que las soluciones que se pueden utilizar son distintas.

Un socket es una zona de memoria de intercambio entre la red y un proceso, que se genera mediante la invocación de una llamada a la API de creación del socket. Cuando éste es creado, se genera la zona de memoria que es identificada por un puerto, y será en ella en la que el proceso de red leerá o escribirá.

Cuando se quiere hacer que una aplicación, que NO permite configurar un servidor proxy para sockets, pase un servidor Proxy Socket, es necesario utilizar una herramienta que parchee el proceso para interceptar en memoria los datos escritos por la aplicación y enviarlos todos a algún servidor Proxy Socket. Esta es una aproximación similar a la que realiza el cliente proxy o el cliente firewall de las arquitecturas Forefront TMG, pero existen otras herramientas llamadas "proxificadores" que hacen algo similar.

Proxifier

Una de las herramientas que se puede utilizar para parchear estas aplicaciones y utilizar servidores Proxy Socket es Proxyfier. Esta herramienta permite configurar múltiples servidores proxy y crear reglas de “proxificación” por aplicaciones, direcciones IP y/o puertos. Cada vez que una de estas aplicaciones escriba en su socket, la información será interceptada y enviada a los servidores Proxy Socket configurados. Originalmente fue creada para arquitecturas Mac OS, pero funciona perfectamente en sistemas Microsoft Windows.

Estas soluciones se han utilizado tradicionalmente, para conseguir el anonimato en Internet de aplicaciones que no permitían utilizar servidores Proxy. No obstante, con la proliferación de las redes TOR, han caído más en desuso. Aún así, estas soluciones permiten, en algunas ocasiones, bypassear firewalls que están bloqueando los puertos de determinadas aplicaciones, haciendo salir las aplicaciones por el puerto del servidor Proxy Socket.


Figura 1: Configuración de Proxy Socket en Proxyfier

Existen múltiples listas por Internet con servidores Proxy que se pueden utilizar, como por ejemplo Proxy Socks List o SockProxylists.

Proxyfier viene acompañado de una herramienta de test que permite comprobar si un servidor está activo o no. Además, la herramienta permite configurar listas de servidores Proxy Sockets, de tal manera que va utilizándolos encadenados si van fallando.


Figura 2: Comprobación de servidores Proxy Sockets

Para sistemas Linux, hay una herramienta similar a esta llamada Proxy Chains, pero no la he probado.

Interceptación y edición de paquetes con Winsock Packet Editor

Aunque pueden ser herramientas muy útiles, trabajar con los proxyficadores puede ser utilizado para saltar restricciones en firewalls o conseguir cierto anonimato, pero no permite editar los paquetes. Para realizar esta tarea se puede utilizar alguna de las herramientas favoritas de los cheaters de juegos en red. En este ejemplo vamos a trabajar con WinSock Packet Editor.

Esta herramienta es muy utilizada por los jugadores en red para manipular los paquetes enviados desde un determinada aplicación, habitualmente un juego, y cambiar los valores de ciertos parámetros con el fin de conseguir cambiar el avatar, la potencia de fuego o el número de monedas. En nuestro caso, desde un punto de vista de seguridad, lo podemos utilizar para dos tareas fundamentales.

1) Auditar los paquetes en memoria de una sesión.
2) Crear reglas de bloqueo o modificación en un determinado paquete antes de enviarlo.

Auditar el tráfico

Auditar el tráfico que genera una determinada aplicación puede hacerse con el sniffer de red, pero también puede hacerse directamente mirando los paquetes que escribe en la zona de memoria de su socket. Para ello, con WPE basta con activar la interceptación de una aplicación, en este ejemplo el servicio FTP y activar el registro dando al Play.


Figura 3: Interceptación de comunicaciones Winsock de un proceso

A partir de este momento, será suficiente con hacer un uso normal de la aplicación para que se pueda ir grabando todo el tráfico generado. Para este ejemplo he hecho una sesión FTP contra el servidor público de Microsoft y la he grabado. Cuando se termine de usar la aplicación y se quiera visualizar el tráfico de mensajes por el socket, bata con dar al botón de stop.


Figura 4: Sesión grabada

Una vez grabada la sesión, pasamos a la fase de analizar paquetes y crear las reglas. Para enseñar el funcionamiento, lo único que voy a hacer es cambiar el usuario anonymous de la conexión. Así, cuando se genere un mensaje de tipo USER anonymous, voy a cambiarlo por un mensaje de USER chema.

Para ello, se entra en el editor de filtros y se edita uno nuevo como el que sigue. El funcionamiento es bastante sencillo, basta con crear un filtro de búsqueda en el paquete, en este ejemplo, el paquete USER anonymous y modificarlo cambiando los datos tal y como se ve en la imagen inferior.


Figura 5: Configuración de un filtro de reemplazo

Una vez creado el filtro, hay que activarlo, marcando el checkbox y activando los filtros para que se apliquen a partir de ese instante.


Figura 6: Activación de filtros

Si ahora se realiza una nueva sesión FTP, se puede ver que en el instante en que se genera el paquete USER anonymous en el socket, este es modificado enviando el mensaje USER chema. Es por ello que el servidor está solicitando la contraseña del usuario chema.


Figura 7: Resultado de filtro manipulando paquete en ejecución

Tal vez te venga muy bien este tipo de herramientas en una auditoría de seguridad en un futuro, así que no viene de más que la pruebes.

Saludos Malignos!

9 comentarios:

DvD dijo...

Interesante post, se echaba de menos algo práctico ;) ya hay entretenimiento para hoy por la noche.

Salu2!

Miguel dijo...

buena entrada!

4n0nym0us dijo...

Muy buena herramienta WPE Pro, los chavales suelen usarla en juegos, como si se tratase de un CheatEngine "online", en vez de modificar los valores que se cargan en las direcciones de memoria, lo hacen con la data que envían al juego online al pulsar una tecla, pueden hacer incrementos de la salud, de la velocidad de ejecución de uno de los parámetros como un ataque y hasta donde la imaginación nos llegue, es similar a ser un Peter Pan jaja

Saludos!

Alejandro Nolla dijo...

Interesante el WPEPro, la verdad que no lo conocía, acostumbrado a usar Wireshark y luego filtrar sólo el tráfico de la aplicación que interesa esto es mucho más útil... ¿Permite exportar a pcap? Supongo que sí, lo que sería muy útil para guardar sólo lo que nos interesa y poder aplicar filtros con wireshark o similar...

Gracias por la info, habrá que probarlo

Anónimo dijo...

Buena Maligno!!! estabamos sedientos de entradas como esta !! ;)

Rafa dijo...

Gracias Chema ;)

Anónimo dijo...

Utilice alguna que otra vez los dos software.
Particularmente el proxifiler lo usaba, teniendo un proxy en otro proveedor de internet. Así cuando el que usaba actualmente andaba como la mona. Salía por el otro sin problemas.
WPE Pro, jejej ese ya se lo imaginan.

En su momento el me había costado saber que existía.

Me gusto el post.

Saludos

hacking-etico dijo...

Muy interesante el artículo. Saludos!!

ThiseyRamó dijo...

Muy buen post!!

Entradas populares