Entrada

Brick Heist

INTRODUCCIÓN

En este documento detallaré el proceso de reconocimiento, escaneo, enumeración y explotación de la máquina BricksHeist, de la plataforma TryHackme, en un entorno controlado. El objetivo es demostrar cómo se puede identificar y explotar vulnerabilidades en un servidor Linux con un sitio web basado en WordPress. A lo largo del proceso, utilizaré herramientas como ping, nmap y nuclei para la fase de reconocimiento y escaneo, y un script de explotación específico para la vulnerabilidad identificada. Finalmente, analizaré archivos sospechosos y rastrearé transacciones de criptomonedas relacionadas con posibles actividades maliciosas.


RECONOCIMIENTO

Empiezo realizando un ping a la máquina para averiguar si está activa y comprobar si es una máquina Linux o Windows a través de la respuesta ttl.

1
2
3
ping -c 1 $IP
PING 10.10.91.176 (10.10.91.176) 56(84) bytes of data.
64 bytes from 10.10.91.176: icmp_seq=1 ttl=63 time=54.8 ms

La máquina a la que me voy a enfrentar es Linux ya que su ttl oscila entre 63 y 64. Si se tratase de un SO Windows, oscilaría entre 127 y 128.

Más información aquí.

También añado al archivo hosts que la dirección IP apunte al dominio bricks.thm:

1
2
# etc/hosts
10.10.91.176        bricks.thm

ESCANEO Y ENUMERACIÓN

Con Nmap voy a realizar un escaneo de puertos para comprobar cuáles están abiertos. Pero antes, es mejor crear un directorio de trabajo con el nombre de la máquina y con sus subdirectorios para tenerlo todo organizado. Una vez creado todo lo necesario, entro en la carpeta donde guardaré los archivos de escaneo.

Realizo el primer escaneo solamente para identificar los puertos abiertos:

1
nmap -p- --open -sS --min-rate 5000 -vvv -oN puertos $IP

firstscan

Luego de obtener los puertos que están abiertos, los escaneo más a fondo. En este caso, veo que tiene un servidor web, pero el puerto 443 es el que me llama la atención.

target_scan

Me voy a enfrentar a un WordPress. En mi caso, realizaré un escaneo en busca de vulnerabilidades usando la herramienta nuclei.

Para ello, ejecutaré el siguiente comando:

1
nuclei -u bricks.thm -as -o report

Esto realizará un autoscaner utilizando Wappalyzer con la flag -as y luego al finalizar, se genera un reporte que se guarda en un archivo report.

Tras realizar el escaneo, obtengo el siguiente resultado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[apache-detect] [http] [info] https://bricks.thm ["Apache"]
[metatag-cms] [http] [info] https://bricks.thm ["WordPress 6.5"]
[switch-protocol] [http] [info] https://bricks.thm ["h2"]
[waf-detect:apachegeneric] [http] [info] https://bricks.thm
[wordpress-detect:version_by_js] [http] [info] https://bricks.thm ["6.5"]
[mysql-detect] [tcp] [info] bricks.thm:3306
[openssh-detect] [tcp] [info] bricks.thm:22 ["SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.11"]
[ssh-auth-methods] [javascript] [info] bricks.thm:22 ["["publickey"]"]
[CVE-2024-25600] [http] [critical] https://bricks.thm/wp-json/bricks/v1/render_element
[wordpress-login] [http] [info] https://bricks.thm/wp-login.php
[wordpress-readme-file] [http] [info] https://bricks.thm/readme.html
[apache-detect] [http] [info] https://bricks.thm ["Apache"]
[metatag-cms] [http] [info] https://bricks.thm ["WordPress 6.5"]
[switch-protocol] [http] [info] https://bricks.thm ["h2"]

He encontrado una vulnerabilidad crítica en el tema Bricks, la cual explotaré con el script de Chocapikk.

EXPLOTACIÓN

Antes de nada, me gusta aislar cada máquina con su propio entorno de Python. Para ello, uso pyenv junto con virtualenv, lo que me permite tener las instalaciones de librerías que se hagan a mayores, de una forma aislada del sistema.

pyenv

Una vez instalados los requisitos, ejecuto el exploit:

1
python exploit.py -u URL --payload-type code

Y ya estoy dentro. Aquí encontraré la primera flag.

inside_bricks

Ahora creo una reverse shell con Python y la estabilizo:

reverse shell

reverse shell

reverse shell

Luego, comprobaré los servicios en busca de alguno sospechoso usando el comando:

1
systemctl list-units

Esto me listará todos los servicios del sistema y, después de revisarlo, encuentro un servicio sospechoso.

ubuntu services

Ahora, con systemctl status <nombre>.service, obtengo la información necesaria para localizar el archivo malicioso. Dentro del directorio donde se encuentra alojado, dispongo llevarlo a mi equipo para poder analizarlo.

dataminer

export

Ya con el archivo en mi equipo, me dispongo a analizarlo en AnyRun, una web que permite analizar nuestros archivos. Tiene versión de pago y gratuita. Incluso con la versión gratuita, posee máquinas Windows y una máquina Ubuntu.

Después de analizarlo, veo que en el reporte se obtiene la dirección de dos wallets de bitcoin:

firstscan

Ahora solo queda buscar más información del wallet. Para ello, me dirijo a la web Blockchair.com e introduzco la primera dirección que he obtenido (nota: las direcciones empiezan con bc1) y me proporciona la información de las transacciones.

firstscan

Aquí me dirijo a la primera transacción y la exploro, ya que tiene una issue. Luego tomo la nueva dirección y en OpenSanctions la introduzco para obtener toda la información necesaria. Aquí obtengo el nombre de la persona a quien pertenece dicha wallet.

firstscan

Ahora, para finalizar, solo tengo que buscarlo en Google y obtengo así a qué grupo de ciberdelincuentes pertenece.

firstscan

Esta entrada está licenciada bajo CC BY 4.0 por el autor.