Descubriendo el mundo de la ciberseguridad: una experiencia en competición CTF
La ciberseguridad es un área de la informática que evoluciona rápidamente. Los profesionales y aficionados de esta disciplina deben estudiar, investigar y practicar constantemente para estar al día con las últimas técnicas y vulnerabilidades que se van descubriendo en un mundo cada vez más digitalizado. Una manera de mantenerse en forma son las competencias de hackeo conocidas como CTF (“Capture The Flag” o captura la bandera). En estas, los participantes ponen a prueba sus habilidades por diversión, gloria y, a veces, por algo de dinero. En este articulo les daré un breve recuento de nuestra experiencia participando en el CTF patrocinado por GMV y organizado por la organización Sugus, creada y presidida por estudiantes y egresados de la escuela de informática de la Universidad de Valladolid.
Nuestra participación se materializó en gran parte gracias a nuestro compañero Juan Álvarez-Ossorio, quien se desempeña como profesional en ciberseguridad en GMV y tiene una amplia experiencia en este tipo de competiciones. No es un secreto para nadie que un gran número de desarrolladores de software o ingenieros del área de informática se ven seducidos por la idea de incursionar en este mundillo de la ciberseguridad, pero se intimidan al tomar conciencia de la cantidad y complejidad de la información. Juan ya había participado el año pasado en la primera edición junto con otros compañeros de GMV y, en esta ocasión, nos animó a Alberto Gentil y a mi persona, Boris Treccani, a formar parte del equipo que representaría a GMV este año. Debido a su experiencia en este tipo de actividades, Juan se convirtió en nuestro coach y capitán, compilando una serie de recursos y ejercicios que nos servirían para prepararnos para la competencia.
Estos abarcaban distintas áreas, tales como la criptografía, el análisis forense, la esteganografía, la explotación de vulnerabilidades de sistemas, la manipulación de memoria, la explotación de vulnerabilidades en el contexto web tanto del lado del cliente como del lado del servidor, entre otros.
Este régimen de entrenamiento inició varios meses antes de la competición e incluso llegamos a participar en un par de CTFs online para familiarizarnos con el formato de la competencia e ir acostumbrándonos a saber gestionar el tiempo, ya que debíamos conseguir hacer lo máximo posible en el tiempo limitado de la competencia, y familiarizarnos con la sensación de trabajar bajo presión.
Participar en estos CTFs online también nos daba una idea de cuánto habíamos avanzado con nuestro entrenamiento, aunque francamente eran eventos de entrada libre donde participaban miles de equipos y, en general, eran de un nivel mucho más avanzado para lo que estábamos preparados en ese momento.
También comenzamos a preparar una página con recursos y scripts que habíamos usado para resolver los ejercicios de entrenamiento, con fragmentos de códigos o apuntes que considerábamos serían útiles a la hora de la competencia y que podrían ahorrarnos unos valiosos minutos, en lugar de estar recordando cómo se realizaban los procesos sobre la marcha. Lo que intentamos fue generar una caja de herramientas que, potencialmente, nos sería de utilidad durante la competencia.
Además, tuvimos que preparar las máquinas con las que competiríamos, instalando software que podríamos necesitar para retos de las distintas categorías. Requeríamos programas para realizar análisis estenográfico de audio, imágenes y videos, editores de texto para scripting, instalar librerías útiles para manipulación y análisis de archivos, software de análisis forense y otras varias herramientas que podríamos necesitar para no perder tiempo descargándolas durante la competencia.
Una vez asignados a nuestra mesa, comenzamos a instalar nuestros equipos y prestar atención a las indicaciones y anuncios de los organizadores. Al comenzar el evento, nos fueron proporcionadas las credenciales necesarias para acceder a la página con los enunciados de los retos que debíamos resolver.
Cada reto puede pertenecer a un área específica de la ciberseguridad o ser una combinación de varias disciplinas. Cada reto tiene un enunciado que te cuenta una pequeña historia con pistas o indicaciones que te sirven para solventar el problema y, de acuerdo con la dificultad del reto, se le asignaba un puntaje acorde a la dificultad.
En el caso particular de este CTF, el sistema de puntaje era dinámico, donde el valor de un reto se determinaba por la cantidad de equipos que consiguieran resolverlo; así, mientras más equipos lo solucionaban, menos puntaje otorgaba el reto. También, en el enunciado se podían canjear puntos por pistas adicionales en caso de que el equipo se encontrara bloqueado con un determinado reto, pero esto no suele ser una buena idea, ya que te pone en desventaja con respecto a los equipos que resuelvan el mismo reto sin recurrir a este canje por las pistas adicionales.
Comenzamos leyendo brevemente el enunciado de cada reto para tener una noción general de a qué nos enfrentábamos y establecer un orden de prioridades para acumular la mayor cantidad de puntos lo más rápidamente posible.
Había retos de criptografía que eran bastante similares a los que habíamos practicado y que supimos cómo resolver prácticamente al instante. Por su parte, Alberto se dispuso a abordar un par de retos asociados a IoT (Internet of Things), que suelen tener que ver con dispositivos con conexión a internet. Estos se basan en encontrar la vulnerabilidad que te permite establecer una conexión con el dispositivo y controlarlo (en este caso, unas cámaras de vigilancia preparadas por el equipo del evento y que se encontraban escondidas dentro del campus, las cuales apuntaban a una pizarra con la frase de respuesta o bandera que debíamos canjear en el campo de respuesta del reto para recibir el punto).
Por su parte, Juan se dispuso a realizar los retos de esteganografía, análisis forense, ingeniería inversa y pwn o explotación de binarios, que son los archivos ejecutables que todos conocemos y usamos (.exe y similares). La explotación de binarios es un tema extenso y variado dentro del mundo de la ciberseguridad, pero que se puede resumir en el acto de conseguir y explotar una vulnerabilidad en un programa para así obtener datos y privilegios en la máquina o modificar el comportamiento del programa para que haga lo que el atacante designe.
Cabe mencionar que estas disciplinas no son inherentemente maliciosas, ya que mediante el estudio y la experimentación de cómo vulnerar sistemas existentes, se puede comprender y diseñar contramedidas para prevenir o fortalecer la seguridad en el caso de ataques por parte de actores maliciosos.
Entrando a la segunda hora de la competencia, nos encontrábamos resolviendo retos a buen ritmo: Alberto con los de IoT, Juan con explotación de binarios y, mi persona, los relacionados a criptografía, aún así, durante buena parte de la competición tuvimos un equipo que nos estuvo “pisando los talones” constantemente y que no nos dejó el lujo de relajarnos.
Incluso Juan, que es un veterano curtido en el mundillo, estaba impresionado con este equipo, ya que siempre que conseguíamos la respuesta de un reto y ganábamos distancia, este equipo rápidamente volvía a acercarse a nosotros. Básicamente, cualquier mala decisión en cuanto a gestión de tiempo o qué reto decidíamos abordar de los que nos quedaban disponibles podía convertirse en la razón de llegar en segundo lugar.
Alrededor de la marca de la 3era hora, conseguimos asegurar varios retos que nadie más había conseguido resolver, por lo que recibimos el máximo puntaje por ellos y nos proporcionó una distancia cómoda respecto al segundo puesto, por lo cual nos sentimos con margen suficiente para intentar algunos otros que intuíamos que eran potenciales madrigueras de conejos sin fin.
Acercándonos a la marca de la 4ta hora y al final de la competencia, habíamos conseguido doblar el puntaje del segundo lugar con 1500 puntos y asegurar el primer lugar.
Personalmente, la sensación de ganar la competencia fue como la de comenzar un largo viaje con buen pie. Además, mis compañeros estaban bastante felices y orgullosos con el resultado de tanto esfuerzo y horas dedicadas. En este caso el premio para los primeros lugares era una serie de materiales POP (bolis, mochila, tote bag, pegatinas, hoodies de la UVA, etc) y un certificado. El equipo que nos estuvo pisando los talones buena parte de la competencia, termino alcanzando el 4to lugar. Al hablar con ellos para saber que les había ocurrido, nos explicaron que cerca de la marca de la tercera hora uno de los integrantes se quedó bloqueado tratando de solucionar un reto y en vez de dividir esfuerzos para tratar de resolver otros de los problemas en paralelo, el equipo entero se volcó sobre el que estaba dando problemas a su integrante y esa decisión les costó el podio.
Ha sido una experiencia gratificante, que me ha enseñado que la ciberseguridad es un mundo complejo y extenso, pero, aun así, con algo de buena planificación, dedicación, constancia y un poco de dirección, puede convertirse fácilmente en una carrera viable, gratificante, glamorosa y apasionante.
Para concluir, quiero manifestar mi agradecimiento a la organización Sugus y GMV por hacer posible este evento, y quiero destacar la importancia de que empresas como GMV, apoyen este tipo de competencias relacionadas a tecnologías de la información, que ayudan a la formación e incentivan la excelencia de los futuros profesionales de estas áreas.
Autor: Boris Pietro Treccani Gómez