Technical article
CrackMapExec / NetExec
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