/ CTF

WriteUp CTF CIDSI 2018

Este CTF estuvo compuesto por 74 equipos de universidades convocadas a nivel nacional para nivel de pregrado y posgrado en el Congreso Internacional De Seguridad Informática (CIDSI) que fue organizado por la Agencia de Gobierno Electrónico y Tecnologías de Información y Comunicación (AGETIC) gracias a las gestiones del Centro de Gestión de Incidentes Informáticos(CGII) realizado del 29 de Noviembre al 1 de Diciembre del 2018.

Terminando esta serie, y como mencione en el anterior post, en este participamos en Equipo como Dark Army con Israel, Rafael y mi persona, logrando resolver todos los retos; Sin embargo no pudimos recuperar todos los enunciados o las flags en especifico(Como fueron escritas en forma literal en el evento), pero están explicadas tal y como lo resolvimos en el CTF, el cual duro dos medias jornadas.

Nivel 1

1.1. Análisis de trafico 1

Bienvenidos. Una compañía dedicada a la banca los acaba de contratar para poder realizar un análisis de tráfico. El problema radica en que hay un empleado que esta filtrando direcciones de correo electrónico, al mismo tiempo otro empleado comenzó a pasar passwords que tienen privilegios de modificación de los salarios de los empleados. Tu misión es encontrar esa contraseña

Pues para empezar nos dan una captura de trafico, en la cual al buscar con Wireshark encontramos una petición con el usuario y contraseña.

cidsi1

entonces la flag es:

007

1.2 Web crawlers

Lastimosamente motores de búsqueda están indexando muchos páginas de este sitio web que son confidenciales para nosotros ! Sabes cual es el archivo para evitar que esto siga pasando ? ¿ Nadie quiere sitios totalmente indexados verdad?

Esto es bastante fácil, la Flag esta dentro de los robots.txt, el cual proporciona información a los rastreadores de buscadores sobre las páginas o los archivos que pueden solicitar o no de tu sitio web.

http://url/robots.txt

1.3 Backups

Petróleos del Caribe nos pidió guardar un backup de su archivo jsp principal Lastimosamente el ingeniero a cargo se fue a una planta en medio del mar y no nos puede decir la extensión con los que los guardó. El director de suministros requiere el backup con urgencia, me ayudas a identificar en que archivo esta?. Hazlo pronto mi cargo esta en juego Recuerda que las extensiones mas comunes de backups son:
-bak
-old
-bakup
-save

En este había que se algo observativos, tanto en la pista como en lo que tenemos frente a nosotros, nos dice el jsp principal, lo que vendria a significar el index.jsp ademas que la pagina actual es http://url//index.jsp

Asi que probando con las extenciones que nos sugieren, se logra llegar a la respuesta

http://url/index.jsp.bakup

El cual contiene

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" language="java" import="java.sql.*,java.io.*,java.net.*,org.owasp.encoder.Encode, dbProcs.*, utils.*" errorPage="" %>
<%@ page import="java.util.Locale"%>
<%@ include file="translation.jsp" %>
<%
	ShepherdLogManager.logEvent(request.getRemoteAddr(), request.getHeader("X-Forwarded-For"), "DEBUG: index.jsp *************************");
	Locale lang = new Locale(Validate.validateLanguage(request.getSession()));
/**
El flag/bandera es: 402051f4be0cc3aad33bcf3ac3d6532b
 */
%> 

entonces ahi es que nos da la flag

402051f4be0cc3aad33bcf3ac3d6532b

1.4 Programa programador

Uno de tus amigos te dejó una pista en el desarrollo de código java, pero debes resolver un acertijo matemático antes de dar con el resultado. El flag/bandera es la clave para ingresar a su sistema (El número menor que puedas encontrar). Pero esto es fácil para ti, total no son ecuaciones diferenciales

nos dan un archivo en java

package exploit;
import java.util.Scanner;

public class KeithLikesToTroll {
	public static void main(String[] args){
		int clave;

		Scanner scn = new Scanner(System.in);
		System.out.print("Introdusca la llave: ");
		clave = scn.nextInt();
		scn.close();

		if(1338557220 / clave * clave != 1338557220 && clave > 0){
			System.out.println("Autenticacion correcta. La bandera es un número pequeño que te dejara entrar.");
		}else{
			System.out.println("Autenticacion incorrecta.");
		}
	}
}

El cual habría q compilarlo y ejecutarlo de manera q el menor numero resultante de correcto, con fuerza bruta se puede llegar rápidamente a este.

La Flag:

8

1.5 Wifi admin panel

Estamos de vacaciones en el Caribe, lastimosamente por culpa de tu amigo el vuelo nos acaba de dejar y son 5 largas horas de espera en el aeropuerto. Otro de tus amigos se dio cuenta que pueden ingresar a internet gratis en el aeropuerto pero para ello debes ingresar al router ¿ Te animas a probar como loguearte?
cidsismc

