Era un sábado en la tarde cuando se puso en marcha la creación de un par de nuevos retos informáticos en
Campus Party, uno que fuera fácil y el otro un poco fácil. Pero que como siempre entretuviera a los concursantes y no los dejara dormir durante las últimas noches del Campus.
Uno de los retos (el fácil)
consistía en una maquina
Windows 2000
Server con solo algunos parches de seguridad expuesta para todo el mundo, como todos sabrán penetrar una maquina en este estado no es para nada complicado, entonces en que
consistía el reto?. El reto
consistía en mantener el control de la maquina (0
wned) hasta que el reto finalizara. Obviamente los
RET mal calculados y los D.o.S tuvieron a
fixxxer y p@d@w@n mas ocupados de lo normal.
El segundo reto (el un poco fácil) consistía en ..., uhmmm, mejor pongo aquí la solución al reto y así se darán cuenta de lo que había que hacer.
Un saludo para todos los
participantes del
wargame (cerca de 30 personas) y gracias por participar. En próximas oportunidades tendremos mucho más.
INICIO
El reto empezó publicando las pistas en un servidor X prestado por el gordo, el porque del dominio no tiene ninguna explicación, pero
quizás se divirtieron mas de lo normal tratando de explotar sus
CGIs. :P
Sitio inicial con las pistas del reto
Las pistas concretas, solo dos pistas iniciales, CGI no era una pista XDUna vez se obtuviera esta información y con las indicaciones dadas por los
organizadores, la idea era empezar a resolver el archivo .
pcap que se entregaba y tratar de encontrar la bandera.
Lo primero es abrir el archivo .
pcap y estudiarlo
Abrir el archivo con wireshark
Seguir las conexiones
Analizar el contenido de las descargasUna vez
pasabamos las pistas falsas intentamos reconstruir la información transmitida, esto lo podemos hacer a mano, exportarlo con el
wireshark o usar
una herramienta que nos facilite el trabajo.
Con foremost encontramos una imagen jpg
La imagen es un código QRCon esta herramienta
podíamos sacar una imagen de la que se habló en algunas charlas de Campus
Party, la imagen en cuestión es
un código QR.

