🌐 Netstat: Monitor de Conexiones de Red

Herramienta fundamental de networking

Netstat (Network Statistics) es una utilidad de línea de comandos que muestra las conexiones de red activas, tablas de enrutamiento, estadísticas de interfaces y conexiones de sockets en sistemas Unix/Linux y Windows. Es esencial para el análisis de red y la detección de actividad sospechosa.


📋 Tabla de Contenidos


📝 Introducción

¿Qué es Netstat?

Netstat es una herramienta de diagnóstico de red que proporciona información detallada sobre:

  • Conexiones de red activas (TCP/UDP)
  • Puertos en escucha
  • Tablas de enrutamiento
  • Estadísticas de protocolos de red
  • Información de procesos asociados a conexiones

¿Para qué sirve?

  • Monitoreo de conexiones: Ver qué aplicaciones están conectadas a la red
  • Análisis de puertos: Identificar servicios en ejecución y puertos abiertos
  • Detección de malware: Encontrar conexiones sospechosas o no autorizadas
  • Troubleshooting de red: Diagnosticar problemas de conectividad
  • Auditoría de seguridad: Verificar servicios expuestos y conexiones externas

Contextos de uso en ciberseguridad

graph TD
    A[Netstat en Ciberseguridad] --> B[Análisis Forense]
    A --> C[Detección de Intrusiones]
    A --> D[Pentesting]
    A --> E[Administración de Sistemas]
    
    B --> B1[Identificar conexiones maliciosas]
    B --> B2[Analizar actividad de red post-incidente]
    
    C --> C1[Detectar backdoors]
    C --> C2[Monitorear conexiones no autorizadas]
    
    D --> D1[Enumerar servicios]
    D --> D2[Verificar éxito de exploits]
    
    E --> E1[Monitoreo de servicios]
    E --> E2[Troubleshooting de conectividad]

🖥️ Sintaxis Básica

Formato general

netstat [opciones]

Uso básico

# Mostrar todas las conexiones
netstat -a
 
# Mostrar conexiones TCP
netstat -t
 
# Mostrar conexiones UDP
netstat -u
 
# Mostrar puertos en escucha
netstat -l

Comando básico más útil

netstat -tulpn

Este comando muestra conexiones TCP y UDP, puertos en escucha, con información de procesos y sin resolución DNS.


⚙️ Parámetros y Opciones

Opciones principales

OpciónDescripciónEjemplo
-a, --allMostrar todas las conexiones y puertos en escuchanetstat -a
-t, --tcpMostrar solo conexiones TCPnetstat -t
-u, --udpMostrar solo conexiones UDPnetstat -u
-l, --listeningMostrar solo puertos en escuchanetstat -l
-p, --programsMostrar PID y nombre del procesonetstat -p
-n, --numericMostrar direcciones numéricas (no resolver DNS)netstat -n
-r, --routeMostrar tabla de enrutamientonetstat -r
-i, --interfacesMostrar estadísticas de interfacesnetstat -i
-s, --statisticsMostrar estadísticas de protocolosnetstat -s
-c, --continuousActualización continuanetstat -c

Opciones de filtrado

OpciónDescripciónUso
-4Solo IPv4netstat -4
-6Solo IPv6netstat -6
--tcpSolo protocolo TCPnetstat --tcp
--udpSolo protocolo UDPnetstat --udp

Estados de conexión TCP

EstadoDescripción
LISTENPuerto esperando conexiones entrantes
ESTABLISHEDConexión activa establecida
SYN_SENTIntentando establecer conexión
SYN_RECVRecibió solicitud de conexión
FIN_WAIT1Cerrando conexión (paso 1)
FIN_WAIT2Cerrando conexión (paso 2)
TIME_WAITEsperando que se complete el cierre
CLOSEConexión cerrada
CLOSE_WAITEsperando cierre de aplicación local

🔐 Casos de Uso en Ciberseguridad

1. Detección de backdoors y malware

Netstat es fundamental para identificar conexiones sospechosas que pueden indicar la presencia de malware o backdoors.

2. Enumeración de servicios

Durante un pentest, netstat ayuda a identificar servicios en ejecución y posibles vectores de ataque.

3. Análisis forense

En investigaciones de seguridad, netstat puede revelar evidencia de actividad maliciosa o conexiones no autorizadas.

4. Monitoreo de red

Para administradores, netstat es útil para monitorear el estado de la red y detectar anomalías.


