Herramientas, automatización y NSE para SMB
El workflow de SMB trata dialecto, identidad y permisos efectivos. Las herramientas siguientes no son equivalentes. Cada una observa una parte diferente.
Clientes Samba
Sección titulada «Clientes Samba»smbclient -L enumera shares. -N evita pedir contraseña y -U fija la identidad:
smbclient -N -L '//TARGET_IP/'smbclient -L '//TARGET_IP/' -U 'DOMAIN/USERNAME'smbclient '//TARGET_IP/SHARE' -U 'DOMAIN/USERNAME'Dentro del share, ls, cd, get, put, del y allinfo validan capacidades. Una lista visible no demuestra lectura. Una subida correcta no demuestra sobrescritura o ejecución.
-m PROTOCOL limita el dialecto máximo y permite comparar una negociación moderna con una dependencia heredada. -I TARGET_IP fuerza la dirección contactada sin cambiar el nombre del servicio. -W DOMAIN fija workgroup o dominio. -c 'COMMANDS' ejecuta órdenes del cliente sin abrir una consola interactiva:
smbclient '//FQDN/SHARE' \ -I TARGET_IP \ -W DOMAIN \ -U USERNAME \ -m SMB3 \ -c 'ls'La contraseña se solicita fuera del comando. Si FQDN y TARGET_IP señalan sistemas distintos, el resultado deja de ser comparable. -d LEVEL aumenta el debug de Samba. Empieza por -d 3 sobre una sola operación y conserva stderr por separado:
smbclient -L '//FQDN/' \ -I TARGET_IP \ -U 'DOMAIN/USERNAME' \ -d 3 2>evidence/smbclient-debug.txtrpcclient consulta interfaces MS-RPC expuestas por SMB:
rpcclient -N -U '' TARGET_IPrpcclient -U 'DOMAIN/USERNAME' TARGET_IPEmpieza con srvinfo, netshareenumall, querydominfo y una consulta acotada. enumdomusers puede devolver muchos objetos y depender de políticas de acceso.
rpcclient acepta -W, -I, -c y -d con el mismo propósito general que los clientes Samba. La consulta siguiente fija dominio, dirección y orden RPC:
rpcclient FQDN \ -I TARGET_IP \ -W DOMAIN \ -U USERNAME \ -c 'querydominfo' \ -d 2Un nivel de debug puede incluir nombres, rutas y detalles de autenticación. No lo actives sobre una lista amplia hasta comprobar el contenido de una muestra.
enum4linux-ng y NetExec
Sección titulada «enum4linux-ng y NetExec»enum4linux-ng combina smbclient, rpcclient, NetBIOS y LDAP cuando están disponibles. -A activa varias comprobaciones. Guarda JSON y YAML con -oA:
enum4linux-ng -A TARGET_IP -oA evidence/smbLee qué backend falló. Un apartado vacío puede significar que faltaba una dependencia local o que una interfaz rechazó la consulta.
Para una identidad concreta, -u y -p fijan usuario y contraseña. Evita la contraseña en el historial cuando el entorno permita solicitarla o suministrarla desde un fichero temporal protegido. -t fija el timeout. -R habilita RID cycling y admite un tamaño de lote opcional. -r fija los rangos de RID. -v muestra los comandos Samba ejecutados:
enum4linux-ng -A \ -u USERNAME \ -p PASSWORD \ -t 8 \ -R \ -r 500-550 \ -v \ -oA evidence/smb-authenticated \ TARGET_IPEl output distingue el backend que produjo cada dato. Un RID no devuelto puede estar fuera del rango, quedar oculto por la política o no existir. La ausencia no se extrapola al dominio completo.
NetExec resulta útil para comparar muchas direcciones con la misma identidad:
nxc smb TARGETS -u USERNAME -p PASSWORD \ --shares --sessions --loggedon-usersNo mezcles una lista amplia de credenciales con enumeración. Separa autenticación, control de bloqueo y consultas posteriores. Guarda --log o redirige el output con un nombre que identifique identidad y posición.
En NetExec 1.5.1, --threads limita procesos concurrentes y --timeout limita la espera de red. --jitter 2-4 introduce una pausa aleatoria por host entre autenticaciones. Es un control de frecuencia por host, no un límite global. --dns-server fija el resolver cuando se usan nombres:
nxc smb TARGETS \ -u USERNAME \ -p PASSWORD \ --threads 10 \ --timeout 5 \ --jitter 2-4 \ --dns-server DNS_SERVER \ --shares \ --log evidence/netexec-smb.log--local-auth interpreta la cuenta en el contexto local de cada host. Sin esa opción, el dominio, el hostname y el formato del usuario pueden seleccionar otra autoridad. No alternes ambos modos en una sola conclusión. Si un resultado cambia permisos o aparece como acceso administrativo, confírmalo con smbclient y una operación de lectura controlada.
Impacket
Sección titulada «Impacket»smbclient.py aporta un cliente SMB escrito en Python. lookupsid.py recorre SID cuando la política lo permite. samrdump.py consulta SAMR. Herramientas como secretsdump.py cambian de fase: requieren privilegios, acceden a secretos y no pertenecen a la enumeración inicial.
impacket-smbclient 'DOMAIN/USERNAME@TARGET_IP'impacket-lookupsid 'DOMAIN/USERNAME@TARGET_IP'Confirma los nombres con rpcclient o una consulta de directorio. RID cycling puede quedar limitado, ralentizado o devolver solo objetos conocidos.
Las herramientas de Impacket comparten parte de su sintaxis, pero cada ejemplo tiene su propio -h. -hashes LMHASH:NTHASH autentica mediante hashes NTLM. -no-pass evita solicitar contraseña. -k usa Kerberos y puede tomar tickets de la caché. -aesKey suministra una clave Kerberos. -dc-ip fija el KDC o controlador y -target-ip separa la dirección contactada del nombre utilizado para identidad:
impacket-lookupsid \ -hashes LMHASH:NTHASH \ 'DOMAIN/USERNAME@TARGET_IP'impacket-lookupsid \ -k \ -no-pass \ -dc-ip DC_IP \ -target-ip TARGET_IP \ 'DOMAIN/USERNAME@FQDN'El segundo perfil necesita DNS, hora, SPN y ticket coherentes. -debug muestra el camino interno cuando falla una negociación. Puede exponer material de autenticación y se limita a un caso. Comprueba antes que la utilidad concreta admite cada opción. Impacket no garantiza que todos los ejemplos utilicen el mismo analizador de argumentos.
NSE aplicado a SMB
Sección titulada «NSE aplicado a SMB»nmap --script-help 'smb-*'smb-protocols, smb2-security-mode, smb2-time y smb2-capabilities responden preguntas de negociación. smb-enum-shares y smb-enum-users dependen de acceso. smb-vuln-* ejecuta checks distintos y no debe seleccionarse como un bloque.
sudo nmap -sV -n -Pn -p 445 \ --script smb-protocols,smb2-security-mode,smb2-capabilities \ TARGET_IPValida dialecto y signing con un segundo cliente. La disponibilidad de SMBv1 no confirma que un exploit sea viable.
Discrepancias y evidencia
Sección titulada «Discrepancias y evidencia»Registra siempre identidad exacta, dominio, método de autenticación, dialecto y puerto. guest, anonymous y null session no son sinónimos. Si una herramienta cambia silenciosamente a guest, el resultado debe atribuirse a guest.