Writeups del NSA Codebreaker 2017

Cada año, la NSA lanza un reto llamado Codebreaker que requiere ingeniería inversa y habilidades de exploting. Este año fue diseñado para conducir a los jugadores a través de algunas de las fases que podrían darse si se encuentra a alguien malicioso en la red. En total seis tareas, cada una basada en la anterior y que requerían diferentes habilidades. Hubo 1.098 participantes y solo tres pudieron completar las seis tareas. Gracias a Jonathan Armer podemos ver cada uno de los writeups del reto planteado por la agencia de espionaje más famosa del mundo:

Descripción del reto:

DISCLAIMER: La siguiente es una historia FICTICIA diseñada para proporcionar un contexto realista para el Desafío Codebreaker y no está vinculada de ninguna manera a eventos reales.

El Departamento de Seguridad Nacional (DHS) ha solicitado la ayuda de la NSA para investigar actividades inusuales de la red dentro de un gran sistema SCADA. El sistema controla la infraestructura crítica para múltiples ciudades, por lo que es imperativo que la evaluación se lleve a cabo de inmediato. Si se encuentran intrusiones, debemos identificar cómo se comprometieron los sistemas y neutralizar la amenaza. A la DHS le preocupa que alguien intente tomar el control de los nodos del sensor distribuido y forme una botnet grande. Si esto sucede, podrían usarlo para causar estragos en las ciudades y potencialmente lanzar ataques DDoS contra otras redes críticas. ¡Necesitamos tu ayuda para evitar que esto suceda!

Para este desafío, se le entregará una serie de seis tareas, cada una de ellas en dificultad creciente, con el objetivo final de neutralizar por completo la red zombi. Estas tareas se resumen de la siguiente manera:

- Configurar una instancia de prueba del sistema (Tarea 0)
- Analizar el tráfico de red sospechoso (Tareas 1 y 2)
- Analizar los componentes críticos del sistema en busca de vulnerabilidades (Tareas 3 y 4)
- Realizar un análisis forense de un endpoint comprometido (Tarea 5)
- Diseñar un exploit para el servidor de botnets y diseñar una estrategia para limpiar los endpoints infectados (Tarea 6)

¡¿Estás preparado para el desafío?!

Tarea 1: analizar tráfico de red sospechoso, parte 1

Se obtiene una captura de tráfico y hay descubrir qué IP son sospechosas. Para hacerlo más fácil, daban las claves de descifrado. Este ejercicio permite comprender mejor el protocolo MQTT y lo que está sucediendo.

Task 1 Writeup

Tarea 2: analizar tráfico de red sospechoso, parte 2

Al igual que la tarea anterior, se dispone de una captura de tráfico y hay que encontrar IP sospechosas. Esta vez no se proporcionan las claves y se pide que se escriba una regla de Snort o de Bro para automatizar el proceso.

Task 2 Writeup

Tarea 3: analizar componentes críticos del sistema en busca de vulnerabilidades, parte 1

En función de las IPs encontradas anteriormente, los hipotéticos compañeros de equipo determinan que alguien está atacando su red. El jugador tiene la tarea de auditar el código fuente del módulo de autenticación en busca de vulnerabilidades.

Task 3 Writeup

Tarea 4: analizar componentes críticos del sistema en busca de vulnerabilidades, parte 2

En función de la vulnerabilidad que descubrió en la tarea tres, el equipo de desarrollo ha auditado los programas agent y agent_controller. El objetivo aquí es auditar el binario de terceros libauth.so, para el cual no se tiene el código fuente. Este módulo se usa para validar la firma de los mensajes críticos del sistema que se envían a los agentes.

Task 4 Writeup

Tarea 5: realizar un análisis forense de un endpoint comprometido

Para esta tarea, se proporciona una captura de memoria de uno de los agentes de MQTT. Se necesita identificar el PID del proceso malicioso, todo lo relacionado con MQTT y el servidor HTTP C2 del atacante. Para hacer esto, se puede usar Volatility para analizar el volcado de memoria, y un desensamblador para analizar el código de cualquier proceso extraído.

Task 5 Writeup

Tarea 6: crear un exploit para el servidor de la Botnet e idear una estrategia para limpiar los endpoints infectados


Se identifica un servidor con el perfil del que actualmente está utilizando el botmaster. Debemos ejecutarlo y luego buscar la manera de explotarlo para encolar y lanzar un comando y desinstalar la botnet. Para finalizar esta tarea, se necesitan encontrar 4 vulnerabilidades diferentes en el software proporcionado. En python se necesita usar pickle para enviar código python, explotar un format string y usar una bomba gzip para causar un error. Para obtener el exploit en el servidor, se tiene que explotar el bridge para hacer un pipeline HTTP.

Task 6 Part 1 Writeup
Task 6 Part 2 Writeup

Comentarios