Hacking CTF: Qué es el Capture the Flag para un novato?
¿Qué es el capture the flag hacking?
Este blog está pensado para una persona que es totalmente nueva en el hacking de Capture The Flag (CTF) y le explica lo básico para que se anime a entrar en un CTF y vea por sí mismo lo que es participar. Los CTFs son eventos que normalmente se organizan en conferencias de seguridad de la información, incluyendo los diversos eventos BSides. Estos eventos consisten en una serie de retos que varían en su grado de dificultad, y que requieren que los participantes ejerciten diferentes habilidades para resolverlos. Una vez que se resuelve un desafío individual, se da una «bandera» al jugador y éste la envía al servidor CTF para ganar puntos. Los jugadores pueden ser lobos solitarios que intentan los distintos retos por sí mismos, o pueden trabajar con otros para intentar conseguir el mayor número de puntos como equipo.
Los eventos de CTF suelen ser cronometrados, y los puntos se totalizan una vez que el tiempo ha expirado. El jugador/equipo ganador será el que haya resuelto más retos y, por tanto, se haya asegurado la mayor puntuación.
Aquí tienes una captura de pantalla de un tablero de puntuaciones de un evento CTF de BSides San Francisco:
Por favor, fíjate en la frase que he marcado con un recuadro rojo. Como verás rápidamente, las tareas de CTF suelen estar basadas en incidentes/vulnerabilidades del mundo real que te dan la oportunidad de experimentar cómo se hace realmente y te preparan mejor para defender tus propios sistemas de este tipo de ataques. Así que los eventos CTF no sólo son divertidos, sino que también pueden ser educativos y profesionalmente gratificantes.
Preparación para CTF
Si nunca has experimentado un evento CTF antes, no te frustres ni te rindas, porque la clave para cualquier tipo de hacking es la paciencia. Aunque a veces es algo difícil de tener, la única manera de aprender es persistir y practicar por tu cuenta (ver este post más abajo sobre cómo practicar) y quizás la próxima vez consigas el primer puesto. Una cosa que puedes intentar hacer durante tu primer evento de CTF, si es posible, es encontrar un equipo experimentado que esté dispuesto a dejarte unirte a ellos. Asegúrate de dejar claro que se trata de tu primer evento CTF y que te encantaría que te enseñaran las cuerdas.
En mi experiencia, los miembros de la comunidad InfoSec suelen estar muy dispuestos a compartir sus conocimientos con cualquiera que esté interesado en intentar aprender y crecer en este campo. Al mismo tiempo, sin embargo, un tema común que también se oye a menudo en la comunidad es que hay una escasez de talento. A veces esto puede ser una lucha muy real, y muchos profesionales que se han abierto camino en este campo han dedicado un tiempo considerable a hacerlo, sacrificando mucho para aprender, practicar y perfeccionar su oficio. Por esta razón, antes de pedir ayuda con preguntas básicas, primero debes investigar el tema y hacer un esfuerzo para resolver las cosas por tu cuenta.
Dentro de la comunidad de InfoSec, la confianza no es algo a lo que se le pueda dar valor. Si tu trabajo es hackear la red de un cliente, lo último que quiere cualquiera es que esa información sensible se comparta con alguien ajeno al equipo. La confianza es un componente crítico de esta relación y no puedo expresar lo suficiente lo importante que es mantenerse ético también durante las competiciones. Por último, pero ciertamente no menos importante: cuando vayas a un evento CTF, no olvides llevar un portátil u otro ordenador que tenga un sistema operativo con varias herramientas ya instaladas (más sobre esto más adelante) ya que sin eso vas a tener un comienzo difícil.
En resumen, los CTF son una gran oportunidad para aprender, así que si nunca has experimentado un evento CTF o incluso un evento BSides, ¡te animo encarecidamente a que te lances y te unas a uno tan pronto como puedas!
Servicio de Simulación Avanzada
Permite a los clientes probar sus operaciones de seguridad y sus capacidades de detección frente a técnicas avanzadas de pruebas de penetración.
Tipos de Eventos
Hay normalmente dos tipos diferentes de eventos CTF. Los dos tipos más comunes son:
- Equipo rojo/Equipo azul
- En este estilo de evento el equipo rojo intenta capturar banderas mientras que el equipo azul intenta defender las distintas banderas para que no sean capturadas.
- Equipo Rojo
- En este estilo de evento suelen participar una o varias personas, trabajando solas o en equipo, que intentan capturar varias banderas mientras no hay ningún equipo que las defienda.
Cada tipo de evento tiene varios pros y contras. En un escenario de Equipo Rojo contra Equipo Azul, los atacantes aprenden técnicas vitales mientras que los defensores tienen la oportunidad de aprender a defender sus sistemas de un ataque activo. En un escenario de Equipo Rojo, sin embargo, todo el mundo se une al pobre anfitrión del CTF y hace todo lo posible para que divulgue todas las banderas en las que los atacantes puedan poner sus garras digitales.
Tipos de desafíos
Los CTFs suelen mostrar diferentes desafíos que utilizan o ejercitan áreas de enfoque específicas. Algunas áreas de enfoque populares son:
- Programación
- Este tipo de tareas suelen requerir algún tipo de programación para ser resueltas. En la mayoría de los casos, implicará una mezcla de programación y algo de ingeniería inversa.
- «Cripto»
- Estos retos presentan escenarios comunes del «mundo real» que suelen incluir el siempre popular tipo de malware ransomware.
- Explotación
- Estas tareas le obligarán a determinar cómo explotar (mediante desbordamiento de búfer, formato de cadena, inyección SQL, etc….) un determinado proceso en ejecución en la máquina objetivo del CTF.
- Ingeniería inversa
- Para tareas como esta, normalmente será necesario realizar ingeniería inversa, por ejemplo, cuando el servidor te envíe un ejecutable.
- Kali Linux
- Esta distribución viene especialmente diseñada para pruebas de penetración. Está repleta de todas las herramientas imaginables y probablemente una tonelada más que nunca necesitarás usar.
- BlackArch
- Esta distribución está basada en Arch Linux pero viene pre-construida, al igual que Kali, con toneladas de herramientas de seguridad.
- Arch Linux
- Esta es una instalación básica de Linux que viene con herramientas estándar de Linux. Si eliges esta opción, tendrás que hacer el trabajo de instalar todas las herramientas que se te ocurran que puedas necesitar o, como mínimo, asegurarte de que tienes acceso a una conexión a Internet que te permita instalar rápidamente las herramientas que necesites en el evento.
¿Cómo participar en un evento CTF?
Mi primera experiencia con un CTF fue en un evento BSides local. Fui al evento BSides con el siguiente pensamiento: «Probablemente habrá muchos hackers expertos aquí; creo que me llevaré un portátil Tails que me permita tomar notas y navegar por la web cuando sea necesario». Aunque la mentalidad de querer proteger mis dispositivos no era exactamente una mala idea, depender de un Tails me complicó bastante la vida a la hora de participar en el evento CTF. Para ser justos, no me di cuenta de que habría un evento CTF allí y por eso ni siquiera pensé en ese aspecto del evento. Lo que yo recomendaría usar en tu primer CTF, en orden de más fácil a más difícil, sería uno de los siguientes:
Ejemplos
Como he mencionado antes, hubo un evento BSides en San Francisco que acogió una sesión de CTF hace unos meses. Podemos fijarnos más en este evento para daros una mejor idea de lo que es la captura de la bandera.
En primer lugar, la captura de pantalla de arriba os muestra la tabla de puntuación final, que también colocaré aquí:
Nota que el ganador ganó con 6.773.000 puntos mientras que el siguiente jugador más cercano tenía 5.178.000 puntos. Eso es una ventaja bastante grande que me dice que dcua es probablemente un jugador de hacker/CTF bastante experimentado. Ahora vamos a profundizar en los diferentes tipos de tareas de los que hemos hablado anteriormente. Aquí hay una lista de las diferentes tareas que estaban disponibles en este evento CTF:
Como podéis ver, hay diferentes tipos de tareas y algunas de ellas se solapan en cuanto a las habilidades necesarias para resolverlas. Veamos con más detalle algunas de las tareas de esa lista. Vamos a elegir una:
El Oráculo de la Bandera Mágica de Taylor es una tarea basada en ingeniería inversa y codificación que vale 150 puntos. Si haces clic en el enlace de la «Tarea» se te presenta información detallada sobre lo que implica:
Como puedes ver, hay un montón de detalles que se proporcionan incluyendo pistas sobre cómo resolver este desafío/tarea CTF. Debido a que este evento ya ha concluido, también hay una sección «Writeups» en la que diferentes jugadores han presentado los pasos que utilizaron para resolver el desafío. Esta sección puede ser una lectura muy interesante y también puede ayudarte si estás intentando el reto por ti mismo y necesitas un empujón por el camino correcto.
Vamos a echar un vistazo rápido a dos retos más y luego pasaré a los recursos que puedes utilizar para aprender más sobre CTF, cómo participar o incluso cómo organizar uno.
Para nuestro siguiente ejemplo, parece oportuno elegir la tarea ‘xref’ dadas todas las noticias sobre las recientes infecciones del ransomware WannaCry:
Aquí están los detalles de ‘xref’:
Nota que esta descripción no proporciona mucho para seguir. Eso es lo que hace que esta tarea sea particularmente interesante y un tanto desafiante; si nunca lo has hecho antes, será difícil saber incluso por dónde empezar. Afortunadamente, sin embargo, este evento ha terminado, así que usaremos uno de los escritos para tener una idea de cómo se resolvió el desafío.
La URL aquí: https://github.com/1337pwnie/ctf-writeups/tree/master/2017/UIUCTF proporciona los detalles. En este caso, hay un archivo README contenido en el archivo .ZIP proporcionado que proporciona una pista. Para resolver el desafío, es necesario escribir algo de código (aunque parece que a la tarea le falta la etiqueta «programación»). En lugar de repasar todo el escrito aquí, siéntase libre de navegar por la URL y la solución paso a paso.
A continuación, echemos un vistazo a nuestra última tarea:
La suerte es una vulnerabilidad «p0wn» con formato de cadena, lo que significa esencialmente que puntuar contra ella escupirá la bandera. En el mundo real, idealmente, lograr una tarea como esta te daría acceso sin restricciones a la máquina objetivo. Aquí están los detalles sobre goodluck:
Para resolver esto, tenemos que averiguar cómo utilizar una vulnerabilidad de formato de cadena para darnos una bandera. Los detalles de esto son técnicos y profundos, así que por favor vea la sección de recursos a continuación para los enlaces a los diversos desafíos mencionados en este post y luego puede utilizar los diversos escritos sobre las diferentes soluciones que se utilizaron para resolver los desafíos/tareas.
¿Cómo puedo aprender más sobre CTF?
Hay una gran cantidad de recursos a través de la web que puede utilizar para determinar cómo jugar un CTF o cómo organizar un CTF. Busca en Google y YouTube detalles sobre los próximos eventos en los que puedes participar. Muchos de ellos permiten a los jugadores remotos entrar en el juego, por lo que no es necesario asistir físicamente a un evento para participar. El CTF específico que utilicé para hablar de cómo funciona el CTF y de mis experiencias con él fue tomado de aquí: https://ctftime.org/event/453.
Aquí tienes otro recurso interesante y útil que puede resultarte útil: http://www.amanhardikar.com/mindmaps/Practice.html. Esta URL te da acceso a una amplia gama de herramientas, todas ellas relacionadas con aplicaciones vulnerables, aplicaciones web, sistemas operativos, etc. Estos recursos son un gran lugar para empezar.
Si Google, YouTube y los otros recursos presentados aquí no responden a sus preguntas, por favor, no dude en ponerse en contacto conmigo directamente y voy a tratar de ayudar tanto como pueda. Puedes contactar conmigo en Twitter @CerebralMisjif. No dudes en seguirme o enviarme un ping allí y haré todo lo posible para responder a cualquier pregunta que puedas tener.
Conclusión
Este blog está diseñado para una persona totalmente nueva en el CTF, y debería darte el valor de entrar en un CTF y ver por ti mismo cómo es. Los eventos de CTF son excelentes lugares para conocer a otros entusiastas/profesionales de la seguridad de la información, y también ofrecen buenas oportunidades para establecer contactos, hacer crecer tus habilidades en un entorno seguro, y divertirte mientras lo haces. En algunos casos, se entregan premios al ganador de un evento CTF y estos pueden ser muy buenos para destacar si estás buscando una carrera en el campo de la seguridad de la información.
Espero que hayas encontrado este artículo útil y educativo. También espero que hayas obtenido una mejor comprensión de lo que es un CTF, cómo puede ayudar a mejorar tus conocimientos, habilidades, así como la capacidad de defender los sistemas actuales, y sobre todo, lo divertido que puede ser un CTF. Como ya he mencionado, algunos sitios están empezando a permitir a los jugadores remotos participar en eventos de CTF, así que estate atento a ellos si estás interesado. Espero verte en uno algún día; por favor, ponte en contacto conmigo si vas a estar en algún evento para que podamos intentar conocernos.