Saltearse al contenido

Enumeración de servicios de red

Tras el escaneo (ver Nmap a fondo) sabes qué puertos están abiertos; la enumeración profundiza en cada servicio para extraer todo lo útil: versiones exactas, usuarios, recursos compartidos, configuraciones, credenciales por defecto y vulnerabilidades conocidas. Es la fase que decide el vector de ataque: un puerto abierto es una pregunta, la enumeración es la respuesta detallada.

Cada servicio “habla” un protocolo y, bien interrogado, filtra información. El objetivo es, por cada puerto abierto: identificar el software y versión exactos, descubrir qué permite sin autenticación, enumerar usuarios/recursos, y cruzar la versión con CVEs conocidos.

1. Banner grabbing: ¿qué software y versión? (nc, nmap -sV)
2. Acceso anónimo/por defecto: ¿permite algo sin credenciales?
3. Enumeración específica del protocolo (usuarios, shares, bases, config)
4. Credenciales por defecto / débiles
5. Versión -> CVE (searchsploit, nuclei)
nc -nv 10.0.0.5 21 # conectar y leer el banner (FTP, SMTP, etc.)
curl -sI http://10.0.0.5 # cabeceras HTTP
openssl s_client -connect 10.0.0.5:443 # servicios TLS
nmap -sV --script=banner 10.0.0.5

Servicios clave y su puerto (a dónde ir primero)

Sección titulada «Servicios clave y su puerto (a dónde ir primero)»
21 FTP -> ¿anónimo? ¿versión vulnerable?
22 SSH -> versión, métodos de auth, usuarios válidos
25 SMTP -> VRFY/EXPN (enumerar usuarios), relay abierto
53 DNS -> transferencia de zona (ver net-dnsattacks)
110/143 POP3/IMAP
111 RPC / 2049 NFS -> exports accesibles
139/445 SMB -> shares, usuarios, null session (lo más jugoso)
161 SNMP -> community strings (public/private) -> dump de la MIB
389 LDAP -> enumeración del directorio (AD, ver ad-enum)
1433 MSSQL / 3306 MySQL / 5432 PostgreSQL -> bases de datos
3389 RDP -> usuarios, NLA, BlueKeep
5985 WinRM -> ejecución remota con credenciales
# todo-en-uno
nmap --script=<proto>-* ; nxc (NetExec) smb/ldap/ssh/mssql/winrm/ftp
# SMB (el más rico)
enum4linux-ng -A 10.0.0.5 ; smbclient -L //10.0.0.5 -N ; smbmap -H 10.0.0.5
nxc smb 10.0.0.5 -u '' -p '' --shares --users
# SNMP
snmpwalk -v2c -c public 10.0.0.5 ; onesixtyone -c communities.txt 10.0.0.5
# SMTP
smtp-user-enum -M VRFY -U users.txt -t 10.0.0.5
# NFS
showmount -e 10.0.0.5
# bases de datos
mysql -h 10.0.0.5 -u root ; mssqlclient.py / nxc mssql

En redes Windows, SMB (445) suele ser la mina: null sessions, shares legibles, usuarios enumerables, y la puerta al dominio.

nxc smb 10.0.0.0/24 # barrido: SO, nombre, signing, SMBv1
nxc smb 10.0.0.5 -u '' -p '' --shares # null session
enum4linux-ng -A 10.0.0.5 # usuarios, grupos, shares, política
searchsploit <servicio> <version>
nmap --script=<servicio>-vuln* target
nuclei -t http/cves/ -u target

Reducir la enumerabilidad: no exponer servicios innecesarios, deshabilitar acceso anónimo (FTP, SMB null sessions, SNMP public), cambiar credenciales por defecto, ocultar/normalizar banners de versión, forzar SMB signing y deshabilitar SMBv1, y segmentar para que no todo sea alcanzable. Monitorizar enumeración (muchas consultas a un servicio desde un origen).

  • Banner grabbing de cada puerto abierto
  • Acceso anónimo/por defecto probado (FTP, SMB, SNMP)
  • SMB: shares, usuarios, null session, signing (nxc/enum4linux-ng)
  • SNMP: community strings y walk de la MIB
  • SMTP: enumeración de usuarios (VRFY) y relay
  • NFS: exports accesibles (showmount)
  • Bases de datos: acceso con credenciales por defecto
  • Versiones cruzadas con CVE (searchsploit/nuclei)