Hacking en griego antiguo: resultados de la etapa en línea de NeoQUEST-2019


Para resumir la etapa en línea de NeoQUEST-2019 : bajo el cortador hablaremos de las tareas, ¡mire las estadísticas de su progreso y elogie a los ganadores!


Descargo de responsabilidad: el producto puede contener trazas de maní y spoilers para aquellos que aún no han completado la tarea, pero honestamente lo harán (y existe esa oportunidad: ¡ el sitio de la etapa en línea continúa funcionando!). No se recomienda su uso si no ha demostrado suficiente perseverancia para obtener todas las llaves usted mismo.


Quien es el mejor


Entonces, este año nuestros ganadores fueron:


1er lugar - AV1ct0r, 952 puntos;
2do lugar - OLD_NA_MESTE, 766 puntos;
3er lugar - gurgenhopar, 505 puntos.


Los niños honran y respetan! Cabe señalar que los ganadores de 1-2 lugares ya fueron determinados desde el primer día de la competencia, y no concedieron sus posiciones a nadie (excepto que intercambiaron lugares entre sí). Pero la lucha por el tercer lugar fue ardiente: ¡a veces el participante "bronce" cambiaba varias veces al día!


¡Los tres primeros esperan regalos bien merecidos, y todos los que han completado al menos una tarea en su totalidad son recuerdos del equipo NeoQUEST! (sí, por cierto: si ha resuelto al menos una tarea, pero aún no nos ha dicho cómo le gustaría recibir un regalo, ahora es el momento de hacerlo escribiendo a support@neoquest.ru )


Revelar secretos


Para los participantes, preparamos 10 tareas, que varían en complejidad y tema. Hablaremos de algunos en detalle, ¡y el resto pronto se lanzará en Habré en forma de artículos separados!


Tarea número 1 - "Nemean echo"
En esta tarea, a los participantes se les proporcionó el llamado servidor echo, que puede conectar a un puerto específico y enviar datos. En respuesta, el servidor envía lo mismo que se le envió. El indicador se encuentra en el servidor y debe obtenerse solo con una dirección IP y un puerto.


Tarea No. 2 - "Suave y sedoso"
La historia es banal: se filtra información muy importante en la red. Los participantes reciben dos archivos: el archivo binario en sí, que generó el tráfico con fugas, y el volcado pcap de este tráfico. El indicador está en un volcado de pcap, pero en forma cifrada, y debe descomprimir el archivo binario para descifrar los datos y obtener el indicador.


¡Las tareas de análisis número 1 y número 2 vendrán separadas Habrastatami!


Tarea número 3: "Comunicación con los cielos"
Casi todos los participantes lograron establecer conexiones celestiales, la tarea se convirtió en el líder en la capacidad de cruzar el país. Datos iniciales: enlace al bot de telegramas.


El primer paso fue agregar un bot y leer su descripción. Dice que el bot se "congela" en su red social favorita y en ningún otro lugar. Para todos los intentos de hablar con él al menos de alguna manera, el bot lo rechaza y le pide que le escriba en Olimpia. Vamos a la dirección indicada por el bot y llegamos a la página con autorización en la red social "divina" (no).


Al comunicarse con el bot, puede recibir el siguiente mensaje: "¡No sigo enlaces desconocidos!", Lo que puede darnos la idea de que el bot podría seguir el enlace familiar.


Cuando intenta ir a otro lugar que no sea la página de autorización (para la página de índice, por ejemplo), redirigimos de una manera interesante (de hecho, esto se hace en muchos sitios, pero normalmente filtran el siguiente parámetro):


login? next = index


Lo primero que viene a la mente: "¿No hay OpenRedirect-a?" Lo es, pero solo funciona para un usuario autorizado en una red social, que es el dios del ridículo y la calumnia, mamá , porque constantemente sentado en ella. Sí, vamos a subir nuestro sitio, como el siguiente parámetro, pasarle el enlace y ver si el bot hace clic en el enlace. Levantamos rápidamente cualquier sitio en un alojamiento gratuito. Servimos el bot:


