Post on 04-Jul-2022
1
UNIVERSIDAD DE EXTREMADURA
Escuela Politécnica
Grado en Ingeniería Informática en Ingeniería del
Software
Trabajo Fin de Grado
Planteamiento de un CTF para practicar
hacking ético e informática forense
Planteamiento de un Capture The Flag para practicar hacking ético e informática
forense
UNIVERSIDAD DE EXTREMADURA
Escuela Politécnica
Grado en Ingeniería Informática en Ingeniería del
Software
Trabajo Fin de Grado
Planteamiento de un CTF para practicar
hacking ético e informática forense
Autor: Raúl Eduardo Maguiña Becerra
Tutor: Andrés Caro Lindo
Co-tutor: José Carlos Sancho
Planteamiento de un CTF para practicar hacking ético e informática forense
3
Índice general de contenidos Índice de Figuras ........................................................................................................ 5
Resumen ..................................................................................................................... 8
1. Introducción ....................................................................................................... 9
2. Capture The Flag, qué es ................................................................................. 10
2.1 CTF a lo largo del mundo ............................................................................... 12
2. 2 Por qué crear un CTF..................................................................................... 13
2.3 Creación de entornos CTF .............................................................................. 13
3. Objetivos .......................................................................................................... 15
4. Implementación de los entornos CTF .............................................................. 15
4.1 Soluciones ....................................................................................................... 16
5. Reto 1 ............................................................................................................... 16
4.1 Historia ........................................................................................................... 16
4.2 Herramientas ................................................................................................... 17
4.3 Implementación .............................................................................................. 17
4.3.1 Paso 1 ....................................................................................................... 17
4.3.2 Paso 2 ....................................................................................................... 20
4.3.3 Paso 3 ....................................................................................................... 21
4.4.4 Flujo de CTF ............................................................................................ 23
4.5 Solución .......................................................................................................... 23
5. Reto 2 ............................................................................................................... 34
5.1 Historia ........................................................................................................... 34
5.2 Herramientas ................................................................................................... 34
5.3 Introducción .................................................................................................... 35
5.4 Implementación .............................................................................................. 35
5.4.1 Paso 1 ....................................................................................................... 35
5.5 Solución .......................................................................................................... 41
Planteamiento de un CTF para practicar hacking ético e informática forense
4
6. Reto 3 ............................................................................................................... 49
6.1 Historia ........................................................................................................... 50
6.2 Herramientas ................................................................................................... 50
6.3 Implementación. ............................................................................................. 50
6.3.1 Paso 1 ....................................................................................................... 50
6.3.2 Paso 2 ....................................................................................................... 53
6.3.3 Paso 3 ....................................................................................................... 53
6.4 Solución .......................................................................................................... 54
7. Reto 4 ............................................................................................................... 62
7.1 Historia ........................................................................................................... 62
7.2 Herramientas ................................................................................................... 62
7.3 Implementación .............................................................................................. 62
8. Reto 5 ............................................................................................................... 66
8.1 Historia ..................................................................................................... 66
8.2 Herramientas ............................................................................................. 66
8.3 Implementación .............................................................................................. 66
9. Reto 6 ............................................................................................................... 69
9.1 Historia ........................................................................................................... 69
9.2 Herramientas ................................................................................................... 69
9.3 Implementación .............................................................................................. 69
10. Discusión ...................................................................................................... 71
11. Conclusiones y trabajos futuros ................................................................... 73
12. Referencias ................................................................................................... 75
Planteamiento de un CTF para practicar hacking ético e informática forense
5
Índice de Figuras
Ilustración 1. Capturar la bandera, juego .................................................................. 10
Ilustración 2. Capturar la bandera, competición ....................................................... 11
Ilustración 3. Elección de red a capturar .................................................................. 18
Ilustración 4. Captura de paquetes ............................................................................ 18
Ilustración 5. Paquete detallado ................................................................................ 19
Ilustración 6. Ruta URL............................................................................................ 20
Ilustración 7. Comando de concatenación ................................................................ 20
Ilustración 8. Conjunto de archivos corruptos .......................................................... 21
Ilustración 9. Imagen para modificar ........................................................................ 22
Ilustración 10. Hexadecimales de ilustración anterior.............................................. 22
Ilustración 11. Imagen resultante.............................................................................. 23
Ilustración 12. Flujo Reto 1 ...................................................................................... 23
Ilustración 13. Metadatos archivo ............................................................................ 24
Ilustración 14. Paquetes capturados.......................................................................... 25
Ilustración 15. Intercambio de paquetes con servidor .............................................. 26
Ilustración 16. Hexadecimales archivo ..................................................................... 27
Ilustración 17. Continuación hexadecimales archivo oculto .................................... 27
Ilustración 18. Comando para buscar archivos ocultos ............................................ 28
Ilustración 19. Siguiente paso ................................................................................... 29
Ilustración 20. Metadatos archivo zip....................................................................... 29
Ilustración 21. Metadatos archivo mp3 .................................................................... 30
Ilustración 22. Metadatos archivo pdf ...................................................................... 30
Ilustración 23. Metadatos archivo jpg ...................................................................... 30
Ilustración 24. Cabecera archivo zip ........................................................................ 31
Ilustración 25. Cabecera archivo mp3 ...................................................................... 31
Ilustración 26. Cabecera archivo pdf ........................................................................ 31
Ilustración 27. Cabecera archivo jpg ........................................................................ 31
Ilustración 28. Comando para saber el tipo de archivo ............................................ 32
Ilustración 29. Archivos corregidos.......................................................................... 32
Ilustración 30. Interior archivo comprimido............................................................. 32
Ilustración 31. Pista contraseña zip .......................................................................... 33
Ilustración 32. Obtención primera bandera .............................................................. 34
Planteamiento de un CTF para practicar hacking ético e informática forense
6
Ilustración 33. Página inicial .................................................................................... 36
Ilustración 34. Pista siguiente ejercicio .................................................................... 38
Ilustración 35. Bandera final .................................................................................... 38
Ilustración 36. Conversión bandera a sonido............................................................ 39
Ilustración 37. Espectograma del sonido .................................................................. 39
Ilustración 38. Código QR para los archivos ............................................................ 40
Ilustración 39. Comando para dividir archivo. ......................................................... 40
Ilustración 40. Código QR dividido ......................................................................... 41
Ilustración 41. Código pista HTML ......................................................................... 42
Ilustración 42. Código visto por herramientas de desarrollador ............................... 43
Ilustración 43. Código HTML siguiente página ....................................................... 43
Ilustración 44. Extracción hash archivo comprimido ............................................... 44
Ilustración 45. Ataque por diccionario ..................................................................... 44
Ilustración 46. Ataque por diccionario ROCKYOU ................................................ 44
Ilustración 47. Ataque por diccionario phpbb .......................................................... 45
Ilustración 48. Ataque por diccionario Hotmail ....................................................... 45
Ilustración 49. Creación de diccionario .................................................................... 45
Ilustración 50. Ataque por diccionario personalizado con zip2jhon ........................ 45
Ilustración 51. Ataque por diccionario fcrackzip ..................................................... 46
Ilustración 52. Unificar archivos .............................................................................. 46
Ilustración 53. Código QR resultante ....................................................................... 47
Ilustración 54. Descodificar código QR ................................................................... 47
Ilustración 55. Hexadecimales archivo ..................................................................... 48
Ilustración 56. Audio final ........................................................................................ 48
Ilustración 57. Espectograma con bandera ............................................................... 49
Ilustración 58. Bandera Reto 3 ................................................................................. 54
Ilustración 59. Metadatos archivo con texto cifrado ................................................ 55
Ilustración 60. Hexadecimales archivo ..................................................................... 55
Ilustración 61. Verificación extensión del archivo ................................................... 55
Ilustración 62. Metadatos archivo intermedio .......................................................... 58
Ilustración 63. Hexadecimal archivo cifrado ............................................................ 59
Ilustración 64. Verificación extensión archivo cifrado ............................................ 59
Ilustración 65. Metadatos archivo final .................................................................... 60
Ilustración 66. Hexadecimales archivo final ............................................................ 60
Planteamiento de un CTF para practicar hacking ético e informática forense
7
Ilustración 67. Verificación extensión archivo final ................................................ 61
Ilustración 68. Bandera Reto 3 ................................................................................. 62
Ilustración 69. Texto de relleno ................................................................................ 63
Ilustración 70. Caracteres imprimibles ..................................................................... 64
Ilustración 71. Cáracteres importantes ..................................................................... 64
Ilustración 72. Bandera de colores con la solución .................................................. 65
Ilustración 73. Página inicial .................................................................................... 67
Ilustración 74. Página con pista final........................................................................ 68
Ilustración 75. Enlace a la bandera ........................................................................... 68
Ilustración 76. Modificación metadatos ................................................................... 70
Ilustración 77. Resultado modificación hexadecimales ........................................... 70
Ilustración 78. Texto cifrado .................................................................................... 70
Ilustración 79. Cuadrado de Polybio ........................................................................ 70
Ilustración 80. Resultados Retos .............................................................................. 72
Ilustración 81. Tiempo máximo y mínimo de la resolución de retos ....................... 72
Ilustración 82. Datos género participantes ............................................................... 73
Planteamiento de un CTF para practicar hacking ético e informática forense
8
Resumen
Actualmente, vivimos en un mundo repleto de aparatos tecnológicos, estamos
conectados a Internet las 24 horas del día, conocemos todo y nada a la vez. La mayoría
de las personas no son conscientes de los datos que circulan por su propia red, por lo que
desconocen todo lo que se puede introducir y transmitir con un solo archivo y que a simple
vista parece seguro. Por ello, sería importante concienciar a los usuarios y fomentar una
educación en la que se implique y enseñen, desde pequeños, todos los detalles que puede
haber con lo que se comparte por Internet.
En la línea de lo expuesto, en este Trabajo Fin de Grado se plantea la posibilidad de
crear un entorno de Capture The Flag (CTF), como principio para adentrarse en el mundo
de la informática forense y del hacking ético, de un modo autodidacta y entretenido,
enfocado sobre todo a gente con poco conocimiento en este ámbito y con muchas ganas
de aprender. Los concursos de CTF se llevan realizando muchos años, por lo que la
comunidad aficionada a estos retos también es muy amplia, así que cualquier principiante
solitario siempre tendrá la ayuda necesaria.
En este Trabajo Fin de Grado, se diseñan una serie de retos para iniciarse en este tipo
de pruebas. Los ejercicios propuestos se centran en temas muy conocidos de seguridad
informática, como es el análisis forense, la criptografía y la seguridad en web. Con ello,
también se provee información sobre el uso de herramientas muy útiles para estos ámbitos
y cómo se pueden usar tanto para resolver retos como para implementarlos.
Por último, algunos retos de los retos propuestos se compartirán en el CTF de las V
Jornadas Nacionales de Investigación en Ciberseguridad, coorganizadas por la UEx en
2019.
Planteamiento de un CTF para practicar hacking ético e informática forense
9
1. Introducción
Los términos “hacker” y “hacking” son muy escuchados últimamente en estos
tiempos, y casi siempre no para hablar demasiado bien de ellos, ya que se relacionan con
actos ilegales o poco éticos. Hasta la Real Academia Española definía hace un tiempo el
concepto de hacker como pirata informático.
En cambio, si escuchamos a los expertos hablar sobre estos conceptos, la historia
cambia. Según ellos, la verdadera definición de hacker es “persona o comunidad que
posee conocimientos en el área de informática y que se dedica a acceder a sistemas
informáticos para realizar modificaciones en el mismo”. Si entramos en el tema de
hacking, encontramos que el “Hacking es la búsqueda permanente de conocimientos en
todo lo relacionado con sistemas informáticos, sus mecanismos de seguridad, las
vulnerabilidades de los mismos, la forma de aprovechar estas vulnerabilidades y los
mecanismos para protegerse de aquellos que saben hacerlo”. Después de un tiempo por
fin la RAE aceptó otro término para definir a un hacker.
Si nos fijamos en la cultura popular, lo primero que se nos viene a la cabeza a la
mayoría de las personas si se le menciona el tema de hacking es el grupo de hacker
mundialmente conocidos como Anonymous que son famosos por infiltrase en sistemas
para obtener información confidencial y realizar actividades no muy legales.
También la televisión ha tratado el tema de los hackers como algo excepcional y/o
que solo se mueven por motivos “revolucionarios” como es el caso de la serie Mr. Robot.
Hasta en el cine, el tema del hacking es algo como que solo algunas personas con una
inteligencia superior a la media pueden realizar, como es el caso de GameWars.
Se puede dictaminar que es un concepto incomprendido, y que, a lo largo de sus pocos
años de existencia, ya sea por la televisión, noticias o varias razones, no se ha sabido
explicar correctamente y no es bien visto en el público de a pie.
Planteamiento de un CTF para practicar hacking ético e informática forense
10
La mayoría de estos “hackers” no adquieren todos sus conocimientos en unos pocos
días o semanas. Como es de esperar, tienen que “entrenar” y por ello se crearon las
competiciones del tipo Capture The Flag (CTF) que se realizan alrededor del mundo, ya
sea de forma presencial u online. En estas competiciones se realizan diversas pruebas en
las que se enseñan a las personas sobre el mundo real del hacking en un entorno amigable.
Además, con la llegada de las competiciones de capturar la bandera, este tema está
más cerca a cualquier tipo de persona con ganas de aprender o simplemente con ganas de
divertirse. Se puede realizar competiciones CTF desde un nivel muy básico hasta un nivel
profesional.
2. Capture The Flag, qué es
El mundo del “hacking” es un tema muy amplio, que se puede explorar de diversas
maneras y mirarlo desde diferentes percepciones, una de ellas son los concursos de
capturar la bandera, también conocidos como CTF (Capture The Flag). Una forma de
explicarlo es fijándose en el juego de capturar la bandera que se juega desde niños, en el
que hay dos o más equipos, cada uno con una bandera que tienen que esconder y defender,
con el objetivo de coger la bandera de los demás equipos.
Ilustración 1. Capturar la bandera, juego
En temas informáticos, el juego no difiere mucho, ya que hay un objetivo, una
bandera, que, obviamente de una forma u otra, está oculta. Los participantes, o los
equipos, tienen que superar varias pruebas para poder conseguir la ansiada bandera y
ganar la competición.
Planteamiento de un CTF para practicar hacking ético e informática forense
11
Ilustración 2. Capturar la bandera, competición
Las competiciones normalmente tienen dos tipos de concursos:
1. Jeopardy: consiste en realizar un conjunto de pruebas, que van aumentando su
dificultad a medida que se va avanzando en la competición.
2. Equipo rojo vs equipo azul: este tipo es el que más se asemeja al juego de niños
de capturar la bandera, ya que parte son dos equipos competiendo entre sí, uno de
ellos defendiendo y el otro atacando, cambiando su posición después de un
tiempo.
Estos tipos de concursos se suelen realizar en equipo, pero también se puede participar
en solitario.
Cualquier tipo de competición aborda muchos temas, que se pueden mezclar o repetir
en cada prueba.
Los tipos de pruebas más conocidas según INCIBE [1]:
• Análisis Forense [Forensics]: Lo más común. Imágenes de memoria, de discos
duros o capturas de red, las cuales almacenan diferentes tipos de información.
• Criptografía [Crypto]: Textos cifrados mediante un criptosistema determinado.
• Esteganografía [Stego]: Imágenes, sonidos o vídeos que ocultan información en
su interior.
• Explotación [Pwn]: Descubrimiento de vulnerabilidades en un servidor.
• Ingeniería Inversa [Reversing]: Inferir en el funcionamiento del software. Lo más
común, binarios de Windows y Linux.
• Programación [PPC]: 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.
Planteamiento de un CTF para practicar hacking ético e informática forense
12
• Web: Descubrimiento de vulnerabilidades en una aplicación Web.
• Reconocimiento [Recon]: Búsqueda de la bandera en distintos sitios de Internet.
Para resolverlo se ofrecen pistas, tal como el nombre de una persona.
• Trivial [Trivia]: Diferentes preguntas relacionadas con la seguridad informática.
• Misceláneo [Misc]: Retos aleatorios que pueden pertenecer a distintas categorías
sin especificar.
Son temas muy variados y que abarcan un amplio campo, como es el del hacking,
pero todos ellos comparten el objetivo de resolver una serie de tareas hasta llegar a la
bandera.
Una prueba consta de varios pasos antes de llegar a la bandera, en cada paso se puede
tocar un tema de los anteriores nombrados o puede tratar de un solo tema.
Como se ha mencionado, las pruebas tienen varios pasos, en estos pasos además de
llevar al siguiente paso o prueba se pueden dar pistas para seguir avanzando más fácil en
la competición.
2.1 CTF a lo largo del mundo
Con los años, el tema del hacking se ha hecho más popular y conocido, ya sea de una
forma buena o mala. Por lo que, paralelamente a este, las competiciones de capturar la
bandera se han hecho más populares y visibles a lo largo del mundo, llegando a contar
con miles de participantes en un solo evento.
En el tema online el número de participantes aumenta considerablemente, llegando a
tener miles de participantes:
• CTF365, en esta página se pueden encontrar desde retos para principiantes hasta
retos de profesionales, contando estos últimos con premios en metálico [2].
• Overthewire, página diseñada sobre todo para aprender temas de seguridad
mediante pruebas de capturar la bandera [3].
• PicoCTF, página con retos diseñados para estudiantes de instituto y universidad
[4].
Extremadura tampoco se ha querido quedar atrás en estos temas por lo que también
ha realizado sus propios concursos de capturar la bandera como son:
Planteamiento de un CTF para practicar hacking ético e informática forense
13
• Forociber 2018, realizado en Badajoz, pero participando online, permitiendo
participar a gente entre los 18-35 años en toda España [5].
• JNIC 2019, realizado por la Cátedra Viewnext-UEx, para estudiantes
universitarios y preuniversitarios, y titulados recientes. En el cual se han utilizado
los 3 primeros retos de este TFG [6].
2. 2 Por qué crear un CTF
Si se habla de hacking o de competiciones de hacking como son los CTFs, se piensa
que es algo aislado y/o reservado para unos pocos entendidos en el tema, pero en realidad
el tema de CTF está más presente de lo que se cree.
Algunos de las competiciones mencionadas anteriormente tienen como premio, a
parte del dinero, un puesto de trabajo. En muchos trabajos relacionados con el tema de
seguridad informático se pide resolver varios tipos de CTF.
En algunas universidades, se está empezando a realizar pruebas Jeopardy para que los
alumnos de ingeniera informática puedan comprender los conceptos de seguridad
informática y así hacerlo más interactivo con la clase.
En algunos institutos, se está empezando a enseñar seguridad informática de forma
muy básica en las cuales se realizan competiciones cortas de capturar la bandera. Por
ejemplo, en Córdoba, se realizaron durante la primera semana de mayo unos retos
mientras se impartían unos talleres de seguridad informática.
2.3 Creación de entornos CTF
Para crear un CTF, primero hay que indicar el objetivo al cual estamos enfocados, ya
que no es lo mismo realizar una competición para aficionados o estudiantes que
profesionales en el tema de la seguridad informática. Además, si hay premio, indicar que
esto también puede influir en el objetivo en el que enfocarse debido a que, en el ámbito
de la empresa, sería más adecuado dar un premio en metálico y/o un puesto de trabajo.
En otros casos, como el de los estudiantes, deberíamos saber el rango edad al que estaría
destinado para saber el premio que se debería dar, pudiendo ser este material escolar y/o
becas de estudio.
También se puede añadir o debe una pequeña historia, introducción, para que los
equipos se puedan poner en contexto y tener una base de la que partir.
Planteamiento de un CTF para practicar hacking ético e informática forense
14
Teniendo en cuenta mi conocimiento sobre la seguridad informática, adquiridos tanto
en asignaturas impartidas durante la carrera y por afición en mi tiempo libre, sobre todo
realizando este trabajo, los entornos para el Capture The Flag (CTF) propuesto en este
TFG se enfocarán, sobre todo, en estudiantes de universidad.
Una vez concretado el objetivo, se debe decidir el tipo de CTF que estamos
dispuestos a implementar. Esto va muy ligado al objetivo, ya que si los destinatarios son
aficionados es más difícil que se organicen y formen equipo, además que para gente sin
mucho conocimiento en el tema de la seguridad informática es mejor el tipo Jeopardy. En
cambio, si son profesionales ya tienen un conocimiento sobre los temas y pueden
adaptarse a cualquier tipo de CTF. Al estar enfocado el CTF en estudiantes de
universidad, se entiende que el tipo Jeopardy es el que mejor se adapta a este grupo de
potenciales participantes.
Decidido objetivo y tipo, hace falta decidir los distintos tipos de pruebas que se van
a tocar en el CTF. Al ser tan grande el abanico de posibilidades que se pueden
implementar en un CTF, sobre todo al ser de tipo de Jeopardy, se eligieron los retos con
los que se estaba más familiarizado, como son:
• Análisis forense: es la aplicación de técnicas científicas y analíticas especializadas
a infraestructura tecnológica que permiten identificar, preservar, analizar y
presentar datos que sean válidos dentro de un proceso legal.
• Criptografía: Arte y técnica de escribir con procedimientos o claves secretas o de
un modo enigmático, de tal forma que lo escrito solamente sea inteligible para
quien sepa descifrarlo
• Fuerza bruta: forma de recuperar una clave probando todas las combinaciones
posibles hasta encontrar aquella que permite el acceso.
• Hacking web: explotación de vulnerabilidades de servidores web, tanto desde la
parte del servidor como la parte del cliente.
Entre cada paso de las distintas pruebas, se dan pistas (si hicieran falta) para poder
resolver la prueba.
Como se ha mencionado antes, también es habitual dar premios en los CTF, aparte de
la reputación que se puede ganar dependiendo de la fama del concurso y de cómo esté
enfocado.
Planteamiento de un CTF para practicar hacking ético e informática forense
15
Una vez decididos estos pasos para realizar el CTF, se pueden implementar los retos.
3. Objetivos
El objetivo principal de este Trabajo Fin de Grado consiste en el diseño,
implementación y resolución de un conjunto de retos relacionados con temas de hacking
ético e informática forense, de modo que puedan formar parte de una competición del tipo
CTF. Los destinatarios de esta competición serán estudiantes universitarios,
preuniversitarios y titulados recientes, principalmente. Y las temáticas elegidas forman
parte de un conjunto definido, acordado con los directores del TFG y coordinados con
otros posibles trabajos que se lleven en paralelo a este TFG.
Incluidos en este objetivo principal, se pueden establecer otros objetivos parciales que
merecen ser destacados, como, por ejemplo:
• Aprender conceptos, técnicas relacionadas con el hacking ético y la informática
forense, de una forma autodidacta y enfocada a la realización del CTF.
• Conocer nuevas herramientas que permitan dar solución a los problemas
planteados, extendiendo sus funcionalidades a otras posibles alternativas
parecidas o relacionadas con los retos propuestos.
• Complementar la formación universitaria de la titulación con una temática nueva
como es la orientada al hacking ético y a la informática forense, temáticas muy
demandadas por la sociedad actualmente.
4. Implementación de los entornos CTF
Se implementan seis entornos para capturar la bandera. Se sigue el estilo Jeopardy en
el cual pueden se puede participar tanto en equipo como en solitario. En los diferentes
entornos se tratan, sobre todo, los temas de Análisis Forense, Criptografía, Hacking Web
y Fuerza bruta. De esta manera, se tiene como objetivo la comprensión de los conceptos
en un entorno amigable, a la vez que entretenido.
Cada entorno está enfocado a un público joven, entre 16-18-25 años, es decir,
estudiantes de universidad (18-21 años), preuniversitarios (16-18 años) y titulados
recientes (21-25 años), por lo que se usan temas de actualidad y cultura general. Para
Planteamiento de un CTF para practicar hacking ético e informática forense
16
hacer más creíble los retos, y que sirvan como una introducción a cada propuesta, cada
entorno cuenta con una pequeña historia ficticia y, de esta manera, los participantes se
podrán poner en contexto y así hacer el entorno más amigable.
En temas de implementación, cada uno de los entornos se compone de un bloque de
ejercicios a realizar. Cada solución, a su vez, guiará al siguiente ejercicio, ya sea por su
resolución o pistas a lo largo del mismo.
El objetivo en general de los retos es la comprensión de conceptos de hacking
mediante su realización, además de ver todas las posibilidades de las herramientas que se
disponen.
4.1 Soluciones
Al igual que la implementación de un algoritmo, un reto de capturar la bandera se
puede solucionar de varias maneras. Dos personas no piensan exactamente la misma
solución, siempre se difiere en algo.
Como se ha mencionado antes, el mundo del hacking es un mundo muy grande. Así
que establecer una “solución general” para cada ejercicio es una tarea casi imposible,
incluso para el creador del reto establecer una solución efectiva y que mantenga contentos
a todos es muy difícil. Por lo que en los posteriores apartados de soluciones se comentarán
las diversas formas con las que se solucionarían y en qué se pueden fijar los participantes
para resolverlo.
5. Reto 1
El primer entorno se basará sobre todo en ejercicios de análisis forense mediante la
utilización de varias herramientas dedicadas a ellas y que son muy conocidas en temas de
seguridad informática.
4.1 Historia
Dentro de unos días, se realiza el examen de Fundamentos y Redes de la
comunicación para los alumnos de 2º de Ingeniería Informática.
Las preguntas, como es obvio, nadie las sabe salvo el profesor, o eso se cree. Aunque
ayer el profesor recibió un soplo de que alguien tiene preguntas del año pasado y las está
compartiendo oculta en archivos .pcap por un servidor seguro para no levantar sospechas.
Planteamiento de un CTF para practicar hacking ético e informática forense
17
Por suerte, en uno de los ordenadores de la sala donde se imparte esta asignatura se
ha encontrado un archivo un poco sospechoso con este tipo de extensión. Tú deber es
encontrar la contraseña para acceder al servidor por el cual estos alumnos están pasando
información y qué saben del examen
4.2 Herramientas
Sistema operativo, implementado en Windows 10 y Ubuntu 18.4
Wireshark, software libre, es un analizador de protocolos de red utilizado para realizar
análisis y solucionar problemas en redes de comunicaciones, para desarrollo de software
y protocolos. Cuenta con todas las características estándar de un analizador de protocolos
de forma únicamente hueca. La funcionalidad que provee es similar a la de tcpdump, pero
añade una interfaz gráfica y muchas opciones de organización y filtrado de información.
Así, permite ver todo el tráfico que pasa a través de una red estableciendo la configuración
en modo promiscuo. También incluye una versión basada en texto llamada tshark [7].
Permite examinar datos o de un archivo de captura salvado en disco. Se puede analizar la
información capturada, a través de los detalles y sumarios por cada paquete. Wireshark
incluye un completo lenguaje para filtrar lo que queremos ver y la habilidad de mostrar
el flujo reconstruido de una sesión de TCP.
Linux, la mayoría de las distribuciones de Linux nos provee de una gran cantidad de
comandos con el que se pueden manipular varios tipos de archivos y la información de
todos estos.
Hexinator, software de uso libre, que permite visualizar y manipular los datos
hexadecimales de cualquier archivo [8]. También permite la visualización y manipulación
de archivos binarios.
La visualización de los metadatos se realiza mediante los detalles de Windows o si
hicieran falta, páginas que realizan una extracción completa de los metadatos de los
archivos.
4.3 Implementación
4.3.1 Paso 1
La primera parte de este ejercicio se realiza en Windows por comodidad en el uso de
Wireshark, también se podría realizar en Linux. Se usa Wireshark para crear el archivo
Planteamiento de un CTF para practicar hacking ético e informática forense
18
de tipo .pcap y poder capturar los intercambios de paquetes con la red elegida (ver figura
3), este es un tipo de archivo único de wireshark.
Abierto Wireshark, seleccionamos la red, así podemos capturar los paquetes salientes
y entrantes de la red de nuestra red.
Ilustración 3. Elección de red a capturar
Simulamos la conexión al servidor deseado.
Paramos la captura de paquetes en el momento que hayamos realizado la conexión
deseada y guardamos la simulación (ver figura 4). De esta manera ya tenemos nuestro
archivo .pcap con el que empieza el ejercicio y el cual se comenta en la pequeña
introductoria historia del principio.
Ilustración 4. Captura de paquetes
Planteamiento de un CTF para practicar hacking ético e informática forense
19
En esta captura, se observa el intercambio de paquetes que se realiza desde mi
conexión hasta llegar al servidor deseado, en este caso se usará como servidor de
almacenamiento de ficheros el servidor de MEGA.
Como el servidor al que tenemos que conectarnos usa un protocolo de seguridad SSL,
en el que se basan las páginas HTTPS, los paquetes vienen con el protocolo de TCP, el
cual crea conexiones seguras y garantiza que los datos llegarán a su destino, sin errores y
en el mismo orden que se enviaron, así que si abrimos cualquier paquete que esté dentro
de la conexión podemos ver esta información:
Ilustración 5. Paquete detallado
Para descifrar la información de “Ethernet” y ver a qué páginas se accede se necesitan
claves, y como es obvio, no se dispone de sus claves públicas y privadas para poder
descifrar los paquetes y la dirección completa. Por lo que se ha optado por dar el
localizado de recuros (URL) en dos pasos, divididos en host + cadena de búsqueda.
Gracias a Wireshark completamos la primera parte de la URL simulando la conexión
al host (31.216.148.10).
Se puede seguir realizando intercambio de paquetes para hacer menos visible la
conexión al servidor, pero esto llevaría a muchas confusiones y como se está dirigido a
Planteamiento de un CTF para practicar hacking ético e informática forense
20
un público no muy entrenado en estos temas se optará por seguir el reto de una forma
sencilla y sin muchas complicaciones.
Para dar la otra parte de la URL, se usará Linux, para así poder hacer uso de sus
comandos:
- Cat: permite concatenar archivos y mostrarlos o usarlos de salida.
- Se usa cat archivo.pcap nombrearchivo.zip > archivo2.pcap
Primero se crea un archivo .txt con la cadena de búsqueda que nuestra URL necesita.
Ilustración 6. Ruta URL
Luego este archivo se inserta en otro archivo .zip, para así poder concatenarlo con el
archivo .pcap.
Ilustración 7. Comando de concatenación
El resultado de la unión es el mismo archivo .pcap pero escondido dentro de él, el
archivo .txt en formato .zip. Así ya se puede dar la URL completa, formada con el servidor
y la búsqueda necesaria para acceder al servidor con los archivos en privado.
Una vez el usuario descubra la URL necesaria accederá a una carpeta privada en
mega, por lo que es necesario crear la carpeta en mega y subir los archivos necesarios
para el siguiente ejercicio.
En este ejercicio no se darán ninguna pista implícita en el ejercicio.
4.3.2 Paso 2
En la carpeta privada del servidor, subiremos 5 archivos con nombres sin sentido.
Planteamiento de un CTF para practicar hacking ético e informática forense
21
Ilustración 8. Conjunto de archivos corruptos
Estos archivos dispondrán de una extensión la cual ha sido cambiada previamente.
Solo uno de estos archivos contiene la información para poder acceder al siguiente
ejercicio, por lo que para ello es imperativo acceder a todos ellos.
Archivos
1. ZIP, es en realidad un archivo de Word el que no contiene información relevante
2. MP3, es en realidad un archivo .PDF sin tampoco información relevante para la
resolución del ejercicio.
3. PDF, es en realidad un archivo .txt con el cual a primera vista solo contiene un
texto, a primera vista, no relevante para la resolución del archivo.
4. JPG, es en realidad un archivo .zip pero con contraseña, en él está el último
ejercicio.
Saber la extensión verdadera de los archivos se puede descubrir de varias formas, ya
sea por aplicaciones, hexadecimales o simples comandos de Linux, apartado que
trataremos en profundidad en la resolución del ejercicio
4.3.3 Paso 3
La implementación de esta parte se realizará en Linux también, con la herramienta
Hexinator, pero esta herramienta también está disponible en Windows. En el interior del
archivo .zip, se dispone de una imagen:
Planteamiento de un CTF para practicar hacking ético e informática forense
22
Ilustración 9. Imagen para modificar
Esta foto ha sido manipulada con el programa Hexinator, con él se han modificado
los hexadecimales del archivo:
Ilustración 10. Hexadecimales de ilustración anterior
Para hacerlo más evidente, la posición de los hexadecimales modificados también
modifica la calidad de la imagen, por lo que la imagen también se ha visto modificada en
gran parte:
Planteamiento de un CTF para practicar hacking ético e informática forense
23
Ilustración 11. Imagen resultante
Si el participante es capaz de darse cuenta de que la calidad de la foto ha bajado debido
a la modificación de los hexadecimales de este, lo puede resolver rápidamente y así
conseguir la bandera.
4.4.4 Flujo de CTF
4.5 Solución
Poniéndonos en la piel de cualquier participante, partiremos de una historia y de un
archivo de tipo .pcap.
De la historia no se puede sacar nada en claro, solo la extensión del archivo porque se
menciona como tal.
Antes de abrir el archivo, si analizamos los metadatos de este con la página
FLAG Archivos
Wirseha
rk
Mega
Ilustración 12. Flujo Reto 1
Planteamiento de un CTF para practicar hacking ético e informática forense
24
Ilustración 13. Metadatos archivo
De esto no se puede sacar nada en claro ya que parece todo normal.
Sabiendo la extensión del archivo, sabemos que es un archivo del programa
Wireshark, así que se trata de un archivo de intercambio de paquetes de red.
Usando su aplicación para abrir el archivo, vemos varios paquetes y varias
conexiones. Si tenemos que analizar cada paquete individualmente, sería una tarea de
horas, así que se parte de la premisa que la mayoría de los paquetes son de relleno ya que
se ha encontrado un servidor al que conectarse y que es conocido por su sistema de
almacenamiento de archivos.
Ahora, se debe encontrar una manera de reducir el número de paquetes, para ello
disponemos de varios filtros que pone Wireshark a nuestra disposición. Hay que tener en
cuenta también que Wireshark pone varias columnas con información, estas se pueden
añadir dependiendo de la información que estemos buscando.
Como se puede observar en el archivo de Wireshark, el primer paquete sale de la IP
“192.168.1.34”, así que se aplicará el filtro IP “ip.addr==192.168.1.37” para partir de ahí.
El intercambio de paquetes se reduce considerablemente.
Planteamiento de un CTF para practicar hacking ético e informática forense
25
Si nos fijamos en las columnas (ver figura 14), concretamente en el apartado de
“Info”, se comprueba que la mayoría de los paquetes están encriptados o son parte de otro
paquete, de esta manera deducimos que se realiza conexión a una página segura, así que
usar el protocolo TCP. Si se añade este filtro “ip.addr==192.168.1.37 and tcp” a la
búsqueda, esto hace que nos quede una traza más limpia y pequeña.
Si realizamos la conexión a esta las primeras IPs que aparece “31.216.148.10” y
“31.216.148.11” desde la consola de Windows con el comando de ping, vemos que realiza
el intercambio de paquetes ICMP con esta dirección sin ningún error, esto indica que se
trata de una dirección accesible.
Ilustración 14. Paquetes capturados
Planteamiento de un CTF para practicar hacking ético e informática forense
26
Ilustración 15. Intercambio de paquetes con servidor
Si accedemos desde cualquier navegador a cualquiera de esta dos IPs como tal, este
nos redirige a MEGA, este se trata de un servicio de archivos en la nube.
De un archivo .pcap, ya hemos conseguido un servidor de archivos. Si seguimos
analizando el archivo, se siguen viendo archivos encriptados y conexiones al servidor,
poca información útil entonces ¿Y si el archivo tiene información oculta?
Un archivo puede contener varia información oculta, no solo en los metadatos,
también en los hexadecimales o concatenada.
Si usamos cualquier visualizador de hexadecimales, comprobamos si hay algo oculto
en él.
Planteamiento de un CTF para practicar hacking ético e informática forense
27
El visualizador hexadecimal revela la información del archivo wireshark pero además
después de este, un espacio en memoria en blanco (relleno de 0s) y vuelve a revelar
información en hexadecimal
Gracias a esto, se comprueba que el archivo tiene información oculta. Ahora para
averiguar de qué información oculta se trata, y ya que está abierto el archivo con un
visualizador hexadecimales, lo podemos hacer gracias a las cabeceras, las cabeceras
suelen revelar la extensión del archivo, nuestro segundo archivo tiene de cabecera de
extensión “2E 67 GF 6F” así que usando una tabla de las más conocidas:
Relleno de ceros
Otro archivo
Primer archivo
.pcap
Ilustración 16. Hexadecimales archivo
Ilustración 17. Continuación hexadecimales archivo oculto
Planteamiento de un CTF para practicar hacking ético e informática forense
28
Tipo de archivo Cabecera ASCII
.zip 50 4B 03 04 PK
.rar 52 61 72 21 Rar!
.doc D0 CF 11 E0 ÐÏ.à
.jpeg FF D8 FF E0 / FE JFIF
.png 89 50 4E 47 PNG
.mp3 49 44 33 2E /03 ID3
.exe 4D 5A 50 00 /90 00 MZP / MZ
.gif 47 49 46 38 39 61 / 37
61
GIF89a GIF87a
.pdf 25 50 44 46 %PDF
No coincide con ninguna, así que el uso de la cabecera no funcionará.
Linux, en cambio, dispone de muchos comandos que permite ver archivos incrustados
en otros archivos, uno de esos comandos es “binwalk”, este permite buscar imágenes
binarias para archivos incrustado.
Ejecutando este comando:
Ilustración 18. Comando para buscar archivos ocultos
Con esta sí se obtiene un resultado optimista, revela que en el archivo .pcap, además
de dar la dirección del servidor, también tiene oculto un archivo .zip.
Descomprimiendo el archivo .pcap y el .zip resultante, se obtiene un archivo de texto
con un mensaje y una línea de letras incomprensibles:
#F!DyYBnAyB!9fIFJiAMDxV56jLBDIuDoA
Obtenido el servidor, solo nos queda una cadena de consulta o un usuario para acceder
a los archivos que el servidor pueda tener. Así que antes de empezar a probar los
Planteamiento de un CTF para practicar hacking ético e informática forense
29
diferentes tipos de criptografías para saber si es un mensaje oculto, por lo que, si juntamos
el servidor y la última línea del texto, obtenemos:
https://mega.nz/#F!DyYBnAyB!9fIFJiAMDxV56jLBDIuDoA
Usando este enlace en cualquier buscador nos lleva a una página con varios archivos.
Ilustración 19. Siguiente paso
Descargando estos archivos, se observa que todos ellos disponen de extensión y sus
nombres son solo números, pero si se intenta abrir cualquier de estos archivos nos da
error, por lo que o están corruptos o su extensión es otra y por eso el programa por defecto
no los abre.
Si accedemos a los metadatos de los archivos tampoco sacamos una información muy
útil para saber la información
171734.zip:
Ilustración 20. Metadatos archivo zip
172034.mp3:
Planteamiento de un CTF para practicar hacking ético e informática forense
30
Ilustración 21. Metadatos archivo mp3
181102.pdf:
Ilustración 22. Metadatos archivo pdf
181225.jpg:
Ilustración 23. Metadatos archivo jpg
En los archivos JPG y MP3 los demás campos que se pueden completar vienen vacíos,
algo que es normal debido a que no es su extensión correcta.
Si usamos el comando “binwalk” con ellos tampoco obtenemos una información
relevante.
Usadas las soluciones sin mucho éxito para obtener las extensiones, debemos usar
soluciones diferentes.
Planteamiento de un CTF para practicar hacking ético e informática forense
31
Como se mencionó antes, gracias a las cabeceras hexadecimales de los archivos
podemos obtener el tipo de archivo qué es.
171734.zip: nos da como extensión .zip, la incorrecta
Ilustración 24. Cabecera archivo zip
172034.mp3: nos da su verdadera extensión PDF
Ilustración 25. Cabecera archivo mp3
181102.pdf: nos da una extensión incorrecta.
Ilustración 26. Cabecera archivo pdf
181225.jpg: nos da su verdadera extensión .zip
Ilustración 27. Cabecera archivo jpg
Comprobado los primeros números, de cada archivo, nos da la extensión incorrecta
de la mitad de los archivos
Si recurrimos otra vez a comandos de Ubuntu, tenemos el comando “file” que nos
indica el tipo de archivo con el que trata, ya que, para Ubuntu, al contrario que Windows,
las extensiones son solo para el usuario y no las tiene en cuenta.
Ejecutando el comando en todos los archivos
Planteamiento de un CTF para practicar hacking ético e informática forense
32
Ilustración 28. Comando para saber el tipo de archivo
Otra vez gracias a Ubuntu obtenemos una respuesta satisfactoria de todos los archivos.
Cambiando las extensiones a las correctas, son estos los archivos
Ilustración 29. Archivos corregidos
Abierto todos los archivos se puede deducir que el único archivo interesante de todos
estos es .zip ya que si lo abrimos se puede ver un archivo de imagen que tiene el nombre
“Final” pero se necesita una contraseña para acceder a él.
Ilustración 30. Interior archivo comprimido
Las preguntas qué tenemos que hacer son ¿Se nos ha pasado por alto la contraseña?
¿Los otros archivos son de relleno o tienen información?
Planteamiento de un CTF para practicar hacking ético e informática forense
33
Respondiendo a la última pregunta, debemos acceder a los metadatos de estos y ver
si se puede sacar algo.
Ante nada destacable, cabe la posibilidad de que para obtener la contraseña se tenga
que usar algún ataque de diccionario, pero si obtenemos el hash del zip se obtiene un hash
demasiado extenso.
Esto puede llevar mucho tiempo, y viendo el final tan cerca. Se decide optar por la
opción más obvia y es buscar qué significa el único archivo txt.
Ilustración 31. Pista contraseña zip
Al buscarlo se obtiene que es de una serie muy conocida como es The Office.
Y si usamos esta contraseña en el .zip, se consigue entrar y obtener la imagen .jpg.
Abriendo esta imagen, vemos que se trata de una imagen de verdad, pero en una mala
calidad, lo que nos abre dos posibilidades, si está así a propósito o se han modificado sus
hexadecimales.
Viendo sus hexadecimales, con el programa, Hexinator, se comprueba que se han
modificado sus datos hexadecimales y entre ellos se encuentra la bandera que tanto
llevamos buscando.
Planteamiento de un CTF para practicar hacking ético e informática forense
34
Ilustración 32. Obtención primera bandera
Solución: motivación
5. Reto 2
5.1 Historia
La semana que viene se estrena mundialmente la última temporada de una serie muy
famosa, y se ha comentado por foros muy conocidos, como Reddit, que el primer capítulo
de esta serie ya se encuentra disponible en su página web, pero no para todas las personas
solo para las que son capaces de ingresar al archivo. ¿A qué esperas para poder ver el
primer capítulo?
5.2 Herramientas
Como Entorno de desarrollo integrado (IDE) se usará IntelliJ por comodidad y
familiarización con la herramienta. A su vez este, se usará con Tomcat, este es un software
contenedor de servlets, que se usa como servidor web.
Audacity, es una aplicación de software libre que se usa para la edición de audio [9].
Sistema Operativo, se usará Linux por la disponibilidad de herramientas que este
sistema operativo pone a nuestra disposición.
Planteamiento de un CTF para practicar hacking ético e informática forense
35
Herramientas GitHub:
• JhonTheRipper: software de criptografía que se basa en el ataque de fuerza bruta
para descifrar contraseñas. Muy popular en este ámbito, tanto para romper
contraseñas como para probar la seguridad de las contraseñas [10].
• FcrackZip: software encargado de ataques de diccionario [11].
• Zip2Jhon: herramienta de JhonTheRipper usada sobre todo para tratar con
archivos comprimidos como .rar, .zip y .targz.
• YOW: software especializado en hacer nuestros propios diccionarios [12].
5.3 Introducción
El segundo entorno se basará sobre todo en ejercicios de fuerza bruta, ataque de
diccionario y hacking web mediante la utilización de varias herramientas dedicadas a ellas
y que son muy conocidas en temas de seguridad informática, las cuales tienen sus propias
páginas de descarga o en github.
Los ataques de diccionario son un método de cracking que consiste en intentar
averiguar una contraseña probando todas las palabras del diccionario. Este tipo de ataque
suele ser más eficiente que un ataque de fuerza bruta, ya que muchos usuarios suelen
utilizar una palabra existente en su lengua como contraseña para que la clave sea fácil de
recordar, lo cual no es una práctica recomendable.
5.4 Implementación
5.4.1 Paso 1
El primer ejercicio se basará en una implementación de una página web basada en
una arquitectura servidor-web, la cual tendrá una sola única funcionalidad, la de realizar
el inicio de sesión.
Los navegadores como Google Chrome, Firefox y demás tienen herramientas para
desarrolladores muy potentes, con las cuales se dispone de una multitud de características
y posibilidades para la visualización y depuración de páginas web. Gracias a estas, se
puede investigar el código con el que las páginas están implementadas, esto la convierte
a su vez es un arma de doble filo, debido a que es muy enriquecedora para desarrollar
web, pero también permite visualizar los fallos de seguridad que algunas páginas
presentan.
Así que usando esta herramienta se dejarán pistas para este ejercicio y posteriores.
Planteamiento de un CTF para practicar hacking ético e informática forense
36
La implementación de la parte del servidor se realiza con el IDE IntelliJ, simplemente
por comodidad y familiarización con la herramienta, además se usará SpringBoot como
framework para el desarrollo de la aplicación web, al tratarse de una página sencilla sin
mucha funcionalidad no es necesario explicar mucho más de esta parte. Por lo tanto, la
página quedaría así, con una única funcionalidad.
Ilustración 33. Página inicial
La parte del servidor consta de archivos JAVA, que no se pueden visualizar desde un
navegador, por lo que serán con los que se traten los datos introducidos por el usuario.
La parte del cliente consta de archivos HTML+CSS+Javascript, al poder ser vistos
por las herramientas de desarrollador de los navegadores, son archivos en los que se
dejarán pistas para continuar con el reto.
Establecidos los archivos que pueden contener información oculta, hay que decidir
qué tipo de información ocultar, al ser la única funcionalidad de la página un inicio de
sesión, se esconderá la forma de acceder a la siguiente página, la contraseña.
A mi parecer, sería muy sencillo si se esconde así en el archivo js, por lo que se usa
la herramienta para transformar el código fuente en un código más difícil de interpretar
con Obfuscator [13] para hacer menos comprensible el trozo de código.
Código sin ofuscar:
Planteamiento de un CTF para practicar hacking ético e informática forense
37
1. $('document').ready(function(){
2. var a = 'Para acceder a la herramienta de Chrome Desarrolladores, vaya a Herramientas> Desarrolladores de
herramientas.';
3. var _0x390a = 'Avengers unidos!'; 4. 5. var [cnffjbeq] = '123456789abc' 6. }); 7.
La contraseña es 123456789abc
Código ofuscado
1. var casi = [ 2. 'Para\x20acceder\x20a\x20la\x20herramienta\x20de\x20Chrome\x
20Desarrolladores,\x20vaya\x20a\x20Herramientas>\x20Desarrollado
res\x20de\x20herramientas.',
3. 'document', 4. 'ready' 5. ]; 6. var _0x390a = ['Avengers,\x20¡unidos!']; 7. (function (a, b) { 8. var c = function (d) { 9. while (--d) { 10. a['push'](a['shift']());
11. }
12. };
13. c(++b);
14. }(casi, 0x163));
15. var _0x3c6d = function (_0x8c0337, _0x41725e) {
16. _0x8c0337 = _0x8c0337 - 0x0;
17. var sigue = casi[_0x8c0337];
18. return sigue;
19. };
20. $(_0x3c6d('0x0'))[_0x3c6d('0x1')](function () {
21. var _0x3c6021 = _0x3c6d('0x2');
22. var [cnffjbeq] = '0x75bcd15'+'abc';
23. });
La contraseña viene en la última variable, llamada “password”, formado por
‘0x75bcd15’ que significa 12345789 y ‘abc’
Con esta contraseña se puede acceder a la siguiente página, pero antes de comentar
esta parte, se esconderá otra pista en el archivo .css, que puede ser útil para los próximos
ejercicios. Esta se encontrará escondida con una propiedad de css que es la de “visibility:
hidden” para poder visualizarla solo hace falta cambiarla y ponerla “visibility: visible”
Planteamiento de un CTF para practicar hacking ético e informática forense
38
Ilustración 34. Pista siguiente ejercicio
Sin recargar la página, así queda la página si se modifica la propiedad de css anterior.
La siguiente página, al igual que la anterior, solo permite una funcionalidad, el
descargar un enlace de descarga, lo cual nos lleva al siguiente reto.
Los siguientes ejercicios están muy ligados, por lo que se deben comentar en diferente
orden para una mayor comprensión, en cambio, en la solución mostrará en un orden
diferente.
Para crear el archivo final, es decir el archivo que contenga la bandera, se partirá de
una imagen que contenga la bandera, se puede crear con Paint
Ilustración 35. Bandera final
Planteamiento de un CTF para practicar hacking ético e informática forense
39
Esta imagen, se caracteriza en que solo tiene las letras de la bandera en negro y en un
fondo blanco, esto se debe hacer así para poder convertirla en “audio”. Este archivo se
tiene que guardar como archivo .BMP ya que son archivos que son de formato imagen de
mapa de bits, es decir, que puede contener imágenes de 24 bits, 8 bits y menos.
Luego, con la herramienta “CoagulaLight” [14], y gracias a que se trata un archivo de
mapa de bits se puede transformar en sonido.
Ilustración 36. Conversión bandera a sonido
Luego tenemos que seleccionar la opción “Sound > Render without blue” así se
reproducirá el sonido que hace la imagen, luego “File > Save as Sound” y ya tendremos
un audio de nuestra imagen.
Si ejecutamos el archivo, el audio reproducido no es entendible, pero si usamos alguna
herramienta para poder visualizar los espectrogramas (resultado de calcular el espectro
de tramas enventanadas de una señal) como es Audacity:
Ilustración 37. Espectograma del sonido
Se puede ver la conversión de la imagen que contenía la bandera en el espectrograma
de un audio.
Planteamiento de un CTF para practicar hacking ético e informática forense
40
Este archivo se sube a un servidor de archivos como es mega para que luego pueda
ser encontrado por los participantes. Mega nos proporciona un enlace para compartir el
archivo, el cual será el que lleve a los participantes al paso final.
Enlace:
https://mega.nz/#!fuABnASD!1NwivVaoMvN9xoUIvr5rJl8FeAa3CPOquQiX71F
S28A
Pero para poder dar el enlace, no se dará libremente, se dará de una forma diferente,
este se dará en forma de QR, se trata un código de barras bidimensional cuadrada que
puede almacenar los datos codificados.
Para ello podemos usar cualquier página encargada de ello [15], así que, con cualquier
lector, ya sea de ordenador o móvil (desde ya unos años casi todos tienen integrados lector
de QR) se puede obtener el enlace a la página
Juntando este ejercicio con el primero, se ve que el archivo que se encuentra en el
enlace de descarga de la página se trata de un archivo .zip, que en su interior se encuentran
varios archivos pequeños, sin extensión y con nombres que no significan nada.
Estos archivos se han creado con el comando “Split -b tamañoarchivos entrada
salida”, este divide un archivo en varios, dependiendo de los argumentos que
especifiquemos en “-b” y la letra “q” especifica como queremos que empiece el nombre
de los demás
Ilustración 39. Comando para dividir archivo.
Ilustración 38. Código QR para los
archivos
Planteamiento de un CTF para practicar hacking ético e informática forense
41
Resultado
Ilustración 40. Código QR dividido
Hay varias maneras de unir estos archivos que se comentarán en la solución.
Como se ha comentado antes, el enlace de descarga de la página lleva a un archivo
.zip con varios archivos, pero antes de poder visualizar los archivos se tiene que poder
descomprimir el zip que tiene contraseña.
En la creación del archivo .zip se estableció una contraseña, esta contraseña está
relacionada con la imagen que se dejó como pista en el primer ejercicio.
Se ha procurado que la contraseña no esté en los diccionarios más conocidos como:
rockyou, phpbb, Hotmail.
Hay varias maneras de descifrar la contraseña de un archivo .zip que se comentarán
en la solución.
5.5 Solución
Si nos ponemos en la posición del concursante, partimos de una historia y de un enlace
a una página.
Entrando a la página solo se visualiza el poder iniciar sesión en ella, esto da pie a
varias ideas relacionadas con las inyecciones SQL, son métodos de infiltración de código
intruso que se vale de una vulnerabilidad informática presente en una aplicación en el
nivel de validación de las entradas para realizar operaciones sobre una base de datos.
Planteamiento de un CTF para practicar hacking ético e informática forense
42
• 'or '1'='1
• ‘admin AND usuario=’admin’
• ‘admin AND usuario is NULL; --
• ‘admin' AND 1=(SELECT COUNT(*) FROM usuarios); --
Visto las inyecciones más famosas, se puede deducir que no se trata de una inyección
SQL, pero no se debería descartar la idea que se pueda acceder con alguna más rebuscada.
Otra de las posibilidades con una página web que solo te permite realizar el inicio de
sesión, es indagar en el código fuente de esta con las herramientas de desarrollador que
pone Google Chrome.
Si se investiga en el código HTML se puede sacar que hay una parte que no se está
visualizando:
Ilustración 41. Código pista HTML
Se trata de la etiqueta <img> es decir de una imagen, si no se está visualizando es
porque el CSS no lo permite o que el Javascript está impidiendo su visualización
Si accedemos al código CSS se observa que hay una parte extraña, “visibility: hidden”
cambiando esta instrucción, la imagen ya se puede ver la imagen.
Si buscamos esta imagen en Google, nos muestra que se trata de la película Avengers:
EndGame.
Si se prueba esto como contraseña para el inicio de sesión no se obtiene resultados
positivos y seguimos sin acceso a la página. Si usamos como contraseña el nombre de
algunos protagonistas de esta película seguimos sin poder acceder a la página, por lo que
se debe seguir analizando el código fuente de la página. Si accedemos al único .js de la
página:
Planteamiento de un CTF para practicar hacking ético e informática forense
43
Ilustración 42. Código visto por herramientas de desarrollador
Se observa un código javascript muy raro y a su vez, sospechoso.
Analizando el código se saca que todo el código no realiza nada, son bucles que no
hacen, lo interesante de este código es la última variable, ya que si buscamos en Google
‘0x75bcd15’ significa 123456789 y si añadimos el ‘abc’, no da una variable que usamos
como contraseña. Si se usa en la página, se puede acceder a la siguiente página. En la
siguiente página, solo existe un enlace que descarga un archivo.
Una vez descargado el archivo del ejercicio anterior, se observa que se trata de un
archivo .zip, pero que no es posible abrir ya que se necesita contraseña. ¿La contraseña
estará otra vez en el código fuente de la página? ¿La imagen anterior sirve para algo o era
solo para despistar? ¿Es necesario un ataque de diccionario?
Respondiendo a la primera pregunta, accedemos a los archivos HTML, CSS y no
existe JS.
Ilustración 43. Código HTML siguiente página
Ni en el archivo HTML ni CSS se ve algo para poder descifrar la contraseña ni para
poder usar en el ataque de diccionario.
Planteamiento de un CTF para practicar hacking ético e informática forense
44
Así que se deberá realizar un ataque de diccionario, para ello se dispone de varias
herramientas como JhonTheRipper, Fcrackzip, zip2jhon.
Si usamos la primera que es más conocida, debemos usar un diccionario y el hash del
archivo.
Sacamos el hash del archivo .zip:
Si lo intentamos solo con el hash no obtenemos resultados satisfactorios:
Ilustración 45. Ataque por diccionario
Y se intenta con los diccionarios más conocidos como:
Rockyou
Ilustración 46. Ataque por diccionario ROCKYOU
Ilustración 44. Extracción hash archivo comprimido
Planteamiento de un CTF para practicar hacking ético e informática forense
45
phpbb
Ilustración 47. Ataque por diccionario phpbb
Hotmail
Ilustración 48. Ataque por diccionario Hotmail
Después de varios minutos sin resultados en los diferentes casos, se abre la posibilidad
de crear un diccionario propio, para ello se usa una herramienta de GitHub (YOU) YOU,
esta herramienta permite crear diccionarios a partir de palabras claves.
Como palabras claves se usarán todos los protagonistas que aparecen en la película
de Avengers: EndGame
Ilustración 49. Creación de diccionario
Usando JhonTheRipper, debemos seleccionar el hash y nuestro diccionario a usar:
En este caso sí hemos obtenido un resultado positivo, pudiendo descifrar la contraseña
del zip.
Ilustración 50. Ataque por diccionario personalizado con zip2jhon
Planteamiento de un CTF para practicar hacking ético e informática forense
46
Contraseña: ThanosAntman
Si hubiéramos usado Fcrackzip en lugar de JhonTheRipper, en lugar el hash del
archivo, deberíamos usar la ruta global del archivo y del diccionario
Ilustración 51. Ataque por diccionario fcrackzip
En ambos casos, si se usaban los diccionarios más conocidos, los resultados después
de varios minutos eran los mismos, sin obtener la contraseña correcta, se debería usar un
diccionario propio.
Abriendo el zip, una vez descubierta la contraseña, se encuentran varios archivos con
nombres raros y sin extensión salvo el primero.
Si examinamos los metadatos de los primeros elementos, se percibe que todos ellos
tienen el mismo peso en kb, por lo que se puede tratar de un archivo divididos en varios.
Con el comando “cat” de Ubuntu y q* para indicar que queremos que concatene todos
los archivos que empiecen por la letra “q*”.
Ilustración 52. Unificar archivos
Como resultado de esta unión se obtiene un archivo único, que al abrirlo se abre una
imagen QR.
Planteamiento de un CTF para practicar hacking ético e informática forense
47
Ilustración 53. Código QR resultante
Si esta imagen la analizamos con un lector de QR online, nos da el enlace a una página
de mega.
Ilustración 54. Descodificar código QR
En ella se encuentra un único archivo .wav, que es una extensión de audio. Si se
reproduce este archivo, se escucha un audio inteligible del cual no se puede obtener
información útil. Por lo que este puede tener información oculta en sí mismo o en el audio.
Si se analizan los metadatos del archivo no se encuentra nada fuera de lo normal.
Si se analizan los hexadecimales del archivo tampoco se encuentra nada fuera de lo
común.
Planteamiento de un CTF para practicar hacking ético e informática forense
48
Ilustración 55. Hexadecimales archivo
También se comprueba que de verdad se trata un archivo de audio con el comando
“file”.
Por último, si se analiza el recorrido del archivo con el comando binwalk, no se
obtiene resultado.
Por lo que se deduce que en realidad la información se encuentra en el audio, para
ello se tiene que abrir con un editor de audio como Audacity.
Ilustración 56. Audio final
Planteamiento de un CTF para practicar hacking ético e informática forense
49
Hay varias maneras de esconder información en un audio, ya sea añadiendo ruido a
la información real, cambiando la frecuencia al audio, pasando algún filtro de paso
bajo/alto o incluso oculta en el espectrograma del audio, qué es un espectrograma.
Probando todas estas posibilidades:
• Al ser un audio no muy largo, se puede descartar la posibilidad del ruido
porque ya que todo el audio es ruido como tal, por lo tanto, no hay ruido que
eliminar.
• Si cambiamos la frecuencia del audio, como por ejemplo al tamaño de los
archivos en los que estaba dividido tampoco se obtienen resultados con los
que obtener información
Si observamos el espectrograma del audio, se ve que la bandera estaba oculta en el
audio.
Ilustración 57. Espectograma con bandera
La bandera y resolución de esta solución es responsabilidad, de esta manera concluye
la implementación y solución del ejercicio 2.
6. Reto 3
Este reto tendrá como tema principal la encriptación y criptografía, estas son técnicas
que alteran la información hasta el punto de hacerla inteligible, es decir, se tratará de
ocultar información de una manera diferente a las anteriores vistas y como es un reto
enfocado a un público joven, se tratará de usar referencias sencillas y conocidas como
son referencias al mundo del cine.
Planteamiento de un CTF para practicar hacking ético e informática forense
50
6.1 Historia
Como era de esperar tus amigos te han enviado un mensaje con un par de preguntas a
un examen que se realizara en unos días. Recuerda que es uno de los exámenes más
importantes. Y que una ayuda siempre viene bien, ¿no?. Pues vamos a ello, el texto está
encriptado, y tu amigo no te dará más pistas, ya se expone demasiado enviándote esto,
hasta usa un nombre de hacker "RainDollHacks". Tu misión es conseguir esa "pequeña"
ayuda para el examen.
6.2 Herramientas
Como Sistema Operativo se puede usar tanto Windows como Linux, ya que se basarán
la mayoría de las herramientas en online.
AES Crypt, es un software de encriptación y desencriptación de archivos, usando,
como su nombre indica, el cifrado AES-256 bytes.
Para cifrar y descifrar los textos se pueden hacer con código de github, ya que es la
criptografía es un campo muy extendido y tiene una gran comunidad o gracias a
herramientas online.
6.3 Implementación.
6.3.1 Paso 1
En este apartado se usarán diferentes tipos de cifrado para mostrar un enlace final.
Existen varios tipos de cifrado, pero para hacerlo más sencillo se usarán los más
conocidos:
El primer párrafo usará uno de los cifrados más sencillo y fáciles de aplicar, invertir
el texto.
.atropmi odot ,hA ...ed etra led y aífargotpirc al ed etra led aturfsid y asirp sagnet
on ,aífargotpirc ed oter la odinevneiB
Planteamiento de un CTF para practicar hacking ético e informática forense
51
El segundo párrafo se cifrará con el cifrado César: Es un tipo de cifrado por sustitución
una letra en el texto original es reemplazada por otra letra que se encuentra un número
fijo de posiciones más adelante en alfabeto.
Buscando este texto descifrado en Google nos dará que pertenece a una película
llamada Pulp Fiction.
El siguiente párrafo se cifrará con el cifrado Vigenère, este se trata de un cifrado
basado en diferentes series de caracteres o letras del cifrado Cesar formando estos
caracteres una tabla, llamada tabla de Vigenère, que se usa como clave. El cifrado de
Vigenère es un cifrado de sustitución simple polialfabético.
Este cifrado requiere de una clave, esta clave será el nombre de la película anterior
“PulpFiction”
zsq mf hsksbw imw ew ké vw ewegjas q imw hsjwuw shjghasvg hsjs wkls
kalmsuaóf. wk vw wrwimawd, 25:17, q vauw: wd useafg vwd zgetjw jwulg wklá hgj
lgvgk dsvgk jgvwsvg hgj dsk afbmklauask vw dgk wygíklsk q ds lajsfís vw dgk
zgetjwk esdgk. twfvalg kws simwd hsklgj imw, wf fgetjw vw ds usjavsv q vw ds
tmwfs ngdmflsv, ksimw s dgk vétadwk vwd nsddw vw ds gkumjavsv. hgjimw wk wd
smlwflaug ymsjvaáf vw km zwjesfg q wd vwkumtjavgj vw dgk fañgk hwjvavgk. ¡q
gk skwymjg imw nwfvjé s usklaysj ugf yjsf nwfysfrs q xmjagks uódwjs s siméddgk
imw hjwlwfvsf wfnwfwfsj q vwkljmaj s eak zwjesfgk! ¡q lú kstják imw ea fgetjw wk
qsznwz, umsfvg usays ea nwfysfrs kgtjw la!
¡wuméxx dggqrb p ffrmit vwab wixqwmu eqpetm! ¡j wtudkmg yxvctx aqba! ¿ehé
wucípna ubv zvqycifl? nnkvns, s ajjlg jcs zjláth. mcíf, r dwixléth. zv vbmacd, uw
bjvql. g, oy bicxw mp ocsfilz ajkjh, lsailz sj uwvpcf pñid, ¿ct mumifínxm oxxxwxahbh
u nprjktz hbsid ata fíta rrhxp wtg jtahn thedskgl, xce jhl duwtmcbvsuo, hóqw wgi
ccdlejsqftl rr kiwkjz cjcí m zpnlg f dwxahedm pcjukzwg? cjyot vcg gwg djcets tc
oqrn, ¡eycd oioál vcf fotifzáp ei zvqycifl!
Planteamiento de un CTF para practicar hacking ético e informática forense
52
Al igual que la anterior, este párrafo también pertenece a un fragmento de un dialogo
famosos de la película Bravehearth
El cuarto párrafo está cifrado con el algoritmo ROT47, es una variante del cifrado
Cesar utilizado para ocultar un texto sustituyendo cada letra por la letra que está 47
posiciones por delante en el alfabeto.
Siguiendo la temática de los párrafos anteriores, este párrafo pertenece a la famosa
película El Club de La Lucha.
El último párrafo, es el más corto, pero también el más importante ya que es el que
nos indica el camino al siguiente ejercicio conteniendo el enlace al servidor de archivos.
Este se cifrará con el algoritmo TripleDES, es un algoritmo de cifrado que usa una clave
de 112 bits, mucho más segura que su predecesor DES.
Para este tipo de algoritmo también se necesita de clave, y como anteriormente hecho,
se usará el título de la película Braveheart
{2 AF3=:4:525 ?@D 9246 56D62C 4@496D J C@A2D[ E6?6>@D 6>A=6@D
BF6 @5:2>@D A2C2 4@>AC2C >:6C52 BF6 ?@ ?646D:E2>@D] $@>@D =@D
9:;@D >2=5:E@D 56 =2 9:DE@C:2[ 56D2CC2:825@D J D:? @3;6E:G@D] }@
96>@D DF7C:5@ F?2 8C2? 8F6CC2[ ?: F?2 56AC6D:ó?] }F6DEC2 8F6CC2 6D
=2 8F6CC2 6DA:C:EF2=[ ?F6DEC2 8C2? 56AC6D:ó? 6D ?F6DEC2 G:52]
rC64:>@D 4@? =2 E6=6G:D:ó? BF6 ?@D 9:K@ 4C66C BF6 2=8ú? 5í2
D6C:2>@D >:==@?2C:@D[ 5:@D6D 56= 4:?6 @ 6DEC6==2D 56= C@4<[
A6C@ ?@ =@ D6C6>@D J A@4@ 2 A@4@ ?@D 96>@D 525@ 4F6?E2 J
6DE2>@D[ >FJ[ >FJ 423C625@D
DtwTC3VtBHlIWL0XbjRdQk9nqf5UQAl5aTQvmlqnTRCQORXYGia5nuqsp
XQFlvB5Wt6tC/vLXV5WyDJ3ZiomwYD00wqTva3essWzI79I2AKDw1SCbSGrg
dLWp8yzH6y/mqBHvDX2HzfXZYGn4Hi1g2eP+6aPQ6kdpEbPrFJhXylJkFrquJU1
JKlli+27wFHOP5DqbEVpcoc
Planteamiento de un CTF para practicar hacking ético e informática forense
53
6.3.2 Paso 2
Una vez dado al participante el enlace al servidor, se encontrará un archivo. Este
archivo se encuentra encriptado mediante la herramienta de Aes Crypt, usando el
algoritmo de encriptación AES 256 bytes, que es un esquema de cifrado por
bloques adoptado como un estándar de cifrado por el gobierno de los Estados Unidos
AES fue anunciado por el Instituto Nacional de Estándares y Tecnología (NIST).
Desde 2006, el AES es uno de los algoritmos más populares usados en criptografía
simétrica [17].
En el ejercicio anterior se usaron casi todos los títulos que había, salvo uno, este será
la contraseña del archivo, ElClubDeLaLucha.
Lo más difícil del ejercicio, es acertar con el programa para desencriptar ya que
usando algún código de github o programa podemos desencriptarlo sabiendo cuál
encriptación es, con la clave obviamente. Esta se sabe de una manera “sencilla” porque,
en el texto del principio, se encuentran las palabras “Rain Doll”, si buscamos esto en
internet no nos darán resultados exitosos, pero si investigamos un poco, vemos que Rain
Doll se pronuncia igual que Rijndael (también conocido como el algoritmo AES). Aunque
parezca un poco rebuscado si buscamos en Google “Rain doll algoritmo” nos llevará a la
página de AES en Wikipedia.
Programa usado: AesCrypt. Si en el texto de la historia vemos la primera letra de cada
frase, vemos que pone “Crypt” por lo que, sabiendo el algoritmo, el programa y la
contraseña, ya se puede descifrar el archivo.
6.3.3 Paso 3
Una vez desencriptado el archivo, el participante se encontrará con un archivo de
texto, este archivo contiene varias letras sin comprensión ya que está cifrado.
Para dar la bandera se usará una imagen, previamente modificada con cualquier editor
de imágenes, como Paint para añadir la bandera.
Planteamiento de un CTF para practicar hacking ético e informática forense
54
Ilustración 58. Bandera Reto 3
Se usará el cifrado en Base64, este es un sistema de numeración posicional que usa
64 como base. Es la mayor potencia de dos que puede ser representada usando únicamente
los caracteres imprimibles de ASCII. Esto ha propiciado su uso para codificación de PGP,
correos y otras aplicaciones [18]. Todas las variantes famosas que se conocen con el
nombre de Base64 usan el rango de caracteres A-Z, a-z y 0-9 en este orden para los
primeros 62 dígitos, pero los símbolos escogidos para los últimos dos dígitos varían
considerablemente de unas a otras. Otros métodos de codificación como UUEncode y las
últimas versiones de binhex usan un conjunto diferente de 64 caracteres para representar
6 dígitos binarios, pero estos nunca son llamados Base64.
6.4 Solución
Poniéndonos en la piel del participante, partimos de que tenemos una historia
introductoria y un archivo simple de texto
Abriendo el archivo .txt se ve un archivo con varios párrafos sin sentido alguno,
palabras que no significan nada, mezcladas con números y números con palabras.
Partiendo de aquí, hay varias posibilidades, que el archivo tenga información oculta en
sus metadatos y/o que el texto esté cifrado.
Si abrimos los metadatos del archivo
Planteamiento de un CTF para practicar hacking ético e informática forense
55
Ilustración 59. Metadatos archivo con texto cifrado
No se ve nada útil.
Si se abre los hexadecimales tampoco se ve algo con lo que seguir el ejercicio.
Ilustración 60. Hexadecimales archivo
Por último, si realizamos algunos comandos de Linux como “file” o “binwalk” se
comprueba que no hay información oculta, a simple vista.
Ilustración 61. Verificación extensión del archivo
Al no mostrar nada sospechoso o fuera de lo nomal, se tratará de descifrar los párrafos.
Echando otro vistazo más completo a los párrafos, se percibe que el primer párrafo
solo está dado la vuelta y basta con deshacer este cambio:
Bienvenido al reto de criptografía, no tengas prisa y disfruta del arte de la
criptografía y del arte de... Ah, todo importa.
Planteamiento de un CTF para practicar hacking ético e informática forense
56
Por lo que descifrado el primer párrafo se entiende que los demás están cifrados, para
ello se usarán los siguientes cifrados:
• Cifrado por sustitución: como Cesar, Vigenere y ROTN
• Cifrado por transposición: como Escritura inversa, columnar doble e interrumpida
• Cifrado según sus claves: como AES, DES y TripleDES
Como se ha mencionado el primer párrafo tenía un tipo de cifrado por transposición
de escritura inversa, pero los demás no parecen resolverse de la misma forma por lo que
el texto entero se dividirá en párrafos y se probarán los algoritmos con cada uno de ellos.
Los siguientes párrafos se intentarán descifrar con los algoritmos antes nombrados.
La resolución de este ejercicio se basará en prueba y error de algoritmos de cifrado,
empezando por el segundo párrafo ya que el primero está resuelto:
Para este se aplicará el cifrado Cesar, que se trata de un cifrado por sustitución.
Aplicando este cifrado se obtiene el resultado correcto del párrafo
Este párrafo parece un versículo de La Biblia, pero si buscamos a qué libro pertenece
nos encontramos que pertenece a la película Pulp Fiction.
Probando el siguiente párrafo con el algoritmo Cesar, no se obtiene los resultados
satisfactorios como en el párrafo anterior, por lo que se descarta este algoritmo.
Hay un pasaje que me sé de memoria y que parece apropiado para esta situación.
es de Ezequiel, 25:17, y dice: el camino del hombre recto está por todos lados rodeado
por las injusticias de los egoístas y la tiranía de los hombres malos. bendito sea aquel
pastor que, en nombre de la caridad y de la buena voluntad, saque a los débiles del
valle de la oscuridad. porque es el auténtico guardián de su hermano y el descubridor
de los niños perdidos. ¡y os aseguro que vendré a castigar con gran venganza y furiosa
cólera a aquéllos que pretendan envenenar y destruir a mis hermanos! ¡y tú sabrás que
mi nombre es Yahveh, cuando caiga mi venganza sobre ti!
Planteamiento de un CTF para practicar hacking ético e informática forense
57
Se utilizará el siguiente algoritmo en la lista, el algoritmo Vigenere, otro algoritmo
por sustitución, pero para aplicar este cifrado se requiere de una contraseña, y hasta este
momento no se ha nombrado ninguna clave salvo el título de la película anterior, por lo
que probando este cifrado y como contraseña “PulpFiction” se descifra este párrafo.
Este párrafo, al igual que el anterior, pertenece a una película, en este caso se trata de
Bravehearth
Para el siguiente párrafo se usarán los algoritmos de sustitución para ver si se pueden
resolver, probando el algoritmo Cesar no se obtiene una solución correcta. Con el
algoritmo Vigenere pasa lo mismo, usando la contraseña de la película anterior
“Bravehearth” o “PulpFiction” no se descifra el código. Es necesario probar un nuevo
algoritmo de sustitución, en este caso toca con ROTN probando con los más usados casos
de ROT, como ROT13 y ROT47. Como no se necesita contraseña para estos casos, se
pueden probar libremente.
Con ROT13 no se resuelve el cifrado, en cambio con ROT47 sí se descifra el código.
¡Habéis venido a luchar como hombres libres! ¡Y hombres libres sois! ¿Qué
haríais sin libertad? Luchad, y puede que muráis. Huíd, y viviréis. Un tiempo, al
menos. Y, al morir en vuestro lecho, dentro de muchos años, ¿no estaríais dispuestos
a cambiar todos los días desde hoy hasta entonces, por una oportunidad, sólo una
oportunidad de volver aquí y matar a vuestros enemigos? Puede que nos quiten la
vida, ¡pero jamás nos quitarán la libertad!
La publicidad nos hace desear coches y ropas, tenemos empleos que odiamos para
comprar mierda que no necesitamos. Somos los hijos malditos de la historia,
desarraigados y sin objetivos. No hemos sufrido una gran guerra, ni una depresión.
Nuestra guerra es la guerra espiritual, nuestra gran depresión es nuestra vida.
Crecimos con la televisión que nos hizo creer que algún día seriamos millonarios,
dioses del cine o estrellas del rock, pero no lo seremos y poco a poco nos hemos dado
cuenta y estamos, muy, muy cabreados
Planteamiento de un CTF para practicar hacking ético e informática forense
58
Si buscamos este trozo de texto, se descubre que pertenece a un dialogo de la película
El Club de la lucha.
Ya solo queda un párrafo por descifrar, para este párrafo seguiremos probando con
los cifrados de sustitución con los que sí se han obtenidos resultados satisfactorios.
Con el cifrado Cesar, no se obtienen resultados buenos, al igual que con el cifrado
ROT13 o ROT47. Para probar el cifrado Vigenere, se usarán como contraseña las
películas descifradas anteriormente, pero siguen sin obtenerse resultados para descifrar el
párrafo. Ninguno de los cifrado por sustitución ha conseguido descifrar el último párrafo,
por lo que se intentará con los cifrado por clave.
Empezando por el cifrado AES, usando el título de las películas anteriores como
contraseñas, ninguna de ella es la correcta, antes de pensar en otra contraseña se probarán
los diferentes cifrados nombrados anteriormente.
Con el cifrado DES y usando los títulos de las películas como contraseñas tampoco
se obtiene descifrar el último párrafo. En cambio, realizando la misma prueba con el
cifrado TripleDES sí obtenemos descifrar el último párrafo, la contraseña correcta es
Bravehearth
Descifrado el último párrafo, nos da un enlace a mega, en el cual hay un archivo. Este
archivo no tiene extensión, si repetimos los procesos anteriores como ver los metadatos:
Ilustración 62. Metadatos archivo intermedio
Ves, no era tan difícil, aquí tienes un regalo:
https://mega.nz/#!S2Yk1YJZ!1fDhdGQIJgMOm3kp9V6_yHLz0--T7h4-
NH7wfZLIrh0
Planteamiento de un CTF para practicar hacking ético e informática forense
59
Se ve que es un tipo de archivo CRY, luego se buscará a qué tipo de archivos hace
referencia esta extensión. Por el momento, se sigue buscando información oculta en el
primer archivo.
Los hexadecimales del archivo:
Ilustración 63. Hexadecimal archivo cifrado
El recorrido y tipo del archivo:
Ilustración 64. Verificación extensión archivo cifrado
Esta vez sí obtenemos información útil gracias a los metadatos, como es el tipo de
archivo, así que lo importante debe estar dentro del archivo, pero para poder abrirlo.
Buscando el tipo de archivo, se obtiene que se tratan de archivos encriptados con el
programa AesCrypt.
Buscando este programa, se comprueba que realiza encriptaciones con algoritmos
AES.
Planteamiento de un CTF para practicar hacking ético e informática forense
60
Buscando El algoritmo, vemos que se trata del cifrado AES256 que a su vez tiene
como apodo “Rain Doll”, que es el nombre que aparece en la historia de introducción.
Probando este algoritmo de descifrado con el título de las películas como contraseña,
obtenemos descifrar el archivo con la contraseña “ElClubDeLaLucha”.
Descifrado el archivo, se ve que es un archivo de texto con líneas incomprensibles en
su interior. Hay varias posibilidades, que la información se encuentre en sus
metadatos/hexadecimal o que haya más archivos incrustados en este o que el texto esté
cifrado.
Si vemos sus metadatos:
Ilustración 65. Metadatos archivo final
Nos dice que se trata de un archivo de texto.
Si vemos sus hexadecimales:
Ilustración 66. Hexadecimales archivo final
Planteamiento de un CTF para practicar hacking ético e informática forense
61
No nos da una información útil con la que poder seguir.
En cambio, si vemos si hay más archivos dentro de él o si se trata de su verdadera
extensión:
Ilustración 67. Verificación extensión archivo final
Gracias a ver si tiene algún archivo oculto, se descubre que el texto se trata de una
imagen, pero ¿cómo se forma esta imagen?
Para ello se debe tratar de que la información está codificada en el texto. Se usarán
los cifrados nombrados anteriormente, por sustitución o por clave:
Con los cifrados por sustitución como Cesar o ROTN no obtenemos resultados para
descifrar el texto. Para el cifrado Vigenere, se necesita una clave, pero aparte del título de
las películas no se respuestas positivas.
Con los cifrados por clave, como su propio nombre indica, no tenemos una clave con
la que empezar, así que probando con los títulos de película seguimos recibiendo
respuestas negativas.
Ante los resultados negativos, se deberá empezar con los cifrados por transposición,
para estos no son necesarios las claves. Aun así, no se obtienen maneras de descifrar el
texto final.
¿Nos hemos pasado alguna contraseña por alto? ¿Probamos diferentes tipos de
cifrado?
Fijándonos más detalladamente en el texto, buscando cifrados de imágenes,
descubrimos el codificado en base64, que codifica también imágenes. Así que copiando
este texto en cualquier decodificador de base64 online, obtenemos esto: una imagen que
contiene la bandera. Así concluye el último reto
Planteamiento de un CTF para practicar hacking ético e informática forense
62
Ilustración 68. Bandera Reto 3
Bandera Reto 3: cooperación
Estos retos han estados disponibles para su solución los días 27,28 y 29 de junio
mediante el campus virtual, para estudiantes de todas las universidades de España que se
pudieron matricular los días anteriores a estos.
7. Reto 4
7.1 Historia
Dentro de unos días, se realizará la celebración de la final del campeonato europeo de
fútbol y la organizadora de este evento está preocupada por la reventa de entradas que
pueda haber por internet. Por ello, te han pedido que averigües los métodos que pueden
tener los vendedores para pasar las entradas, el primer contacto que has tenido con uno
de ellos te ha pasado un archivo pdf, ¿podrás saber cómo pasan las entradas?
7.2 Herramientas
• Sistema Operativo: Linux, gracias a este SO se pueden usar comandos con el que
modificar los atributos de los archivos.
• Traductor de Hexadecimal, tanto a texto como a color
7.3 Implementación
Este será un reto basado sobre todo centrado en análisis forense.
Se partirá de un archivo de tipo pdf normal con un texto de relleno sin nada que ver
con el ejercicio.
Planteamiento de un CTF para practicar hacking ético e informática forense
63
Ilustración 69. Texto de relleno
Planteamiento de un CTF para practicar hacking ético e informática forense
64
A este archivo se le ha añadido una cadena, esta cadena se puede ver con el comando
“Strings archivo”, el comando muestra las cadenas de caracteres imprimibles que haya en
el archivo
Si copiamos esta parte de texto en un archivo aparte se ve que esta cadena contiene
varios caracteres “@” y entre ellos letras del abecedario
Si usamos un programa creado por nosotros, en el lenguaje de programación con el
que más cómodo nos encontremos y eliminamos las “@” se puede sacar el texto
escondido
Este texto nos lleva a un enlace de mega el cual nos permite descargar una imagen
Ilustración 70. Caracteres imprimibles
Ilustración 71. Cáracteres importantes
Planteamiento de un CTF para practicar hacking ético e informática forense
65
Ilustración 72. Bandera de colores con la solución
Esta imagen repleta de rectángulos de colores forma la bandera. Nos ayudaremos de
que cada color se puede representar también de forma hexadecimal, por lo que, si cada
rectángulo es un color, y si ese color se extrae con algún programa que detecte los colores,
Planteamiento de un CTF para practicar hacking ético e informática forense
66
como Photoshop, y esto se convierte a hexadecimal y, a su vez, también se convierte en
texto se puede visualizar la bandera
HEXADECIMAL: 45 73 74 61 20 65 73 20 6c 61 20 62 61 6e 64 65 72 61 20 42 41
4e 44 45 52 41
Texto: Esta es la bandera BANDERA
8. Reto 5
8.1 Historia
Una empresa famosa por sus diseños de página web está recibiendo últimamente
muchos ataques DDoS realizados por bots, por lo que están realizando entrevistas de
trabajo en busca de talento nuevo, sobre todo talento centrado en la ciberseguridad para
poder defenderse en los próximos ataques. El primer paso de la entrevista es encontrar el
enlace a la página donde se puede enviar el CV, ¿serás capaz de conseguir el puesto de
trabajo o no pasarás del primero paso?
8.2 Herramientas
• IntelliJ: IDE con el que realizar la programación del servidor y páginas con las
que interactuar.
• Framework SpringBoot, para el desarrollo de la páginas y tratamiento de los datos
que se puedan obtener con estas [20].
• Zip2Jhon: software encargado de romper contraseñas de archivos comprimidos.
8.3 Implementación
Se creará una página con solo código html, esta página no tiene nada importante, solo
es un conjunto de noticias de robo de contraseñas de Hotmail y un botón de continuar.
• https://www.elobservador.com.uy/nota/masivo-robo-de-cuentas-de-
gmail-hotmail-y-yahoo-20165510390
• https://www.troyhunt.com/the-773-million-record-collection-1-data-reach/
• https://www.tuexperto.com/2019/05/25/como-cambiar-la-contrasena-en-
gmail-hotmail-outlook-y-yahoo/
Página inicial:
Planteamiento de un CTF para practicar hacking ético e informática forense
67
Ilustración 73. Página inicial
Si se pulsa el botón de continuar, se controlará mediante controladores implementados
con el framework SpringBoot que se han introducido correctamente las cookies, por ello,
en la historia se menciona, para también dejar como pista, que el “administrador es
perezoso”, así que introduciendo en las cookies mediante las herramientas de
desarrolladores de los navegadores los valores “admin: true” se podría continuar con el
reto, si no se establecen estas cookies, se redirigirá a la misma página.
En nuestro reto, haremos uso, aunque indebido, del fichero “robots.txt”, este fichero
se encarga de evitar que algunos bots tengan acceso a alguna parte o toda la página web,
en cambio, en nuestro reto dará paso para el paso final. Por ello, la siguiente página
contiene un texto sobre Joseph Frederick Engelberger (también conocido como el
padre de la robótica) y un gif de Robocop, película estadounidense de ciencia ficción.
Planteamiento de un CTF para practicar hacking ético e informática forense
68
Ilustración 74. Página con pista final
Esto da a entender que la página para seguir se encuentra en el archivo “robots.txt”,
por lo que si añadimos esto a la url:
/cookies/robots.txt
Accedemos al archivo como tal de robots.txt
Ilustración 75. Enlace a la bandera
Este enlace nos redirige a un enlace de un servidor de almacenamiento en el cual se
puede descargar un archivo.zip, este se puede resolver con un diccionario de contraseñas,
Planteamiento de un CTF para practicar hacking ético e informática forense
69
en la página de inicio se mostraban noticias de robo de contraseñas de Hotmail, por lo
que el diccionario con el que se puede romper la contraseña es con este de Hotmail.
9. Reto 6
9.1 Historia
En una semana realizaré una fiesta para celebrar el fin de exámenes y mi final de
grado, pero para invitar a mis amigos a la fiesta y en sintonía con mi trabajo final de grado
he decidido ponerles un pequeño reto, por ello les he compartido un archivo de sonido
con el que podrán saber la hora y dirección dónde asistir. ¿Podrás acceder a mi fiesta?
9.2 Herramientas
• Traductor de texto a morse y viceversa.
• Exiftool: software que permite manipular los metadatos de diversos archivos [21].
• Sistema Operativo, Linux.
9.3 Implementación
Se partirá de un video, este video estará completamente en negro, pero tendrá un audio
que estará codificado en morse. Para crear el mensaje en morse se han utilizado
herramientas online creadas con ese propósito.
Enlace:
https://mega.nz/#!SuhE3KBC!b1gzDNh3xAwntrRRIQBXjhYlka62oOJpTWiNOUh71T8
Al ser algo evidente, se puede extraer el audio del video y si se descodifica con
cualquier herramienta de traductor de morse, da la siguiente frase:
“Suelo usar mucho twitter”
Así se da a entender, o como pista, que la siguiente parte del reto se encuentra en la
red social, Twitter.
Para el siguiente paso se ha modificado uno de sus atributos con la herramienta de
exiftool, esta herramienta permite modificar el texto de algunos atributos dependiendo
del tipo de archivo que tratemos, en nuestro caso es un mp4 así que tenemos una gran
variedad de atributo, se ha elegido Author y Copyright.
Planteamiento de un CTF para practicar hacking ético e informática forense
70
En cada uno se añadirá una frase codificada en md5 el cual nos indicará el número y
la cuenta en la que se encuentra el tweet.
Atributos modificados:
Ilustración 76. Modificación metadatos
Resultado:
Ilustración 77. Resultado modificación hexadecimales
Descodificado md5:
• notherIdiot: 2a569471436d99eef2686bb41913a976
• 1142129886603173888: 355cde95944e2f94de683104201cf32c
El tweet es un grupo de números, estos estarán cifrado con el cifrado de Polybios, se
trata de un algoritmo trivial, donde cada letra del alfabeto es reemplazada por las
coordenadas de su posición en un cuadrado. Es un caso particular de transposición mono-
alfabética. Este cifrado es relativamente fácil de descodificar.
Ilustración 78. Texto cifrado
El cuadrado de Polybio a usar es este, el general para no llevar a confusiones:
Ilustración 79. Cuadrado de Polybio
Planteamiento de un CTF para practicar hacking ético e informática forense
71
Si se descifra da este resultado:
La bandera es BANDERASEIS
10. Discusión
Una vez concluida la implementación de los retos, se compartieron las propuestas más
completas en los temas especificados, para su solución por los posibles participantes de
los retos.
Se seleccionaron mis 3 primeros retos de este trabajo, en el cual se abarcaban los
campos de Análisis Forense, Hacking web y Criptografía, porque eran los más completos
con cierta dificultad y en los cuales se usaban varias herramientas tanto para su solución
como para su implementación, aparte de diferentes conceptos básicos necesarios para el
hacking ético. Los otros retos que se presentaron al concurso fueron de mi compañera
María Teresa, estos abarcaban diferentes campos de la seguridad informática, salvo el
tema del Análisis forense debido a que este es un campo muy grande y muy básico para
el hacking ético, por lo que se decidió elegir este mismo campo, pero con diferentes
herramientas y conceptos.
Después de anunciarse el concurso por redes sociales y correos, se registraron casi
100 participantes. Estos participantes pudieron solucionar los retos mediante un aula
virtual, donde debían poner la bandera como solución para poder puntuar. Los retos
estuvieron disponibles durante tres días (26-29) del mes de junio de 2019.
Los retos que más participación tuvieron fueron el reto de análisis forense y el de
hacking web, obviamente, llegando a solucionarse varias veces por diferentes
participantes, en cambio, el de criptografía no se llegó a solucionar, por lo que supongo
que tenía demasiada complejidad para lo esperado y si hubieras próximos CTFs donde se
use este reto se debería modificar.
Ahora se mostrarán unas gráficas con la información obtenida durante estos días:
Planteamiento de un CTF para practicar hacking ético e informática forense
72
Ilustración 80. Resultados Retos
Según la gráfica, solo el 9.5% de participantes que intentaron el Reto 1, que trataba
sobre análisis forense, consiguieron resolverlo, en cambio, en el Reto 2, que trataba sobre
hacking web, lo intentaron menos participantes, pero en proporción lo consiguieron más
con un 33.3% de acierto. El reto de criptografía no consiguió resolverlo correctamente
nadie.
Gráfica sobre el tiempo empleado por los que han resuelto los retos
0
5
10
15
20
25
30
35
40
Reto 1 Reto 2 Reto 3
Retos
Éxito Fallo
0
10
20
30
40
50
60
Reto 1 Reto 3
Tiempo empleado
Tiempo mínimo (horas) Tiempo máximo (horas)
Ilustración 81. Tiempo máximo y mínimo de la resolución de retos
Planteamiento de un CTF para practicar hacking ético e informática forense
73
Cómo dato curioso y a la vez importante en nuestra sociedad, se muestra una gráfica
sobre datos de los participantes. Se ve una gran diferencia entre el número de participantes
de género masculino que de género femenino, aun así es un comienzo para la igualdad de
género en el campo de la informática.
Ilustración 82. Datos género participantes
Espero que este trabajo haya contribuido para la mejor comprensión del uso que se
puede hacer del hacking ético y la informática forense, además de resultar entretenido
para los estudiantes.
11. Conclusiones y trabajos futuros
Como conclusión del Trabajo Fin de Grado, se puede decir que se ha conseguido
implementar un conjunto de ejercicios para poder incluirlos en una competición de tipo
CTF. Se han diseñado, se han implementado y se han resuelto todos los ejercicios,
cumpliendo con las expectativas planteadas en cuanto a temática (informática forense y
hacking ético), destinatarios, nivel de dificultad…
También se presentan herramientas que son de utilidad para solucionar los retos
propuestos y otros similares, lo cual es un aspecto que conviene también destacar.
Finalmente hay que indicar que cualquiera que lea este TFG aprenderá conceptos,
técnicas y herramientas relacionadas con el hacking ético y la informática forense, además
Participantes
Hombre Mujer
Planteamiento de un CTF para practicar hacking ético e informática forense
74
de pasar (seguramente) momentos entretenidos mientras soluciona alguno de los retos
propuestos.
Como trabajos futuros, podrían indicarse que el conjunto de retos propuestos para un
CTF es fácilmente ampliable en cuanto a número y temática implicada. En este sentido,
seguramente sea fácil continuar en la línea de trabajo investigando nuevas alternativas. Y
cambiando un poco de perspectiva, aunque en este TFG se ha seguido una
implementación de propuestas de tipo jeopardy, es posible continuar en otros trabajos
futuros considerando pruebas del tipo ataque-defensa.
Planteamiento de un CTF para practicar hacking ético e informática forense
75
12. Referencias
[1] Instituto Nacional de Ciberseguridad de España. Disponible en: https://www.incibe-cert.es/blog/ctf-
entrenamiento-seguridad-informatica
[2] Plataforma online para entrenamiento en seguridad informática, CTF365. Disponible en:
https://ctf365.com/
[3] Plataforma online para entrenamiento en seguridad informática, con un gran foro con el que
compartir conocimientos, OverTheWire. Disponible en: https://overthewire.org/wargames/
[4] Plataforma online para entrenamiento en seguridad informática, centrado en estudiantes, PicoCTF.
Disponible en: https://picoctf.com/
[5] Forociber, único evento de la Comunidad Autónoma de Extremadura que trata las temáticas del
Derecho Tecnológico y la Ciberseguridad con expertos de gran prestigio. Disponibles consultas en:
http://forociber.es/
[6] JNIC, Jornadas Nacionales de Investigación en Ciberseguridad, este año realizadas en Cáceres.
[7] Wireshark. Disponible descarga en: https://www.wireshark.org/
[8] Hexinator. Disponible descarga en: https://hexinator.com/
[9] Audacity. Disponible descarga en: https://audacity.es/
[10] John The Ripper. Disponible descarga en: https://www.openwall.com/john/
[11] Fcrackzip. Disponible descarga en: https://pkgs.org/download/fcrackzip
[12] YOW. Disponible descarga en: https://github.com/juanvelascogomez/YOW
[13] Obfuscator. Disponible en: https://obfuscator.io/
[14] CoagulaLight. Disponible descarga en: https://www.abc.se/~re/Coagula/Coagula.html
[15] Generador y conversor QR. Disponible en: https://www.qrcode.es/es/generador-qr-code/
[16] AES Crypt. Disponible descarga en: https://www.aescrypt.com/
[17] Estándar encriptación DES. Disponible en
https://csrc.nist.gov/csrc/media/publications/fips/46/3/archive/1999-10-25/documents/fips46-3.pdf
[18] Estándar encriptación AES. Disponible en
https://web.archive.org/web/20150407153905/http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
[19] Codificador y descodificador de Base64: https://codebeautify.org/base64-decode
[20] SpringBoot. Disponible documentación en: https://spring.io/projects/spring-boot
[21] Exiftool: Disponible en: https://www.sno.phy.queensu.ca/~phil/exiftool/