Para sacar la información del código
QR podíamos usar
una herramienta instalada en el sistema, una herramienta
online o una herramienta en el celular que decodificara rápidamente el código y nos entregará el texto: Pista(#3):
Capture The Flag.
La pista era bastante obvia y no ayudaba mucho, entonces como
seguíamos?
El próximo paso era volver a la captura y tratar de sacar mas información,
después de perder el tiempo ahí el paso siguiente era tratar de sacarle mas información a la imagen que
contenía el código
QR.
Quizás esteganografía?
Extracción de archivos que estan dentro de la imagen
Con una herramienta para extraer datos de
imágenes pudimos sacar un fichero comprimido y luego encontrar un texto plano bastante extraño (
criptografía clásica?), por lo tanto el siguiente paso era encontrar una rotación para encontrar el texto real.
rotando el texto de diferentes formas hasta encontrar algo coherenteAl
decodificarlo encontrábamos un texto con la siguiente pista(#4):
"En esta maquina que no es un Linux y no es un Windows tenemos 10 usuarios creados, accede con uno de ellos."
Muchos de los participantes huyeron en este punto, pues la maquina objetivo no era ni un Windows, ni un Linux, entonces que podría ser?. Para los que han trabajado con otros sistemas operativos saben que existen otros cientos de sistemas diferentes, pero que las posibilidades podrían apuntar a un sistema solaris, opensolaris, MacOSX, sistemas BSD o haiku. Menciono estos porque son los que yo conozco, pero puede ser que alguien quiera montar un plan9 o un AS400 como parte del reto.
En este punto los
participantes tuvieron que tener en cuenta la pista #2, un rango de direcciones
públicas que
pertenecía a una de las mesas de la arena.
Lo que se
suponía que
debían de hacer era
escanear ese rango e intentar detectar los sistemas operativos, otros en cambio buscaron la
VLAN de la mesa y realizaron un ataque físico. La verdad no se como lo lograron, la maquina del reto estaba bien camuflada y no era fácilmente
identificable :P
Maquina objetivo bien camufladaSi eran juiciosos y
hacían el
escaneo podían encontrar lo siguiente:
@hacker#nmap -O 186.113.24x.0/24 -oN nmap.txt@hacker#grep -i openbsd nmap.txtRunning: OpenBSD 4.XOS details: OpenBSD 4.0 - 4.2@hacker#Una maquina de ese segmento tenia instalado el sistema
OpenBSD. Inicialmente quisimos montar el juego con un
opensolaris, pero lastimosamente no detectaba las tarjetas de red, así que cambiamos de opción y en 6.3 minutos
teníamos un
OpenBSD 4.7 funcionando como parte del reto ;)
Una vez
identificada la maquina en la red,
podíamos escanearla, buscar puertos vulnerables e intentar hacerle D.o.S (aunque descalificara), pero lo mejor era seguir las pistas:
" ... tenemos 10 usuarios creados, accede con uno de ellos."
Cuales podrían ser los usuarios validos del sistema?, guest?, invitado?, root?, usuario?, usuario10?, usuario1?! BINGO !
Los usuarios
tenían la secuencia
usuario1, usuario2, usuarioX y las claves eran sus respectivos nombres, mas fácil no
podía ser.
En este punto del concurso muchos de los jugadores estaban agotados y decidieron cambiar el premio del reto por una buena dormida.

-3

-4
Cuando los
participantes hacían login por
SSH a la maquina objetivo encontraban una nueva pista (#5):
"Solo Uno De nosotrOs sabe leer."
Al principio la pista estaba muy confusa, pero
después de leerla varias veces se
veía claramente la palabra SUDO. Así que este comando era otra pista (#6) mas.
Accediendo con usuario1
Accediendo con usuario 2 y 3El paso siguiente era intentar cosas con el comando
sudo, como acceder con privilegios de
root, intentar crear archivos, intentar visualizar archivos, etc.
Vamos por el root!
El truco para pasar este punto es que el error de sudo algunas veces era que el usuario no estaba en el archivo
/etc/sudoers (lectura solo para el
root) y otras veces
decía que el usuario no
podía ejecutar ese comando, así que
podíamos deducir cual usuario si
podia ejecutar comandos y luego
tendríamos que investigar que comando era el que
podía ejecutar.
El usuario que estaba en el
/etc/sudoers era el
usuario4 y el comando que se
podia usar era el
cat. ¿Que
harias tu con esto?
Vamos por el shadow, UPS!, OpenBSD tiene es un master.passwd
Y luego que
haríamos con unos
hashes en
Blowfish?
Siii!!! ya tenemos la clave del root.
Alguien intento un ataque de fuerza bruta con todos los usuarios enumerados del sistema?, porque no funcionó la combinación
root/usuario4 ?
La respuesta es que en la
configuración del
SSH se
especificaba que solo el
root podía entrar desde la maquina local.
@
hacker#
ssh -l
root 186.113.242.209
root@186.113.242.209's
password:
Permission denied,
please try again.
root@186.113.242.209's
password:
...
En el archivo
/etc/ssh/sshd_config, incluimos:
AllowUsers root@127.0.0.1 usuario*
Eso significa que el
root solo se puede
loguear desde la maquina local (
thx duma).
Cuando los participantes alcanzaron el r00t de la maquina solo bastaba aprender a usar OpenBSD ...
jajaja
Mentiras, el siguiente paso era encontrar la
flag, donde estaba la
flag?.
Quien soy yooooo?
I Got the flag!
Una vez descubierta la
flag solo era cuestión de modificar el archivo
/etc/rc.conf para hacer que el servicio subiera de forma permanente, cambiar permisos y editar la página de inicio del servidor
web apache.
Bandera a modificar (httpd_flags) y ruta sin permisos a cambiar
Con esto se concluia este entretenido reto habilitado cerca de media noche y con una duración de 15 horas.
Felicitaciones al ganador del reto y todos los organizadores del mismo. Y gracias a Campus Party por permitirnos crear este tipo de actividades para que todos los que somos curiosos en estos temas, nos divirtamos.
p@d@w@n, Alberto Gil (organizador del área de seguridad y redes), rmolina (ganador), fixxxer, nonroot
FIN
Update: Una nueva foto del team ganador ;)
NeoEcoS, Rmolina, Sparkid
Update 2: Si alguien hizo algo diferente (legal o ilegal) jugando en el reto por favor comente este post.
Update 3: Interesados en jugar en los CTF futuros, se esta conformando un equipo Colombia: http://groups.google.com/group/ctf-colombian-team