Ganadores en el CDX Glasgow 2016
Este pasado fin de semana se ha desarrollado el CDX Glasgow 2016 (Cyber Defence Exercise, por sus siglas en Inglés), evento de seguridad informática organizado por la sociedad de tecnología de la Universidad de Glasgow (GU TechSoc), y con el claro apoyo del departamento de informática de la misma (Department of Computer Science o DCS por sus siglas). Entre sus sponsors se encuentran empresas muy conocidas, tanto en el sector de la informática como en varios otros, esta es la lista oficial:
- Scotland hacks
- Geeks without bounds (GWO Borg)
- J.P. Morgan
- Cisco
- PwC
- Morgan Stanley
- Verint
- Scottish Institute for Enterprise (sie)
- Scotland Police (desconozco por qué no sale en la web, pero salió en un email y efectivamente había gente de esta institución en el evento)
¿Qué es este evento?
La definición que tienen en su web es:
«Cyber Defence Exercise: Invented and used by the top security agencies in the world to train cyber security elites in cyber warfare. Our weekend long event has teams of students build and secure an App/Webservice before industry expert hackers try their very hardest to pwn their creations. It’s loads of fun for beginners and experts alike – If you are interested in security we hope to see you there!»
O, traducido al Español,
«Cyber Defence Exercise: Inventado y utilizado por las principales compañías de seguridad en el mundo para entrenar a élites en ciberseguridad. Nuestro evento reúne a estudiantes durante un fin de semana para que construyan y defiendan una App/Servicio web seguro, antes de que hackers expertos en la industria pongan todas sus fuerzas en destruir sus creaciones. Es muy divertido, tanto para principiantes como para expertos – ¡Si estás interesado en seguridad esperamos verte!»
¿Es divertido? Si te interesa esto, mucho. La descripción se queda corta en todo lo que hay alrededor del tema principal, así que intentaré explicarlo algo más detalladamente.
Antes del evento
Algunos de los hackers u organizadores suelen dar charlas anteriores al evento, donde podrás aprender mucho, de mano de expertos en el área. En mi caso acudí a 3 de ellos, uno sobre criptografía, otro sobre inyecciones SQL y vulnerabilidades en las webs y otro sobre seguridad en los sistemas operativos.
Son grandes formas de ampliar conocimientos en preparación para el evento.
El evento
El evento se desarrolla en el edificio Sir Alwyn Williams de la Universidad, edificio del departamento de informática, quienes amablemente permiten utilizarlo durante el fin de semana para el desarrollo del mismo.
Todo comienza el sábado a las 9 de la mañana. Los participantes llegan, y se van registrando y comprobando que efectivamente tengan un ticket para el evento. Resulta importante comentar que el evento es completamente gratuito, pero hay que disponer de una entrada por simples motivos de aforo (se «vendieron» muy rápido la verdad, cuestión de minutos).
¡Y sí, levantarse tan «pronto» nos cuesta a todos!
Awake before 12 on a Saturday? It can only mean one thing #cdxglasgow is happening again !!!! @GUTechSoc @pentestlimited
— Andy (@ZephrFish) February 27, 2016
En el momento del registro, todos los sponsors tienen su lugar donde anunciar sus servicios, darse a conocer o proveer más información acerca de sus programas de internship (algo así como un becario). Como no podía ser de otra forma, ¡hay mucho merchandising!, vine a casa con un powerbank, pendrives, y artilugios de todo tipo. Todo sea por que los participantes conozcan bien a tu empresa, ¡y hacen bien!
Con un ambiente bélico (barricadas con mesas, chapas identificativas, gorras de camuflaje, la tela que se aprecia en la foto…) y conociendo las intenciones de los hackers en la sala, queda claro el mensaje: ¡Es la guerra!. A la llegada lo primero que recibes es una gorra militar, una chapa identificativa y pintura para la cara.
Y entonces empieza el desafío de verdad.
El desafío
Nos encontramos en el Glasgow de 2050 (me he inventado el año pues no lo recuerdo, pero era en el futuro), en una dictadura de lo más dura, y donde la realidad es como aquella del juego Watch Dogs. Toda la ciudad está controlada por un ordenador, con un sistema operativo, CitadelOS (basado en Linux). ¿Todo controlado por un solo SO? ¡¿Qué podría ir mal?!
Y, evidentemente, todo irá mal. Continuamos con la historia: hemos recibido información de nuestro servicio de inteligencia, los agentes Grey 3ch0 (en las fotos, los que llevan camiseta gris) de que un grupo de hackers expertos, conocidos como Rogue Elite RED Division (en las fotos los que llevan camiseta roja) tiene pensado atacar nuestro sistema; y, lo que es peor, que saben cómo hacerlo.
Y nosotros somos la Blue G.U.T.S. Security Division (fotos: camiseta azul). ¿Qué tendremos que hacer? Detener el ataque.
Una cosa muy curiosa en el primer día fue que uno de los hackers iba caminando con una Pineapple WiFi en el cinturón, con las antenas sobresaliendo. Me hizo mucha gracia ver cómo miraba qué podía hacer con la wifi y monitorizaba constantemente todo desde el móvil.
Tareas a realizar
Empezaremos el día con una imagen (ISO) de un sistema operativo, CitadelOS, que ha sido cuidadosamente preparado para que lleve todo tipo de problemas de seguridad. Puertas traseras (backdoors), software antiguo, fallos de seguridad, kernels antiguos (y mentirosos)… Vaya, de todo para que puedan conseguir entrar al servidor.
El sistema está pensado al milímetro, mencionaré algunos de los problemas que traía, entre los que se encontraban un apt-get de lo menos confiable (el sistema para instalar paquetes en esta distro de Linux), un wget (para descargar archivos) que al menos tenía la gentileza de advertirte y decir que no abrieras el archivo que acababas de descargar, salvo que quieras tener que volver a empezar, un Kernel que miente acerca de su versión, y una infinita lista de otros problemas. No los mencionaré todos por varios motivos: para que evitar que alguien pueda encontrar esta lista, de tal forma que el evento perdería la gracia (al menos en parte) para ellos, y porque es tan larga que haría el artículo demasiado técnico y largo.
Para sumarse a esta lista, no se puede cambiar el Kernel o recompilarlo, lo que pone las cosas todavía más difíciles. Habrá que ir poco a poco investigando qué han metido en el sistema, que, incluso ellos te avisan, no es poco.
También tenías que ubicar un archivo que te daban (un archivo de texto) en el escritorio y asegurarte de que, bajo ningún concepto, obtuvieran acceso al mismo. No podías cifrarlo ni ubicarlo en otro sitio. Por suerte no establecieron límites a otras operaciones como cambiar el propietario del mismo.
A esto se suma realizar una aplicación web segura, de tal forma que este equipo de hackers profesionales no puedan romperla, conseguir inyectar datos, obtener más información de los que deberían, robar contraseñas, hacer Session Forgery (robar el inicio de sesión a otro usuario y hacerse pasar por él sin que este lo sepa), realizar CSRF (Cross-site request forgery), XSS (Cross Site Scripting), y un largo etcétera… Todo vale para conseguir entrar a nuestra web (con la clara excepción de un ataque DDoS, o de denegación de servicios).
La aplicación web tendría que permitir al líder de este hipotético y dictatorial Glasgow del futuro manejar a todos los ciudadanos y sus datos a su antojo. Y, evidentemente, sobrevivir, junto con el sistema operativo del servidor en el que está alojada, al ataque de un equipo de hackers expertos.
Problemas extra
Los hackers, como no podía ser de otra forma, son expertos y, además, muy astutos. Al principio no sabes distinguir quién es quién más allá de por el color de su camiseta, asocias camiseta roja a hacker, ¡nunca les digas nada!, «todo lo que digas podrá ser utilizado en tu contra«, pese a que no es la mejor estrategia en cuanto a seguridad, sí que es cierto que cuanto menos les digas mejor será para ti; cuanto mejor conozcan tu sistema, más rápido avanzarán en destruirlo. Esta nunca debe ser tu única estrategia (la seguridad por obscuridad, confiar en que no sepan como funciona), pero al menos les hará ir un poco más despacio al inicio.
Todo parece fácil, ¿no?. Es más complejo que eso. Los hackers tienen camisetas azules que se pondrán y vendrán a hablar contigo, haciéndose pasar por otro participante. Así que tienes que conocerlos muy bien, pues te engañarán en cuanto puedan.
Es incluso mejor, se sentarán sin que te des cuenta y empezarán a escuchar de lo que hablas, para ver qué consiguen aprender acerca de tu sistema.
Otro consejo: NUNCA, jamás, dejes tu ordenador desbloqueado. Los hackers se divierten mucho con esto, van caminando y ordenador que ven desbloqueado, ordenador donde hacen alguna broma. Ojo, son completamente respetuosos con tu ordenador real y tu información (no hackearán tu ordenador real o nada con información importante, solo romperán la máquina virtual donde tengas el sistema de la prueba) pero ello no quita que no se puedan divertir cambiando el fondo de pantalla, o publicando algo gracioso en tu Facebook.
Tengo que decir que todo esto hace el evento mucho más divertido, los hackers son muy graciosos y harán que te rías con su forma de actuar, sus respuestas a tus preguntas o sus advertencias (a veces incompletas).
Desafíos adicionales
Pese a que este es el evento principal, hay muchos desafíos extra y actividades adicionales.
Durante el evento hubo 4 desafíos adicionales, que otorgarían al equipo que los superara puntos extra:
- Romper grupos de Diffie-Hellman, un problema criptográfico.
- Obtener información desde una serie de números aleatorios
- Escapar de la habitación con la bomba
- Ganzúas y candados
En nuestro caso participamos en todos, pero en el tercero solo podía participar un grupo, y otros encontraron la bomba antes que nosotros. Encontrar la bomba no era todo el reto, era solo una parte, pero solo el que la encontrara podía continuar. Así que desconocemos en qué se basaba.
First team to find this and bring it to central room lvl 4 will be able to #DefuzeTheBomb #CDXGlasgow pic.twitter.com/a3WCyTDz4v
— GUTechSoc (@GUTechSoc) February 27, 2016
El de los grupos de Diffie-Hellman no lo hice yo en mi grupo y era muy matemático, así que no aportaré demasiada información pues llevaría mucho explicarlo todo.
Obtener información de una serie de números aleatorios: Esta prueba fue muy interesante, aunque muy larga; escribiré un resumen muy breve. Obtenías una serie de números aparentemente aleatorios (que puedes encontrar aquí: https://drive.google.com/open?id=0B-JlnDSacmhBeVlpSHFhM2tzQ2s) y tenías que ir descifrando qué era. Resultó ser un nonograma (en esta parte tuvieron que ayudarnos, pues entender qué eran esos números era muy difícil) que al convertirlo a un formato adecuado y representarlo daba acceso a un código QR. Después de acceder a la dirección del QR obtenías una imagen y un archivo de audio. Mediante esteganografía y herramientas de cifrado obtuvimos lo que necesitábamos para completarlo.
Ganzúas y candados: Lo que llamaron el Lockpick Village. Trajeron unos candados completamente transparentes y muchos kits de ganzúas para que aprendieras cómo abrirlos. El que mejor lo hiciera ganaba.
Con todas estas pruebas conseguías puntos extra, que te colocarían por encima a la hora de la competición principal.
La prueba
Has securizado el servidor, has hecho la aplicación web. Estás seguro de que todo es sólido, ¿no?. No, la verdad es que nunca estás seguro teniendo un equipo de hackers profesionales. Pero sabes que has puesto mucho trabajo. Y que al menos no deberían romperlo en un momento.
Como sugiere el horario del evento, los hackers tendrán 4 horas para intentar romper tu servidor y/o tu web. Está dividido en 4 partes, de 1 hora de duración cada una, dependiendo del nivel de complejidad y del esfuerzo que pondrán los hackers en romper tu sistema.
- Nivel principiante
- Nivel estándar
- Nivel avanzado
- Nivel «Que se desate el infierno«
¡Y vaya si lo consiguen!. Al poco de empezar la prueba empezamos a obtener miles de peticiones por segundo a todos y cada uno de los puertos del servidor, y a ver como la web de algunos equipos empezaba a cambiar inexplicablemente. Imágenes desapareciendo y reemplazándose por memes de internet, webs caídas, sistemas colgados… De todo un poco.
La cantidad en la que consiguen entrar evidentemente va avanzando según va avanzando el nivel de dificultad y, con él, las ganas que ponen los hackers en romper tu sistema.
Viendo qué rápido rompieron varias webs, me sorprendió sobrevivir hasta el nivel avanzado. Y pensamos que ahí se acababa todo, pero no, seguimos. Nuestra web seguía intacta, y el servidor funcionando; además de que el archivo en el escritorio no había sido accedido (al menos según los atributos del sistema de archivos).
Llegamos al nivel de «Que se desate el infierno» y seguía funcionando la web, ¡sorprendente!, sobre todo teniendo en cuenta lo rápido que tuvimos que desarrollarlo y que no tenemos, para nada, tanto conocimiento acerca de la materia como nuestros rivales.
¡Conseguimos acabar la prueba sin ser hackeados! Tanto la aplicación web como el servidor seguían intactos.
Por supuesto, ambos sistemas tienen vulnerabilidades seguro, pues ningún sistema es perfecto, pero resulta muy reconfortante ver que un grupo de profesionales no lo ha conseguido romper en este tiempo. Ni siquiera tras el nivel más difícil.
Nota: He de decir que SÍ consiguieron entrar, en los últimos 5 minutos del desafío. Uno de ellos usó una vulnerabilidad ZeroDay en nuestra versión del Kernel de Linux, que él mismo había descubierto hace días y que, pese a estar publicada, no tiene todavía solución oficial. Además, aunque la hubiera, no se podría haber solucionado, pues las normas impedían cambiar, recompilar o parchear el Kernel. Así que esta vulnerabilidad no fue tomada en consideración.
El trabajo que lleva solucionar los problemas que aparecen vale la pena. En la foto: me habían preguntado porque una parte esencial del sistema (el inicio de sesión de manera segura) lo estaba haciendo yo, pero durante unos minutos no funcionaba. ¡Mi equipo me preguntó tantas veces que acabé optando por esta solución! La verdad es que hay momentos en los que te cuesta solucionar un problema, por pequeño que sea, pero cuando lo arreglas te sientes muy bien.
Técnicas extra
Conseguir que el servidor y la web sea segura no es suficiente. Para conseguir más realismo, los agentes Grey 3ch0, nuestro supuesto servicio de inteligencia, tienen que saber utilizar nuestro sistema. Para ello, deberemos crear unas instrucciones de uso, que seguirán al pie de la letra. Por lo tanto, tenemos que preveer que los hackers utilicen ingeniería social para convencerlos de que no son hackers, que son los desarrolladores del sistema y que necesitan su usuario, contraseña, o cualquier otro dato.
Los hackers, como ya comenté, son muy astutos, se cambiarán de ropa solo para parecer participantes (camiseta azul) y convencer al usuario de que no intentan romper el sistema, sino arreglarlo. También intentarán guiar al usuario de la aplicación para obtener todo lo que necesiten.
Hay que escribir los detalles con mucho cuidado y tener en cuenta absolutamente todo lo que intentarán. Entre ello, especificar de quién deben desconfiar o qué certificados SSL/TLS no deben aceptar, si es que hemos optado por usar https.
¡Ganadores!
Los dos duros días de trabajo sin dormir nada dieron su fruto. Pese a que no esperaba que acabáramos tan bien (era nuestra primera vez en un evento así, y no somos, como ya comenté, tan expertos en la materia como los hackers).
Sin embargo, tras un tercer y segundo premio, anunciaron el primer premio: el equipo 4. Nuestro equipo.
#cdxglasgow first prize winners. Awesome fun was had by all pic.twitter.com/4sNjXSVE9s
— Darren Tarbard (@tarbard) February 28, 2016
#cdxglasgow #cdx2016 finale @GUTechSoc @pentestlimited pic.twitter.com/RzxH9ZvbeT
— Andy (@ZephrFish) February 28, 2016
Nuestra solución
No podemos publicar cómo solucionamos el servidor por varias razones: sería complejo, pues tendríais que tener VMWare instalado, el archivo es grande, y sobre todo, porque posiblemente empeoraría la experiencia de otros participantes en años siguientes. Estamos convencidos de que los expertos hackers evolucionarán sus técnicas, pero saber cómo lo solucionamos este año podría simplificar la tarea algo.
Sin embargo, sí podemos enseñaros nuestra web. No enseñaremos el código por el mismo motivo de antes, pero podemos daros un link para que la veáis:
https://vagaerg.pythonanywhere.com/
El lenguaje utilizado en la web es muy despótico hacia el usuario. Es la intención, pues según la «historia» nuestro sistema está en una dictadura sin ningún tipo de respeto hacia las personas, y donde todo está controlado.
Os subo algunas capturas de pantalla:
El eslogan (abajo del todo de las capturas de pantalla) es la parodia del eslogan del banco Santander en Reino Unido.
La web hizo bastante gracia a los hackers y les gustó bastante. Aunque no sabemos decir si eso es bueno, ¡pues le pusieron más ganas en romperla!. De hecho, le gustó sobre todo a uno de los mejores de ellos, así que eso nos dio más posibilidades de que la rompieran 😛
Si queréis verla, podéis hacerlo en:
https://vagaerg.pythonanywhere.com/
Si queréis entrar en la parte de usuarios registrados mandadme un email y os daré unas credenciales. No publicaré usuarios y contraseñas públicamente, por motivos obvios.
Conclusión
El evento fue impresionante. Lo pasamos genial, tuvimos una muy agradable sorpresa al final y, sobre todo, aprendimos mucho. Si tenéis la posibilidad de acudir a algún evento similar, os lo recomendaría completamente. Los hackers y organizadores que acuden están dispuestos a ayudarte y a enseñarte, pues saben que vas en parte para aprender y perfeccionar, así que es una gran y divertida forma de aprender.
Eso sí, ¡descansad el día antes!
Aprovecho para dar las gracias a todos los organizadores, sponsors y patrocinadores que permitieron que este evento ocurriera, así como a los voluntarios y hackers que pusieron tantas ganas y trabajo.
#cdxglasgow has started @GUTechSoc @PMason00 and @ZephrFish representing @pentestlimited pic.twitter.com/zDIPwTf03s
— Andy (@ZephrFish) February 27, 2016
Si queréis ver más acerca de todo esto, os recomiendo: