=======================================
FULL DISCLOSURE - CBM (Control del Ciber) Denial of service.
Fecha descubrimiento: 24/11/2010
Ultima revisión: 08/agosto/2011
Descubridor: kml reverser
=======================================
1.- Introducción
Control de Ciber (cbm) es un programa distribuido por http://cbm.com.ar/
usado de forma muy amplia en España
para el control de tarificación de los accesos a Internet en los "Cyber".
2.- Descripción del fallo de seguridad
El programa se comunica mediante el protocolo TCP/IP por defecto el puerto
1000 permaneciendo a la escucha de sus clientes
que se conectan a el, el problema reside en que el servidor no tiene ningún
control de acceso y permite a cualquier "software"
conectarse a dicho servicio.Por defecto escucha en el puerto 10000 tcp.Si a
esto le añadimos a que todo lo que escucha es procesado
por un gigante bucle para determinar el comando enviado. Podemos llegar a la
conclusión de que si enviamos ciertos comandos especialmente
manipulados podemos producir una denegación de servicio por un alto
consumo de CPU. Llegando a bloquea el sistema operativo (solo si el
procesador del servidor es de un solo núcleo. Sin embargo si multinúcleo
debido a que el programa no soporta multiprocesamiento solo se apodera
de un solo núcleo. En este caso solo se cuelga el programa y no permite
realizar NADA con el.
3.-Versiones afectadas.
Dicha vulnerabilidad afecta a todas las versiones de este software en cualquier
Sistema operativo windows. Ya que para linux no existe Daemon.
4.- How to...
Para que el servidor asigne un contador a una IP basta con que se le envíen
estos comandos al servidor.
***************************Lista de comandos en orden hacia el servidor***************************************
PC: 0
VERSION: escdll.dll 0
S: 1 1
VERSION: escacven.dat 0
VERSION: escacprg.dat 0
VERSION: esclaven.dat 0
VERSION: esclaprg.dat 0
VERSION: escprven.dat 0
VERSION: escprprg.dat 0
VERSION: escartic.dat 0
VERSION: escvar.osf 0
VERSION: esclconf.cfg 0
Donde PC: 0 es el identificador del pc osea que también nos podemos hacer
pasar por otro siendo 0 el 1
y así de forma sucesiva. Y el comando versión: es el nombre del archivo con
un CRC al final (viene representado por un 0)
ejemplo de una captura real: http://pastebin.com/xFHNqeS6.
Si se observo la captura real se observa que con el comando PIDOBLOQUE: se
realiza una transferencia binaria de un archivo ejecutable
por lo cual si se realiza un mimt se puede llegar a reemplazar dicho ejecutable
puesto que luego sera ejecutado por el cliente.
****************************************************************************************************************
Ahora la rutina que produce la denegación de servicio en el programa de
control (servidor).
El archivo ejecutable correspondiente es: servidor.exe y la dirección de
memoria es:
00433D4C |. E8 6E9D0000 CALL servidor.0043DABF ; \servidor.exe
Adjunto copia de la rutina: http://pastebin.com/SAJCyMnK
5.- Solución
De momento NO EXISTE SOLUCIÓN ALGUNA lo único es colocar un
cortafuegos que controle que programas se conectan a dicho daemon.
6.- TimeLine
- 24/07/2011 -Se descubre la denegación de servicio.
- 26/07/2011 -Se comprueba en una maquina virtual (La maquina virtual se quedo bloqueada debido al dos)
- 30/07/2011 -Se comprueba en un conjunto de equipos REAL. El equipo al ser mononucleo se bloquea por completo incluido el S.O.
- 05/08/2011 -Se comprueba en un equipo mas potente Quad Core uno de los cores de la CPU queda al 100% y el programa se bloquea.
A continuación adjunto el exploit para explotar esta vulnerabilidad.
http://www.megaupload.com/?d=87D38KO0
http://www.mediafire.com/download.php?0wllp7gtx3tkn25
http://massmirror.com/523914e51386567c22362123d79780ec.html