💻 Ejemplos Prácticos

Ejemplo 1: Análisis completo de conexiones de red

# Mostrar todas las conexiones con información de procesos
netstat -tulpn

Explicación

Este comando es uno de los más útiles para ciberseguridad:

  • -t: Muestra conexiones TCP
  • -u: Muestra conexiones UDP
  • -l: Incluye puertos en escucha
  • -p: Muestra el PID y nombre del proceso asociado
  • -n: Muestra direcciones IP numéricas (evita resolución DNS lenta)

Salida típica:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      5678/mysqld
tcp        0      0 192.168.1.100:22        192.168.1.50:54321      ESTABLISHED 9012/sshd
udp        0      0 0.0.0.0:53              0.0.0.0:*                           3456/named

Ejemplo 2: Detección de conexiones sospechosas

# Buscar conexiones establecidas hacia el exterior
netstat -tupln | grep ESTABLISHED
 
# Filtrar conexiones hacia IPs externas (no locales)
netstat -tupln | grep ESTABLISHED | grep -v "127.0.0.1\|192.168\|10\.\|172\."
 
# Mostrar solo conexiones en puertos no estándar
netstat -tupln | awk '$4 !~ /:22$|:80$|:443$|:53$/ {print}'

Explicación

Estos comandos ayudan a identificar actividad potencialmente sospechosa:

  1. Primer comando: Muestra todas las conexiones establecidas activamente
  2. Segundo comando: Filtra conexiones hacia IPs externas (excluyendo localhost y redes privadas)
  3. Tercer comando: Muestra conexiones en puertos que no son los estándar (SSH, HTTP, HTTPS, DNS)

Señales de alerta:

  • Conexiones hacia IPs desconocidas
  • Procesos no reconocidos con conexiones externas
  • Puertos inusuales en escucha
  • Conexiones en horarios anómalos

Ejemplo 3: Monitoreo de servicios específicos y troubleshooting

# Verificar qué proceso está usando un puerto específico
netstat -tulpn | grep ":80 "
 
# Mostrar todas las conexiones de un proceso específico
netstat -tulpn | grep "apache2"
 
# Monitorear cambios en conexiones en tiempo real
watch -n 2 "netstat -tulpn | grep ESTABLISHED"
 
# Buscar puertos duplicados o conflictos
netstat -tulpn | sort -k4 | uniq -d -f3

Explicación

Estos comandos son útiles para administración y troubleshooting:

  1. Puerto específico: Identifica qué proceso está usando el puerto 80
  2. Proceso específico: Muestra todas las conexiones de Apache
  3. Monitoreo en tiempo real: Actualiza cada 2 segundos las conexiones establecidas
  4. Conflictos de puerto: Detecta si múltiples procesos intentan usar el mismo puerto

Casos de uso:

  • Verificar si un servicio web está corriendo
  • Diagnosticar problemas de conectividad
  • Monitorear actividad de red en tiempo real
  • Detectar conflictos de configuración

🔍 Análisis Avanzado con Netstat

Script de análisis automatizado

#!/bin/bash
# netstat_security_check.sh
 
echo "=== Análisis de Seguridad de Red ==="
echo
 
# 1. Servicios en escucha
echo "[1] Servicios en escucha:"
netstat -tulpn | grep LISTEN | sort -k4
echo
 
# 2. Conexiones externas activas
echo "[2] Conexiones hacia IPs externas:"
netstat -tupln | grep ESTABLISHED | grep -v "127.0.0.1\|192.168\|10\.\|172\." | head -10
echo
 
# 3. Puertos en escucha no estándar
echo "[3] Puertos no estándar en escucha:"
netstat -tulpn | grep LISTEN | awk '$4 !~ /:22$|:80$|:443$|:53$|:25$|:110$|:143$|:993$|:995$/ {print}' | head -10
echo
 
# 4. Procesos con más conexiones
echo "[4] Procesos con más conexiones:"
netstat -tupln | grep -v "LISTEN" | awk '{print $7}' | cut -d'/' -f2 | sort | uniq -c | sort -nr | head -5
echo
 
# 5. Conexiones por estado
echo "[5] Conexiones por estado:"
netstat -t | awk 'NR>2 {print $6}' | sort | uniq -c | sort -nr

Combinación con otras herramientas

# Combinar netstat con ss (más moderno)
ss -tulpn  # Equivalente más rápido a netstat -tulpn
 
# Combinar con lsof para más detalles
lsof -i -n | grep LISTEN
 