http://213.170.100.214?next=https://your.freeapp.kek/


El bot no llegó a la página, la redirección no funcionó. Todo es cuestión del filtro, los desafortunados desarrolladores verifican si hay una subcadena http o https en el parámetro "siguiente", con la esperanza de redirigir al usuario solo dentro de su dominio. Ingenuo. Enviamos:


http://213.170.100.214?next=//your.freeapp.kek/


III ... ¡el bot va a nuestro sitio! Pero no pasa nada más. El bot entró, miró y se fue (el primer día no fue así, ya que el bot tenía un error: enviamos cookies con una sesión después de una redirección al sitio web del atacante, lo que hizo la tarea un poco más fácil, el segundo día, el vacío se cerró el segundo día).


Sin embargo, si realiza una copia de la página de autorización, el bot pensará que ha iniciado sesión e iniciará sesión en su página. Copiamos recursos de la página de autorización de la red social y hacemos una página de phishing. En el servidor, escribimos en los registros todos los inicios de sesión y contraseñas ingresados. Enviamos el enlace al bot, y se conecta de manera desatendida a la página falsa.


imagen

Tomamos el nombre de usuario y la contraseña e iniciamos sesión en la red social, obtenemos la clave. Éxito!


Para esta tarea, uno de nuestros participantes, mr_umnik , escribió una reseña aquí .


Tarea número 4: "Crypto Crypto"
La cuarta misión de "Crypto Crypto" está dedicada, curiosamente, a la criptografía. Y esto no se trata del tradicional CTF RSA, sino de los cifrados del mundo antiguo, cuando el arte de la criptografía estaba recién en pañales.
Entonces, se da un archivo con tres archivos. El contenido del primer archivo incluye texto legible y una línea encriptada:


Usa la sabiduría que la diosa te ha otorgado.
5fw909zcmxsc7sxn1m6m86wxs2xrhrx78r72333mms8rlkg1u41o4dm82n632n2c2s8r17nwx3673c6hnh8n8x3mn7dwrrdswmxm1nc3wc681d16rmdc8cx


Surge la pregunta, ¿de qué tipo de diosa estamos hablando? Pasemos a la leyenda. La única referencia es la mención de una mujer sabia en un casco con una lanza en sus manos, representada en el medallón Cerberus. Tales vestimentas corresponden a la diosa de la sabiduría Atenea, que inmediatamente sugiere el uso de un cifrado afín consonante. La vieja fuerza bruta permitió descifrar el mensaje secreto:


módulo 9b6598564ebfb1fd6576cac681c87000bb51
Texto cifrado 2b174f07479751ce84d60f809fa4a14160b482dcc25db6be490d9f1e2efcb29196


Entonces, ¿qué hacer a continuación? ¿Quizás el segundo archivo dará más información? Entonces su contenido:


¿Qué otro código antiguo vendrá a mi mente? Comencemos con un simple ...
35ub2b9slmkjonnqtsokomumqnphkinmrqlqoyz4aayvr4tzv4ax8vv19xrcvb9ayv6fayrx58vr4ayv58v3r4uayvtyz4v9v68v9v4avuayvtyz4v9vayv58v3d5f


El primer cifrado que viene a la mente es el cifrado de César . Afortunadamente, ¡y se puede descifrar fácilmente! Obtenemos:


módulo b45327669cb7375d596803165a9497
sugerencia Los antiguos griegos nos dieron el teorema de Pitágoras y los chinos presentaron el teorema chino sobre sabes qué


Si! Aquí hay una pista! Además, sugiriendo el teorema del resto chino . Este teorema establece que cierto número entero puede reconstruirse a partir del conjunto de sus residuos a partir de la división por números a partir de un conjunto de números primos mutuamente pares.
Entonces, entonces, tenemos 2 módulos, así como un cierto texto cifrado. ¿Quizás este texto cifrado es el mismo entero restaurado? Luego, para encontrar los restos, es suficiente llevar el texto cifrado a dos módulos que conocemos. Obtenemos:


Residuo 1: C1 = Modificación de texto cifrado (módulo 1) = 8b53icsoft74ebfb1fd6576cac681c86ffc36e7
Residuo 2: C2 = Modificación de texto cifrado (módulo 2) = 14327669cb7348d59680c6595418


¿Qué hacer a continuación? Prestemos atención al tercer archivo:


Teníamos dos módulos mutuamente simples, un texto cifrado críptico, una pista sobre la tecnología china y ... la impresión de la antigua Esparta.
No es que fuera una reserva necesaria para resolver el rompecabezas, pero desde que comencé a recopilar pistas, es difícil detenerlo ... ¿Tal vez es hora de comenzar a resolverlo ya?


Todo parece estar en su lugar ... excepto la impresión de Ancient Sparta. ¿Por qué está ella aquí? Tal vez hay tal cifrado? De hecho, el cifrado de la antigua Esparta también se llama cifrado de Szital .
Intentemos descifrar los residuos resultantes. Como resultado, seleccionamos aquellos cuyos fragmentos coinciden con las piezas de la bandera que figuran en la leyenda. Como resultado, recibimos:


M1 = 88b78fb7161c54fcc33eda86bb6c6edf56f7
M2 = 19d64c553b9927657384640168c8


Entonces la bandera final toma la forma:


NQ2019 88b78fb7161c54fcc33eda86bb6c6edf56f719d64c553b9927657384640168c8


Tarea número 5 - "Carta de Apple"
Según la leyenda, tenemos los siguientes datos: una imagen de una cámara web que dice "Robert B. GmbH". Y también: un archivo con contenido extraño. Para obtener la clave, debe completar los siguientes campos del formulario:



Además, el héroe de la leyenda insinúa que la imagen es una pista para el número de teléfono, y el archivo debería de alguna manera llevarnos a la identificación de la cámara.


Nos ocuparemos de la imagen primero. Buscarlo en Internet no conduce a nada. Pero la inscripción "Robert B. GmbH" después de la primera solicitud en Google nos dice que el fabricante de esta cámara es la empresa alemana Bosch, cuyo fundador es Robert Bosch. Y luego es hora de recordar que en el formulario web cerca del campo "Teléfono" estaba marcado "(.gr)". Bueno, la acción tiene lugar en Grecia, es lógico. Por lo tanto, después de algunas deliberaciones, pasamos al sitio web griego de Bosch . ¡Y el número de teléfono indicado allí ( +30 210 5701360 ) es justo lo que necesitamos!


Pasamos al segundo archivo. Tiene el siguiente tipo de entrada:


... c6d1eb6f29d739176bdbe79c3d3b504c9d64fecb ... olympic_shot.png


¡Teníamos que adivinar que tenemos un enlace magnético en su formato más simple, en el que se utiliza un hash en la red BitTorrent más común! Queda por restaurar correctamente el formato del enlace magnético.


imán :? xt = urna: btih: c6d1eb6f29d739176bdbe79c3d3b504c9d64fecb & dn = olympic_shot.png


Agregamos este enlace al cliente torrent, descarga la imagen:


imagen

A primera vista, no tiene nada de especial, pero si observa de cerca, puede ver que un maestro en una escuela griega antigua no señala con el dedo al vacío, sino a un vínculo bastante válido con el grupo VKontakte.


En el grupo encontramos una publicación con la siguiente parte de la tarea. Es necesario descargar un archivo escrito en C de los documentos y encontrar sintaxis y errores semánticos en él. En el archivo mismo, puede observar una interpretación peculiar de los mitos griegos antiguos.