Para esto necesitamos observar bien, y la pista que nos dan es SMC Networks, el cual es una marca que produce Routers entre otras cosas, el cual con un poco de busqueda tenemos algunas combinaciones de Usuarios y Contraseñas por defecto el cual probamos hasta hallar el correcto y conseguir la flag


Nivel 2
2.1 Esteganografia

Sabías que la técnica de ocultar mensajes u objetos dentro de imágenes de modo que no se perciba su existencia es esteganografia?. A nosotros nos encanta esta técnica. Así que dejare esta imagen por aquí y me iré muy lentamente

imagen para descargar

Este al principio nos desconcertó, sin embargo la solución es extrayendo cada cadena de caracteres imprimible en la imagen, usando strings desde consola(en Linux)

strings 8c373fd1a.jpeg

Y la Flag:

1e5b77443345620c52d23c73dc87521c

2.2 Forense

Un peligroso delincuente esta pasando mensajes ocultos en los pdf que envía su cómplice en el extranjero. Puedes hacer un análisis, ya casi eres un hacker Encontraste tu bandera?
Descargar documento

En este caso, analizar los metadatos nos da el botín; Con el uso de Exiftool:

exiftool CIDSI2018.pdf

Y la Flag:

c47d187067c6cf9

2.3 Inyección SQL

Sabemos que el coyote compra todos sus artefactos de ACME, nos ayudas a mostrar todas las tuplas de la tabla para encontrar la trampa con la que finalmente atrape a su némesis?
sql

Al ver este pensé q llevaría un tiempo, sin embargo al intentar cualquier inyección aparecía una copia de la consulta realizada en la parte superior, muy al estilo Bricks. Por lo cual hallar la solución fue muy rápido, con una típica inyección de bypass.

')or('1')=('1

Lo cual nos dio la Flag.


2.4 Ingeniería inversa

Una de los peligros mas grandes en aplicaciones móviles es la ingeniería inversa. Porque podemos inspeccionar el código fuente y encontrar llaves de API, passwords, etc. Ocultar introducción Encontramos un archivo apk mientras revisabas recursos compartidos, por suerte lo guardamos ahora queremos saber que contiene Sera que puedes con el reto?. Existen varias herramientas para hacer ingeniería inversa a un archivo APK
Descargar APK

Como menciona en el enunciado, existen varias herramientas, preferí usar Apktool

apktool d reversing.apk

lo cual nos brinda una carpeta con todo lo extraido, en el cual se puede realizar una busqueda rápida con grep

user@pc:# grep "bandera" . -R
./reversing/smali/com/mobshep/reverseengineer/Reverse_Engineering.smali:    const-string v0, "El flag/bandera es 9yfdsj3md0lq75"

y la Flag!

9yfdsj3md0lq75

Nivel 3

3.1 Análisis de trafico 2

Estamos realizando un análisis de tráfico porque detectamos que alguien esta filtrando información confidencial y es tan grande la cantidad de información que encima la comprimieron protegido por contraseña, pero hallar el password es fácil para ti. Ayudanos a encontrar el password que nos ayude a tener acceso a nuestra bandera
Descargar captura

cidsizip1

Encontrar el zip no fue difícil, solo había que exportarlo con Export Packet Bytes o exportando todos los objetos. Una vez llegado a este punto el zip que obtenemos esta protegido con contraseña como menciona el enunciado, para eso tuvimos que observar la captura

cidsizip2

la contraseña del zip

azulcrema

y la flag!!

IW{HTTP_BASIC_AUTH_IS_EASY}

3.2 Lista de usuarios

Un grupo de usuarios decidió quejarse porque no hay café en la cafetería, puedes creerlo?. Y uno de los usuarios parece que es el que se esta robando el café, claro que el muy vivo se oculto de la lista. Me ayudas a encontrarlo y devolver el café a nuestras vidas
cidsiuseres

En este demore en darme cuenta, nos daban a elegir entre consultar la información de 5 usuarios, sin embargo, no había algo relevante entre ellos, intente buscar inspeccionando los elementos, y las peticiones, sin embargo la pista estaba en como se realizaban las peticiones.

POST /challenges/vc9b78627df2c032ceaf7375df1d847e47ed7abac2a4ce4cb6086646e0f313a4 HTTP/1.1
Host: 192.168.3.100
Accept: **
Accept-Language: en-US,en:q-0.5
Accept-Encoding: gzip, deflate
Referer: https://192.168.3.100/challenges/vc9b78627df2c032ceaf7375df1d847e47ed7abac2a4ce4cb6086646eOf313a4.jsp
Content-Type: application/X-wWW-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 45
Connection: close

