Saltar al contenido

¿Como desarrollar un CTF para eventos de seguridad informática?

¿Que es un CTF?

Primero necesitaremos entender que es CTF, la sigla CTF viene de las siglas en inglés Capture The Flag, que en español traducimos en Captura La Bandera. Un juego de captura la bandera consiste de varias reglas básicas:

  • Debe haber mínimo 2 equipos cada uno con su bandera en su base
  • Cada uno debe evitar que el contrincante capture su bandera
  • El ganador es quien finalmente captura la bandera y la lleva a su base

Esto hacía que cada equipo con sus habilidades lograra defender su base y a su bandera.

What is Capture The Flag?

¿Que es un CTF en seguridad informática?

Un CTF en este ambiente empezamos a hablar acerca de desafíos informáticos que ponen a prueba lo que sabemos e incluso llegar a aprender nuevas habilidades.

GitHub - n0obit4/ctf-writeups: This repository is for uploading CTF related  material

Consiste en una simple tarea como lo es resolver una serie de tareas que aumentan su dificultad a medida que avanzamos en los retos, al lograr capturar la bandera o resolver el reto, obtendremos una recompensa en puntos, esto puede variar según la dificultad del reto. Estos retos pueden tener hints (pistas) los cuales suelen facilitar la resolución de las tareas como el decir que herramienta usar o donde buscar.

Puede que estos eventos duren desde varias horas a llegar a durar varios días, ciertamente debemos tener en cuenta la duración de estos eventos ya que de ahí depende de la cantidad de retos y la dificultad.

¿Como desarrollar un CTF?

Antes de empezar a analizar que retos que vamos a crear, primero tenemos que tener en cuenta es haber tenido experiencia desarrollando retos de CTF porque de ahí partimos con la realización de los retos y segundo, debemos tener claro los tipos de retos que podemos desarrollar.

Para empezar a desarrollar o es necesario haber realizado retos en eventos CTF públicos, podemos empezar con retos privados como por ejemplo:

Owasp Juice Shop | Murat Kaya - Application Security Engineer & Pentester &  DevSecOps

OWASP Juice Shop

Este es una aplicación insegura desarrollada en Node.js open source (código abierto), debido a que es libre se puede descargar y ejecutar desde nuestro computador, a medida que logramos resolver los retos, la aplicación nos va puntuando.

Podemos ver y descargar este proyecto desde la página oficial de OWASP en el cual nos detalla claramente el proyecto y los retos que contiene con su puntuación.

Este tiene retos relativamente sencillos y otros que son muy complicados, pero este juego nos enseña bastante.

TryHackme

Otro podría ser esta opción, a diferencia de la de OWASP esta no necesitamos descargar nada más que nuestras herramientas de pentesting. Esta plataforma nos ofrece varias máquinas virtuales que son vulnerables por lo tanto debemos hallar estas vulnerabilidades y explotarlas para obtener nuestra bandera y nuestros puntos.

Podemos ingresar y probar desde https://tryhackme.com/

Learn Cybersecurity with TryHackMe — Delivering Gamified, Real-World  Lessons Through Your Browser - HostingAdvice.com | HostingAdvice.com

OverTheWire

Así como muchos están iniciando, hay plataformas que son mucho más sencillas de poder jugarlas como es el caso de OverTheWire, así como está pensada para los principiantes, por tanto no necesitaremos de tantos programas.

Podemos ingresar y probar desde https://overthewire.org/wargames/

OverTheWire - Twitter Search
Introducción a Hack the Box » Hacking Lethani

HackTheBox

Por último está la opción de los más avanzados, al igual que TryHackme, esta tiene muchas máquinas virtuales a la cual conectarnos y así obtener la bandera y nuestros puntos. Lo curioso de esta plataforma es que su registro no es como el típico registro a las páginas ya que le ponen su toque único, debemos hallar la vulnerabilidad en la página para encontrar su código de invitación.

Podemos ingresar y probar desde https://www.hackthebox.eu/

Después de haber adquirido un poco de experiencia de como funcionan las plataformas de capturar la bandera, tenemos que saber que tipos de retos existen, los cuales son relacionados a continuación.

  • Análisis Forense: Como el análisis de imágenes de memoria, de discos duros y/o capturas de red, las cuales almacenan diferentes tipos de información.
  • Criptografía: Textos cifrados mediante un criptosistema determinado como por ejemplo el uso de morse o base64.
  • Esteganografía: Imágenes, sonidos o vídeos que ocultan información en su interior.
  • Explotación: Descubrimiento de vulnerabilidades en un servidor, en varias ocasiones tendremos que desarrollar el script o descargarlo de internet con el objetivo de explotar la vulneravilidad.
  • Ingeniería Inversa [Reversing]: Inferir en el funcionamiento del software. Como por ejemplo ddescompilar los binarios de Windows y Linux, pero tampién puede ser un APK (Android) entre otros compilados.
  • Programación: También conocidos como PPC (Professional Programming & Coding), desafíos en los que se requiere desarrollar un programa o script que realice una determinada tarea.
  • Web: Descubrimiento de vulnerabilidades en una aplicación Web, como por ejemplo la anterior mensionada OWASP Juice Shop.
  • Reconocimiento: Estos retos son muy poco comunes de encontrar y consiste en la búsqueda de la bandera en distintos sitios de Internet. Para resolverlo se dan pistas
  • Trivial: Diferentes preguntas relacionadas con la seguridad informática.
  • Misceláneo: Retos aleatorios que pueden pertenecer a distintas categorías sin especificar.

¿Como y donde llevo el control de los retos y usuarios?

Ya que sabemos como resolver retos y los tipos de retos que podemos encontrar, necesitamos una plataforma la cual nos lleve el control de los puntos, retos, hints, usuarios, tiempo entre otros. Existe varios métodos:

  • Buscar un framework de captura la bandera, la cual podremos encontrar open source o pagas.
  • Con conocimientos de programación, desarrollar la plataforma a nuestra medida.

Nos enfocaremos de ahora en adelante a la primera opción, en buscar una plataforma que incluya todo, hay varias opciones, me centraré únicamente en los frameworks libres:

  • Facebook’s CTF framework – https://github.com/facebookarchive/fbctf (Está archivado el proyecto y no se actualiza desde el 2018)
  • Mellivora – https://github.com/Nakiami/mellivora
  • NightShade – https://github.com/UnrealAkama/NightShade (Desde el 2017 no se actualiza)
  • LibreCTF – https://github.com/easyctf/librectf
  • CTFd – https://github.com/CTFd/CTFd

En conclusión, debemos mirar cada uno de estas opciones anteriormente mencionadas y decidir la que más nos guste y se adapte a nuestras necesidades ya que no todas funcionan con las mismas tecnologías.

Muchas de estas funcionan con Docker lo cual facilita su ejecución en nuestro servidor ya que nos configura bases de datos, backend, cache y demás cosas con las cuales funcionan estos frameworks.

Suerte creando tu CTF 😁

Publicado enSin categoría

Sé el primero en comentar

Deja un comentario

Tu dirección de correo electrónico no será publicada.