Código fuente C
#include "AncientGreece.h" void eat (int who, int *whom) { *whom = 0; } int BirthOfAthena() { int Zeus = 10000; int Metis = 1000; int Athena = Zeus + Metis; eat(Zeus, &Metis); Athena = 0; bool headache = TRUE; int kick = -1000; do { kick++; if (kick = Athena) { Athena = 1000; headache = FALSE; } } while (headache); return Athena; } int ApplesOfTheHesperides() { int labour = 0; int Heracles = 100; int heaven = 100000; int Atlas = 1000; int golden_apples = 8222; /*why?*/ bool trick = TRUE; while(!Heracles_is_here) { Atlas = Atlas + heaven; if (labour == 10) break; labour++; } Heracles_is_here = TRUE; Atlas = Atlas - heaven; Heracles = Heracles + heaven; Atlas = Atlas + golden_apples; trick = TRUE; Atlas = Atlas - golden_apples; Heracles = Heracles - heaven; Atlas = Atlas + heaven; return Heracles + golden_apples } void BirthOfZeus() { int Cronus = 1000; int newborn_gods[] = {1000, 1000, 1000, 1000, 1000, 1000}; int i = 0; for (i = 0; i < 6; i++) { eat(Cronus, &newborn_gods[i]); } int Zeus = newborn_gods[6] + 10000; bool battle = TRUE; bool peace = FALSE; int Thetis = newborn_gods[0] + 1000; int Hera = newborn_gods[2] + 1000; int Hades = newborn_gods[3] + 1000; int Demeter = newborn_gods[1] + 1000; int Poseidon = newborn_gods[4] + 1000; Cronus = 0; battle = FALSE; peace = TRUE; } void main() { BirthOfZeus(); BirthOfAthena(); ApplesOfTheHesperides(); } 

Encontramos la función main () y entendemos que es necesario considerar las funciones en el orden de sus llamadas en main (). Los números en esta tarea tienen su propio significado: la persona no nacida / muerta / dios es designada por el número 0, la persona por el número 100, todos los dioses y titanes - 1000 y Zeus el Trueno tiene 10,000.


Vaya a la función BirthOfZeus (). Es lógico suponer que esta función habla sobre el nacimiento de Zeus, así como sobre su lucha por el poder. Entonces, después de leer el mito del nacimiento de Zeus, miramos el código y vemos que un ciclo de 0 a 6 en este caso es un error semántico: Kronos no se comió a cinco de sus hijos, sino solo a cinco. Queda por comprender cómo componer una clave a partir de esto: la clave se compila mediante números de línea con errores. La primera parte de la clave, el número de línea, es 60. Seguimos adelante.


El siguiente error nos espera en la línea número 64: todo es simple, va más allá de los límites de la matriz.


El siguiente error en la línea 67. El hecho es que Thetis, es decir, la diosa Thetis, no era la hija de Kronos y la hermana de Zeus. En cambio, debería haber la diosa Hestia.


En la función BirthOfAthena (), un error nos espera con mucho cuidado: en la condición de la línea 20, se escribe un signo igual y, de acuerdo con el estándar del lenguaje C, son necesarios dos signos iguales para la comparación.


La función más compleja era ApplesOfTheHesperides (). Una rama de una tarea directa literalmente surge de inmediato. ¿Por qué es int golden_apples = 8222? Aún no está claro.


La publicación VKontakte también tiene algunos consejos para esta tarea:


1) ¿Dónde buscar la respuesta? En la apertura, que sucedió el primero de marzo.


Al no mirar brevemente los eventos del primero de marzo (o puede encontrar de inmediato lo que necesita recordando la publicación y la mención de la alquimia), se descubre la Tabla Periódica de D. I. Mendeleev. ¡Genial, sigue adelante!


2) ¿Qué usar al dibujar parte de la clave? (tenga en cuenta la ubicación del rompecabezas en el texto)


• ¿Qué une las siguientes tres palabras: Mnemosyne, Ocean, Huygens?
• ¿Quién le dio fuego a la gente?


Google y encuentra la respuesta: TITAN OF PROMETHES. Como se indicó en la tarea, esto ayudará a compilar la clave. Queda por entender exactamente por qué 8222. No fue en vano que buscamos información sobre la tabla periódica: es obvio que la respuesta debe buscarse allí. Recordando la química, encontramos el número de serie de oro = 79.


¿Pero qué hay de la manzana? Probablemente, la química también será útil aquí de alguna manera. Descubrimos que la manzana contiene más potasio. Su número de serie es 19. Nos acercamos al gran secreto: ¿por qué 8222 y no 7919? Por supuesto, el viejo y buen código César. Cambiamos cada elemento 3 a la derecha, obtenemos nuestro valor de 8222.


