on

Proxy multi-protocolo sha0proxy v2

Normalmente el desarollo de exploits requiere más tiempo del que uno tiene, de manera que hay que ingeniarse técnicas y herramientas que faciliten el trabajo.

Personalmente, antes que parchear una aplicación cliente, o utilizar las apis de ciertos protocolos, prefiero capturar el tráfico y enviar las cabeceras a bajo nivel, alterando los campos variables, con rfc y código del servidor en mano.

En 2008 publiqué un proxy multi-protocolo, para la intercepción y modificación de paquetes emitidos sobre TCP, sin embargo recientemente le he dado soporte UDP.

Este sencillo proxy tiene 3 modos:

  • En primer lugar, el modo view. Intercepta pero no altera el tráfico, mostrando los datos tanto en hexadecimal como en alfanumérico. Los colores facilitan la ingeniería inversa de los bloques y tipos de datos.

  • En segundo lugar, el modo trap, que permite alterar los datos. Esto es útil sobretodo para TCP, porque la sesión se mantiene establecida.

  • El tercer modo, consiste en preparar un fichero que permite “parchear al vuelo”, donde se indica el número de petición a alterar, offset dentro de la petición y reemplazo, donde se puede indicar en formato string y/o hexadecimal.

  • Este fichero de parche se puede lanzar en modo view, o combinarlo con parcheos manuales en modo trap. Se puede apreciar en la siguiente captura la petición 1 sin parchear y la petición 1 parcheada.

Por ejemplo el exploit del vnc bypass, se podría implementar en una simple línea mediante sha0proxy.

A continuación expongo un caso real, de reversing de protocolo + explotación en win32. No se puede revelar el nombre del producto porque todavía no está corregida la vulnerabilidad.

El activeX, recibe del servidor una cabecera y un bloque de datos; gracias al coloreado, se puede apreciar rápidamente que la cabecera está compuesta por  2 valores de 4 byets en little-endian

Puesto que el lado cliente, hace un recv() del tamaño indicado por la header, es posible desbordar el buffer de recepción. En este caso hubo que evadir el /gs y safe-seh gracias a un problema de concurrencia, en el que otro thread acceder a datos sobreescritos por este envío. La web debería de cargar el activeX 20 veces para que una de ellas se diera esta concurrenicia.

sha0proxy, a parte de permitir analizar los protocolos, permite a calibrar la explotación o incluso hacer el exploit en sha0proxy, mediante los ficheros de parche.

En este caso se puede apreciar la header de respuesta, el bloque para ajustar el incio d ela shellcode, un grupo de “A” para ajustar el offset, el cual será un salto a al user32.dll.

Próximamente incorporaré nuevas funcionalidades como fuzzing, o aplicar expresiones regulares en el contenido del tráfico.

Podeis descargarlo desde aquí: sha0proxy.pl

Demo Free Trial MSSP
Program