Guia y respuestas del CTF de Splunk y Corelight Parte 2

Esta es la segunda parte de mi guía para el CTF de Corelight y Splunk. La primera parte está aquí. Puedes encontrar el CTF en el sitio de BOTS de Splunk.

SPOILER ALERT: HE INCLUIDO TODAS LAS RESPUESTAS AL RETO, PERO ESTÁN ESCONDIDAS Y TIENES QUE HACER CLICK EN CADA UNA PARA VERLAS.

Vamos a por el segundo escenario.

Escenario 2

Importante: usa el índice “ctf” para este escenario

  1. An HTTP request is made to a specific PHP page. What is the filename of that page (excluding any path or slashes)?

    Miramos en los logs HTTP y los archivos PHP en el campo uri:

       index="ctf" path=http uri=*.php | stats values(uri)
    

    Solo on valor como resultado, y esa es nuestra respuesta.

Respuesta (Click para abrir)
	whoami.php
  1. What is the IP address that only appears once as the server for the three connections in the previous question?

    Repetimos la búsqueda:

       index="ctf" path=http uri=*.php
    

    Y en el campo host encontramos la respuesta

    Corelight CTF
Respuesta (Click para abrir)
	66.228.32.31
  1. What is the IP address that mail.ventascintas.com resolved to?

    Miramos en el path DNS buscando por el host de la pregunta:

       index="ctf" path=dns mail.ventascintas.com
    

    Solo 1 evento, vamos al campo answer.

Respuesta (Click para abrir)
	142.4.4.112
  1. What is the domain associated with an X.509 certificate subject that purports to be from London? Answer guidance: Provide the domain name of the system. Example: splunk.com

    Vamos ahora al path SSL de los logs de Corelight:

       index="ctf" path=ssl london | stats values(issuer)
    
    Corelight CTF

    Solo un resultado, con nuestra respuesta

Respuesta (Click para abrir)
	example.com
  1. What cipher suite was used with the certificate from the prior question?

    El campo ssl_cipher tiene la respuesta:

       index="ctf" path=ssl london
    
Respuesta (Click para abrir)
	TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  1. There is a unique JA3 hash associated with certificate from the previous question. What is that hash?

    El campo ja3 de los eventos de la búsqueda anterior.

Respuesta (Click para abrir)
	35492f143de0f906215ea3aaf6ee0a74
  1. What was the matching JA3S hash associated with the JA3 hash identified in the previous question?

    Esta vez, el campo ja3s

Respuesta (Click para abrir)
	f2e1706526fe0692ee36be58110ffc83
  1. What department does that certificate from question 204 allegedly correspond to?

    Todavía en los mismos eventos, encontramos la respuesta en la OU del Subject del certificado.

Respuesta (Click para abrir)
	IT Department
  1. What is the SHA1 of the most recent X.509 certificate from question 204?

    Tenemos que encontrar un path donde se guarden los hashes sha1, porque ssl no los almacena. Usamos el UID del evento más reciente y buscamos el término sha1

       index="ctf" CtO63Q3OLLVGdhIKW2 sha1
    

    Solo 1 evento, en el sourcetype corelight_files y ahí encontramos el campo sha1.

    Corelight CTF
Respuesta (Click para abrir)
	19594b811f9f867db68efabcc7135852e63fd7da
  1. An executable was downloaded from 124.158.6.218. What was the name of that executable?

    Buscamos ahora por la IP de la pregunta y en el sourcetype de la anterior, corelight_files:

       index="ctf" 124.158.6.218 sourcetype=corelight_files
    

    En el campo filename vemos la respuesta.

Respuesta (Click para abrir)
	i5pv72yr.exe
  1. As part of this traffic, there were two executables downloaded from 104.168.98.206. What is the SHA1 of the most recently downloaded executable?

    De nuevo vamos al sourcetype corelight_files, buscamos la IP, y ordenamos por tiempo con más reciente primero; hacemos una tabla con los campos filenames, attachment_type y sha1.

       index="ctf" 104.168.98.206 sourcetype=corelight_files | sort - _time | table _time, filename, attachment_type, sha1
    
    Corelight CTF
Respuesta (Click para abrir)
	fdd0480a69d17d33292733668c6fd1dedf453a3c
  1. There was a Word document downloaded that has some Spanish flair to it. What was that document’s name?

    Bueno, esta debería ser fácil 😉. Miramos archivos con extensiones .doc o .docx, quitamos duplicados con dedup y mostramos los nombres de archivo:

       index="ctf" sourcetype=corelight_files (filename=*.doc OR filename=*.docx) | dedup filename | table filename, attachment_type
    

    Solo 4, uno de ellos con una palabra en Español.

Respuesta (Click para abrir)
	Archivo 18-09-2019_23119.doc
  1. There’s an email address sending suspicious emails from a domain that no longer resolves to an IP address. How many emails were sent with that email address?

    Podemos empezar por buscar eventos tipo corelight_smtp:

       index=ctf sourcetype=corelight_smtp | table mailfrom, subject
    

    Solo 2 direcciones de correo: jobs@hitmail.cc, crogstrike@gchteam.com. Si hacemos una búsqueda con dig para los dos dominios, vemos que uno de ellos no resuelve a ninguna IP.

    Corelight CTF

    Ahora vamos a buscar cuantos correos fueron recibidos desde esa dirección:

       index=ctf sourcetype=corelight_smtp mailfrom=crogstrike@gchteam.com
    
