Aprender hacking con un CTF. Soy un adicto a los CTF’s, desde que participé hace un par de años no he podido parar, y es que engancha más que «Juego de Tronos».
Vale. Parece guay, pero, ¿qué son? ¿Para qué sirven?
¿Qué es un CTF?
Un CTF (Capture The Flag) en Español, «Captura la bandera». Son competiciones gratuitas que nos permiten poner a prueba nuestras habilidades sobre hacking por medio de retos de diferentes modalidades que tendremos que resolver para conseguir el premio, la famosa «flag».
La «flag» es un código (Ej. flag{W3lc0m3_t0_CTF} que permite confirmar a la plataforma de la competición que hemos sido capaces de resolver el reto y normalmente, va acompañada de una compensación con puntos. La cantidad de puntos irá relacionada con la complejidad del reto y/o tiempo/personas en resolverlo. Por ejemplo, si el reto principalmente vale 100 puntos y hemos sido los 2º en resolverlo, pues el 1º habrá ganado 100 puntos, nosotros (2º) 99 puntos, el 3º 98 puntos, etcétera.
Todo lo bueno se acaba y es que los CTF’s tienen un tiempo límite para resolver el mayor número de retos posibles. Este tiempo normalmente es de 24/48h durante fin de semana, aunque existen otros con una duración de una semana, dos o incluso un mes.
¿Para qué sirve un CTF?
Los CTF sirven para:
- Adquirir conocimientos y experiencia en el entorno de la seguridad información.
- Poner a prueba nuestras habilidades de hacking de forma legal y controlada.
- Mejorar tu currículum vitae.
- Lo más importante…. ¡Para divertirnos!
Tipos de CTF
Estas son las diferentes modalidades:
Jeopardy
Retos de diferentes temáticas (Crypto, Web, Forense, Reversing, Exploting…) donde se ganan puntos cuando son resuelto según el nivel de dificultad. Gana el participante o equipo que más puntos tenga cuando se termine el tiempo de juego.
Attack-Defense
Cada equipo tiene un servidor o una red de equipos con vulnerabilidades que deben de proteger mientras que intentan conseguir acceso al equipo contrario. En este reto hay puntos de ataque y puntos de defensa.
Mixted
Wargame, hardware y otros.
Retos en un CTF mientras aprendes hacking
Explicaré cada uno de los retos que nos podemos encontrar en un CTF:
Criptografía (Crypto)
Podríamos definirlo como un procedimiento donde se oculta un mensaje secreto por medio de un cifrado o codificación para evitar que sea legible para una persona que no sepa descifrarlo.
Web
Este tipo de desafíos se centran en encontrar y explotar vulnerabilidades en la aplicación web como pueden ser: Inyección SQL, Cross-Site Scripting (XSS), fuerza bruta, CRLF, CSRF….
Esteganografía (Stego)
Técnicas que ocultan mensajes u objetos dentro de otros, de forma que no se detecte su presencia y pasen inadvertidos.
Ingeniería inversa (Reversing)
Generalmente se analiza un archivo binario (BIN, EXE, ELF, APK…) ejecutable. Los participantes deben de encontrar la flag o clave mediante la descompilación del fichero.
Explotación (Exploting)
El objetivo de este reto es de construir nuestro propio exploit, normalmente para un binario que se ejecuta en un servidor o para una aplicación web. Generalmente se tiene acceso al código fuente de la aplicación a explotar.
Forense (Forensic)
Consiste en investigar y analizar algún tipo de dato, como pueden ser capturas de red (.pcap), volcados de memoria o de discos duros.
Programación (Programming)
En este tipo de desafíos tendremos que elaborar un programa o script para que haga una determinada tarea.
OSINT (Open Source Intelligence)
Estos retos son bastante escasos y rara vez nos la encontraremos en un CTF. Esta modalidad consiste en investigar algo o alguien por medio de fuentes de acceso público (foros, redes sociales, blogs, wikis, revistas, prensa…)
Varios (Misc)
Mezcla de retos de las diferentes categorías vistas anteriormente.
¿Cómo participar en un CTF y poner a prueba tus habilidades de hacking?
Es muy fácil, simplemente hay que registrarse en la web del evento, el enlace a este lo comparten por RRSS días antes de comenzar el CTF.
Si además quieres estar a la última, mi recomendación es que te registres en CTF Time y compruebes el calendario donde especifican las fechas de inicio/fin y también nos proporciona el enlace directo al CTF.
¿Qué necesito para jugar?
Es muy recomendable contar con una distribución Linux preparada para pentesting. Estas distros ya cuentan con un gran número de herramientas instaladas y configuradas, por lo que solo tendremos que instalarla, virtualizarla o iniciarla en un docker.
Aquí una lista de las más populares:
¿Dónde puedo entrenar para jugar en un CTF y seguir adquiriendo conocimientos en hacking?
Existen muchas plataformas de entrenamiento donde poder practicar hacking de forma legal y GRATIS, voy a recomendaros algunas de ellas:
- Bandit – OverTheWire: Genial para empezar en el mundo de hacking y familiarizarse con los comandos Linux.
- gf0s Labs: Pequeño laboratorio con tres retos que se asemejan a la realidad, perfecto para empezar en este mundo del CTF.
- Root Me: Sitio con muchos retos de diferentes tipos y clasificados por niveles.
- Hack Me: Plataforma donde cada uno puede subir sus aplicaciones web vulnerables para fines educativos o de investigación.
- HackThis: Sitio de entrenamiento con diferentes tipos de retos por niveles donde incrementará la dificultad tras resolver el anterior.
- Hack The Box: Uno de los laboratorios más famosos y de moda en el mundo del hacking, disponen de máquinas con todo tipo de Sistemas Operativos y también retos de diferentes temáticas.
- VulnHub: Máquinas virtuales (.OVA) vulnerables para descargar y montar en tu propio equipo.
- CTF Time: No hay nada mejor que hacer lo que te gusta y con amig@s, pues en CTF Time podréis crear un equipo y participar en una enorme cantidad de competiciones por todo el mundo.
Crea tu propio CTF
¿Te gustaría crear tu propio CTF para un evento o por diversión? Puedes hacerlo de forma gratuita con cualquiera de estas plataformas:
Y con toda esta información ya podéis empezar a jugar. Eso si, siempre en plataformas controladas o en nuestros propios equipos, y nunca (sin autorización expresa y por escrito) en sitios reales.