lunes, 31 de octubre de 2011

MiniReto - Deface It!


Hace un par de días publiqué un mini reto (lo encuentran aquí) con el objetivo de pasar un rato agradable y aprender un poco. La verdad el tema central del reto tiene como base una historia de pentesting real en un ambiente corporativo, pero quise recrear el escenario para que otros profesionales y estudiantes no descarten estos vectores de ataque dentro de sus propios análisis. Obviamente cambian algunas condiciones como por ejemplo que en la vida real fue un entorno LAN y se usaban NAS y SANs reales, en este caso el protocolo se lleva a Internet y se usa un simple servidor corriendo Linux.

Hasta el momento he publicado un total de 3 mini retos, casi siempre dentro del entorno académico donde enseño, pero esta vez con ayuda de algunas listas de correo tuvimos un juego no tan local. El mini reto tuvo una duración de 24 horas aproximadamente, tiempo estimado para que alguien pudiera dar con la solución, quizás fue poco tiempo, quizás fue mucho, lo importante era aprender en el camino.

El reto fue anunciado así:
Link en Sec-Track (http://www.sec-track.com/deface-it-reto-3-by-nonroot)


La administradora de red vanessa  publicó su primer portal web.
Su fuerte son otros temas, sin embargo le causa curiosidad el tema de los servidores web, por eso se animó a crear su propio espacio personal.

Misión: Hacerle un DEFACE al portal:  http://107.22.221.188/

Reglas:
- Permita el juego de los demás (juego limpio)
- Gana el primero que haga el defacement
- El premio es una calcomanía de BlackHat (es enserio, no hay mas plata para premios :P )
- Canal de soporte en #ctf-colombia (irc.freenode.net)
- Vale todo! (menos D.o.S, D.D.o.S)
- Think Different!

A jugar!


Algunas estadísticas del reto:


Hasta donde me dice el apache y sus logs, entraron mas de 700 visitantes y un total de 477 IPs únicas, como quien dice, que estuvo movido el reto. La mayoría de logs se recolectaron del sistema web incluso después de haber twitteado (@nonroot) que el reto NO era web.


Hubo jugadores no solo desde Colombia, las dos IPs que mas se acercaron estaban en Egipto y otra desde Argentina. Sin embargo nadie solucionó el reto.

Muchos de los jugadores estuvieron preguntando por la solución, así que saqué los archivos de configuración y los discos usados para que puedan recrear el escenario.


El reto como se dijo mientras estuvo abierto, si bien tenia como objetivo hacer un defacement (lo que claramente implica una plataforma web), no obligaba a que se resolviera usando vulnerabilidades web.
Siempre hay que analizar todos los vectores de ataques posible, porque no sabemos donde encontraremos la vulnerabilidad. Herramientas como nikto, dirbuster, etc, son buenas, pero no siempre van a funcionar en todos los entornos y este no era el entorno para usarlas.

El reto apuntaba a un target iSCSI implementado en Linux con la herramienta: 

Las pistas iniciales debían conducir a encontrar el puerto correcto y usar las herramientas para dicho protocolo, después se encontrarían con mas pistas hasta alcanzar la solución final.

Para reproducir el escenario se requiere un sistema linux, instalar el target ISCSI mencionado y poner los "Discos Duros" en el directorio /backup/ , para mas información mirar la configuración anexa del target (ietd.conf).

El archivo necesario para reproducir el escenario lo pueden descargar desde aquí:

Y la plataforma web?, la plataforma web era un joomla con todas las configuraciones necesarias para que no fuera vulnerable (a menos que alguien tenga un zeroday para la última versión), así que no era relevante en la prueba. El objetivo era conseguir el password de acceso administrador  por otro medio y luego ingresar al portal y hacer el defacement.

A tener en cuenta durante el desarrollo del reto:


  • Los LUN están formateados, tener en cuenta estos formatos para seleccionar un cliente adecuado.
  • Existe una recomendación para usar 12 caracteres en los passwords CHAP en ISCSI, esto aunque no lo crean reduce el ámbito de pruebas para un bruteforce, por ejemplo, pocas personas quieren recordar passwords de 12 caracteres complicados.
  • ¿Cómo hago para saber que el protocolo es iSCSI, si no esta en el puerto por defecto?
  • ¿Cómo hago para hacerle fuerza bruta al proceso de discovery de los targets? (para el reto el discovery estaba sin passwords, pero es posible configurarlos, cómo haríamos para descubrirlo?)
  • ¿Cómo hago fuerza bruta para el password del target (CHAP)?
  • Si logro encontrar los tokens en el intercambio CHAP, ¿Cómo puedo encontrar el password?
Espero que se animen a montar el reto y postear sus conclusiones, como ya saben, tenemos el wiki de Sec-Track disponible para hacer los aportes.

Gracias a todos los que jugaron y a los diferentes proyectos (kungfoosion, sec-track, ctf-colombia, hackplayers) por replicar el tema.

Saludos.

Entradas populares