Respuesta (Click para abrir)
	35
  1. What was the average time between a DNS request and a DNS response for the DNS server with the IP of 10.9.18.1?

    Esta pregunta es algo más difícil, juega con el concepto de RTT(Round Trip Time) aplicado a DNS, que es el tiempo que se tarda desde que se envía una query -pregunta- de DNS hasta que se recibe la respuesta.

    Para encontrar la solución, primero encontramos todas las peticiones DNS a este servidor:

       index=ctf sourcetype=corelight_dns dest=10.9.18.1
    

    Después, tenemos que mirar al campo rtt que es el Round Trip Time de una petición DNS, hacemos la media con avg y redondeamos a 5 decimales.

       index=ctf sourcetype=corelight_dns dest=10.9.18.1 | stats avg(rtt) as avg_rtt | eval avg_rtt=round(avg_rtt,5)
    
Respuesta (Click para abrir)
	0.16123
  1. This traffic sample has been reduced to a four minute window, during which we observed unusually high delays on DNS responses. During what minute were DNS responses slowest?

    Aquí me volví un poco loco porque tenía la respuesta correcta, pero la estaba poniendo con un 0 delante. La solución no es difícil una vez que me di cuenta de esto.

    Si ordenamos hacia atrás por rtt, obtenemos los valores más altos al principio, que serían lo que tienen mayor retraso. Si vemos el campo _time de estos, podemos ver el minuto en el que ocurrieron. index=ctf sourcetype=corelight_dns dest=10.9.18.1 | sort - rtt | table _time, rtt

    Corelight CTF

    Una forma más exacta de obtener el resultado sería agrupando rtt en bloques de 1 minuto con el comando bucket y calculando la media:

       index=ctf sourcetype=corelight_dns dest=10.9.18.1 | bucket _time span=1m | stats avg(rtt) by _time
    
Respuesta (Click para abrir)
	1
  1. An analyst was reading an introduction to threat hunting and came across a User-Agent string that looked familiar: “WinHTTP sender”. What is the hostname of the infected host?

    Vamos directamente a busca ese User-Agent en los logs HTTP:

       index=ctf path=http http_user_agent="WinHTTP sender*"
    

    Solo 1 evento. Desde aquí obtenemos la IP de origen, que sería la del sistema infectado: 10.9.18.101. Pero necesitamos el hostname. En el campo post_body vemos los detalles del equipo siendo enviados, entre ellos el nombre de equipo.

    Post Body
Respuesta (Click para abrir)
	SKINNER-WIN-PC
  1. In their copious free time, an analyst reads a blog post about a technique that attackers use to download files from their C2 server. A potential indicator is that the user agent will contain “WinHTTP loader”. What is the file size of the payload downloaded using this technique?

    Encontramos los eventos con ese User-Agent:

       index=ctf sourcetype=corelight_http http_user_agent="WinHTTP loader*"
    

    Obetnemos 2 eventos con 2 nombres de archivo diferentes, samerton.png and tablone.png. Si miramos en el path files, vemos que tienen en el campo bytes el mismo valor:

       index=ctf path=files (tablone.png OR samerton.png)
    
Respuesta (Click para abrir)
	557056
  1. Oh, here’s a hypothesis to test during our next threat hunt. Find traffic that Corelight identifies as SSL, but is actually on TCP port 80. Using this hypothesis, identify any suspicious traffic and extract the JA3S hash for further analysis.

    Vamos a los logs SSL con puerto de destino 80, y mostramos los valores del hash JA3S

       index=ctf path=ssl dst_port=80 | stats values(ja3s)
    
Respuesta (Click para abrir)
	e35df3e00ca4ef31d42b34bebaa2f86e
  1. We’ve received a report that our network is sending malicious emails, but they provided the external IP address which isn’t very useful since our network implements NAT. They said the malicious email was sent to accounting@ashlinetransportation.com. Locate the email, find the attachment, and get the filename so we can statically (and dynamically) analyze its contents.

    Una búsqueda sencilla:

       index=ctf accounting@ashlinetransportation.com
    

    Obtenemos 1 evento, cogemos el UID de éste: Ch1383466fH1MMOP7i. Y en el path files encontramos el nombre de archivo:

       index=ctf Ch1383466fH1MMOP7i path=files
    
    Filename
Respuesta (Click para abrir)
	INF 17844.doc
  1. One of our analysts is considering having a reverse engineering team take a look at an odd executable with a SHA1 hash of 026064006b987ed951ffce4f03c4394f557bf588. Use Corelight’s built-in file analyzers to identify the timestamp when the executable was complied. Answer guidance: Provide the date/time in the format YYYY-MM-DDTHH:MM:SS. Example: 2021-09-29T11:37:52

    Para responder a esta pregunta, tenemos que sabor un poco de cómo funcionan los analizadores de Corelight.

    Miramos en el path files por ese hash sha1:

       index=ctf path=files 026064006b987ed951ffce4f03c4394f557bf588
    

    Vemos el nombre del ejecutable y que ha sido enviado al analizador PE Analyzer of Corelight.

    Filename

    Ese analizador guarda los datos en el path pe, para encontrar el que estamos buscando, usamos el campo fuid:

       FgY7in4PHFNMPdcnC2
    

    Buscamos por este valor y mostramos el tiempo de compilación:

       index=ctf path=pe FgY7in4PHFNMPdcnC2 | table compile_ts
    
Respuesta (Click para abrir)
	2019-09-18T05:47:11
  1. Before sending the file for dynamic analysis, your interest is piqued. What is the malware family for the file with hash 026064006b987ed951ffce4f03c4394f557bf588?

    VAmos a VirusTotal, buscamos el hash y en los comentarios vemos la respuesta.

Respuesta (Click para abrir)
	Emotet

Conclusión

Como expliqué al principio, este reto es bastante sencillo. Si crees que estás listo para algo más difícil, deberías probar los CTFs de BOTS de BOSS of the SOC, empezando por BOTSv1 que es el más sencillo. Probablemente haré alguna guía para algún BOTS más adelante, son bastante más divertidos 😊.


Ver también