userId%5B%5D=cfcd208495d565ef66e7dff9f98764da

La petición se identificaba de esta manera: cfcd208495d565ef66e7dff9f98764da, lo cual al verificar era un MD5 y en valor 0 en texto plano:

cfcd208495d565ef66e7dff9f98764da = 0

Al verificar los demás, funcionaban de la misma forma, así que genere una lista de números hasheados en MD5 para hacer peticiones hasta encontrar el usuario oculto, el cual no era mas del numero 20.


3.3 HASHDUMP

Encontrar la contraseña de administracion

sistemas:500:9E689B23C4D33D88E4C560258374B547:7E058F739B8A1E67C00815FC1E5E0E25:::
Guest:501:NO PASSWORD*********************:NO PASSWORD*********************:::
nonadmin:1005:NO PASSWORD*********************:0CF3760C0B0EB9F570AACE7040DF6DB7:::
contabilidad:1013:23AC1B85C36D31AAE45E0AE1804A24B0:DE6D8B1780A4F0714242AC53A6C2B2E8:::
administrador:1014:CE9F401800DF01AFFF959C003A9671D0:A7B9ECDD64AA492E449E0A619FD16E4B:::
gerencia:1015:4978646A5C99C2834D6A97A372D4BC83:C7994B298128024418AD0E9C5038570C:::

Podemos ver que es un dump de los hashes de Windows(NTLM)

Este tomo tiempo darse cuenta del truco, a simple vista uno piensa que la cuenta de administración seria la que lleva tal nombre o similar, sin embargo el truco estaba en el RID. El 500 pertenece a la cuenta de administración creada durante la instalacion de Sistema Operativo, apesar que en este caso se llama sistemas

Entonces nos queda 2 vías encontralo por fuerza bruta/diccionario o buscarla, para ganar tiempo mejor buscarla y así tenemos, la flag!

coldplay

Nivel 4
4.1 Cracking rar

Los usuarios de la aseguradora SEGURITAS tienen loco al personal de sistemas con sus famosos cambios. Como si fueran a cambiar el mundo. Si eres astuto podrás acceder a la bandera que esta compreso y protegido con contraseña Un empleado de sistemas tiene una pista para ti. Su id de una popular red social es 0x5afa18273c14
Descargar

Primero el id debemos convertirlo del Hexadecimal, entonces obtenemos: 100030193548308

Ahora en facebook buscamos el perfil: https://www.facebook.com/100030193548308 en el cual encontramos fotografías del empleado difundiendo información critica de la empresa como que para archivos rar la contraseña debe ser un numero de longitud 5, entonces lo único que nos queda es crackear el rar con un diccionario con todas las posibilidades de 5 dígitos numerales con John The Ripper.

john --wordlist=six --format=rar5 hashrar

hashrar es el file donde se encuentra el hash del RAR, entonces, tenemos la contraseña.

60372

Con esto podemos sacar la flag dentro del comprimido:

8743b52063cd84097a65d1633f5c74f5

4.2 Sitio web banco

Para completar este reto debes crearte una cuenta de banco y trasferirle mas de 10000 bs. Cuando tengas esa cantidad en tu cuenta de banco, simplemente deslogeate y logueate de nuevo para que se te recompense con el flag/bandera
cidsibanco1

Para empezar hay que registrarse, y en la plataforma nos da la posibilidad de transferir dinero a otras cuentas

cidsibanco2

Sin embargo interceptando las peticiones era inseguras, similar a esto:

cuentaOrigen=4&cuentaDestino=2&monto=1200

entonces modificando la petición, podemos invertir esto

cuentaOrigen=2&cuentaDestino=4&monto=1200

de esta manera nos transferimos dinero a nosotros mismos, ahi el resultado:

cidsibanco3

Voilà!

0738FF78AE98A11F579A70F3F98468097426D4652B32A5F978818FC9CCB66CE74371A28833CC1A52854697C734D66249DB8E9AAB67F024262436EC8220C9OF11

Nivel 5

5.1 Exploiting

Estamos haciendo un desarrollo seguro, Tu reto es cambiar el flujo del programa para que se ejecute la función oculta vencer Una vez que lo logres te felicitare por tu éxito. La bandera es la dirección hexadecimal de la función vencer con el formato correcto (0x11223344)
Descargar programa

Para este teníamos que utilizar IdaPro, y buscar la dirección.

cidsilast

Y esito seria!

Sin embargo no pudimos sacar el 1er puesto por seis puntos, por el tema que quienes resolvían primero un reto tenían puntos extras, pero quedamos muy contentos con el gran equipo que formamos; quedando en 2do lugar entre tantos equipos.

Cualquier duda, consulta o reclamo pueden escribirme, espero les gustara el WriteUp.

links de interés