Quedaba un poco: cifrar el TITAN de PROMETEI de acuerdo con la tabla periódica. Ambos elementos están en la tabla, obtenemos: 2564. Sorprendentemente, procedemos a la búsqueda de errores en el código.


En la misma función, se espera una variable no inicializada en la línea 38, un error semántico en la línea 41 (¡fue la hazaña de Hercules 12!) Y la ausencia de un punto y coma en la línea 52. Fuh, lo logramos. El código resultante = 606467202564384152. Esta es la identificación de nuestra cámara. Extraño, pero en la antigua Grecia eso simplemente no sucede.


¡Ingresamos estos dos valores en el formulario, probamos al mundo entero que no somos un robot y obtenemos la clave atesorada!


Tarea número 6 - "Va, el toro, se balancea"
La tarea número 6 de este año fue muy difícil, pero interesante. Lo analizaremos en detalle en un Habrastatya separado, pero por ahora, diga brevemente: tenía que jugar con el Minotauro usando una aplicación en la que faltaba algo.


Tarea número 7: "¿Eres más agudo? ¡No, rápido!
En esta tarea (¡que también será un informe por separado!), Se les pidió a los participantes que trataran con una aplicación que encripta los datos ingresados ​​utilizando el valor de los parámetros del acelerómetro del dispositivo tomados mientras se presionan los botones del teclado. Para completar la tarea, era necesario ingresar varios datos en la aplicación y analizar cuidadosamente los sesgos resultantes.


Tarea número 8: "El intérprete divino"
Nuestros participantes habituales pueden haber aprendido esta tarea: se ha mantenido desde el año pasado. Entonces nadie pasó por la segunda parte, y decidimos darle una segunda oportunidad. De acuerdo con la primera parte de la tarea, está nuestro artículo sobre Habré, donde se trata principalmente de la búsqueda de vulnerabilidades. Este año, el objetivo de la tarea no se centró en la búsqueda, sino en la explotación de vulnerabilidades, y para esto, nuevamente, seleccionaremos un Habrastaty separado.


La conclusión es que el programa de intérprete de comandos se ejecuta en el puerto de red del servidor. El programa binario se adjunta a la tarea. El servidor ejecuta Windows Server 2016 y, entre otras cosas, el mecanismo de protección CFG está incluido allí. Todo lo que se sabe sobre la clave es que consta de 70 caracteres y se encuentra en el archivo key.txt junto al ejecutable en el servidor.


Tareas №9 - "El juego en la caja"
En esta tarea, tenemos dos servidores. Puede enviar archivos RAR al servidor n. ° 1, que se desempaquetan allí, y puede ayudar a ocultar la clave en el servidor n. ° 2.


Tarea número 10: "No golpees, Odiseo"
Esta tarea fue una de las más difíciles: solo un participante la dominó. Datos iniciales: archivo con infraestructura de red, todos los archivos necesarios en los que se cifraron. Y si está encriptado, entonces solo hay una forma: ¡desencriptar!


¡Las tareas de interrogatorio número 9 y número 10 también vendrán separadas Habrastatami!


Científicos británicos han establecido


Pequeñas estadísticas de este año:


  • El número de participantes registrados es de 1014 personas.
  • El número de tareas completadas - 10/10
  • El número de participantes que completaron al menos una tarea en su totalidad es 33.

El número de claves válidas para cada tarea.



El número de claves válidas para cada día de la competencia.



Para todo el período de la fase en línea de NeoQUEST-2019, se recibieron 94 claves.



Que sigue


Y luego - "Confrontación" el 26 de junio, en San Petersburgo, que será la sede de la final de nuestra competencia. ¡Estamos esperando a los mejores hackers para asegurarnos de que realmente seas el mejor! Y sobre los que no vienen, pensaremos así ...



¡Sigue las noticias en el sitio web del evento de verano!

Source: https://habr.com/ru/post/446286/


All Articles