# Usar con awk para análisis específico
netstat -tupln | awk '$6 == "ESTABLISHED" {print $5}' | cut -d':' -f1 | sort | uniq -c
 
# Integrar con nmap para verificación
for port in $(netstat -tln | awk 'NR>2 && $6=="LISTEN" {split($4,a,":"); print a[length(a)]}'); do
    echo "Puerto $port:"
    nmap -sV -p $port localhost
done

💡 Tips y Buenas Prácticas

Optimización de uso

graph TD
    A[Optimización Netstat] --> B[Velocidad]
    A --> C[Precisión]
    A --> D[Automatización]
    
    B --> B1[Usar -n para evitar DNS]
    B --> B2[Filtrar con grep/awk]
    B --> B3[Usar ss como alternativa]
    
    C --> C1[Combinar múltiples filtros]
    C --> C2[Verificar con otras herramientas]
    C --> C3[Contexto temporal]
    
    D --> D1[Scripts de monitoreo]
    D --> D2[Alertas automatizadas]
    D --> D3[Logging regular]

Mejores prácticas

Para análisis de seguridad:

  • Siempre usar -n para evitar resolución DNS lenta
  • Combinar con herramientas como lsof y ss para verificación cruzada
  • Establecer líneas base del tráfico normal
  • Automatizar el monitoreo con scripts
  • Documentar conexiones legítimas para reducir falsos positivos

Para troubleshooting:

  • Usar -c para monitoreo continuo
  • Combinar con tcpdump para análisis de paquetes
  • Verificar tanto IPv4 como IPv6
  • Considerar el contexto temporal de las conexiones

Alternativas modernas

HerramientaVentajaCuándo usar
ssMás rápido, más informaciónSistemas modernos Linux
lsofMás detalles de archivos/procesosAnálisis profundo
nmapEscaneo desde perspectiva externaVerificación de servicios
wireshark/tcpdumpAnálisis de paquetesInvestigación detallada

Errores comunes y soluciones

ErrorCausaSolución
Salida lentaResolución DNSUsar -n
Información incompletaPermisos insuficientesEjecutar como root/sudo
Comando no encontradoNetstat no instaladoapt install net-tools
Salida truncadaDemasiados resultadosUsar grep/awk para filtrar
No muestra procesosSin privilegiosUsar sudo netstat -p

Comandos de referencia rápida

# Los 5 comandos más útiles
netstat -tulpn                    # Vista completa
netstat -tulpn | grep LISTEN      # Solo servicios en escucha
netstat -tupln | grep ESTABLISHED # Solo conexiones activas
netstat -i                        # Estadísticas de interfaces
netstat -r                        # Tabla de enrutamiento
 
# Análisis específico
netstat -tupln | grep ":443 "     # ¿Quién usa HTTPS?
netstat -tupln | grep "apache"    # Conexiones de Apache
netstat -s | grep -i error        # Errores de red

📊 Interpretación de resultados

Campos de salida importantes

Proto Recv-Q Send-Q Local Address    Foreign Address  State      PID/Program
tcp   0      0      192.168.1.1:22   192.168.1.2:1234 ESTABLISHED 1234/sshd
CampoDescripción
ProtoProtocolo (TCP/UDP)
Recv-QDatos en cola de recepción
Send-QDatos en cola de envío
Local AddressIP:Puerto local
Foreign AddressIP:Puerto remoto
StateEstado de la conexión
PID/ProgramID de proceso/programa

Señales de alerta

  • Recv-Q/Send-Q altos: Posible congestión o ataque DoS
  • Conexiones ESTABLISHED inesperadas: Posible compromiso
  • Puertos en LISTEN no reconocidos: Posible backdoor
  • Procesos desconocidos con conexiones externas: Posible malware
  • Gran cantidad de conexiones TIME_WAIT: Posible ataque o mal funcionamiento

🔗 Recursos adicionales

  • Manual oficial: man netstat
  • Alternativa moderna: ss command
  • Herramientas complementarias: lsof, nmap, tcpdump
  • Monitoreo avanzado: iftop, nethogs, ntopng

Resumen ejecutivo

  • Netstat es fundamental para análisis de red y seguridad
  • netstat -tulpn es el comando más útil para la mayoría de casos
  • Combínalo con otras herramientas para análisis completo
  • Automatiza el monitoreo para detección proactiva
  • Documenta el tráfico normal para identificar anomalías