Netstat

Netstat (Network Statistics) es un programa que se instala de forma predeterminada en casi todas las distribuciones Linux y Windows y que puede ofrecernos mucha información sobre las conexiones de red de un sistema.

Está herramienta se ejecuta desde la línea de comandos, aunque también tiene una interfaz gráfica y nos muestra las conexiones activas de un ordenador, tanto entrantes como salientes. Lo que nos permite controlar las conexiones de nuestro sistema y descubrir si alguien se ha conectado a nuestro ordenador o por ejemplo saber si desde nuestro sistema se está mandado spam.

Entre la información que nos muestra Netstat se incluye el protocolo en uso, las direcciones IP tanto locales como remotas, los puertos locales y remotos utilizados y el estado de la conexión. Un ejemplo de salida sería la siguiente:

netstat -na
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 461 192.168.2.11.49751 38.101.111.44.80 ESTABLISHED
tcp4 0 463 192.168.2.11.49750 38.101.111.44.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49749 87.106.219.203.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49748 87.106.192.56.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49747 76.74.9.18.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49746 213.4.130.98.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49745 213.4.130.98.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49744 213.4.130.98.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49743 213.4.130.98.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49742 213.4.130.98.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49741 213.4.130.98.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49739 209.85.229.99.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49737 209.85.229.100.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49730 91.198.174.2.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49729 209.85.229.100.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49728 209.85.229.118.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49726 209.85.227.103.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49725 209.85.227.99.80 ESTABLISHED
tcp4 0 0 *.3827 *.* LISTEN
tcp4 0 0 192.168.2.11.49501 208.43.202.5.80 ESTABLISHED
tcp4 0 0 192.168.2.11.49480 217.116.18.226.993 ESTABLISHED
tcp4 0 0 192.168.2.11.49479 217.116.18.226.993 ESTABLISHED
tcp4 0 0 *.88 *.* LISTEN
tcp6 0 0 *.88 *.* LISTEN
tcp4 0 0 127.0.0.1.26164 127.0.0.1.49188 ESTABLISHED
tcp4 0 0 127.0.0.1.49188 127.0.0.1.26164 ESTABLISHED
tcp4 37 0 192.168.2.11.49196 174.36.30.66.443 CLOSE_WAIT
tcp4 0 0 127.0.0.1.26164 *.* LISTEN
tcp4 37 0 192.168.2.11.49181 174.36.30.67.443 CLOSE_WAIT
tcp4 0 0 *.3306 *.* LISTEN
tcp4 0 0 *.548 *.* LISTEN
tcp6 0 0 *.548 *.* LISTEN
tcp4 0 0 127.0.0.1.631 *.* LISTEN
tcp6 0 0 ::1.631 *.* LISTEN
tcp4 0 0 192.168.2.11.49738 87.106.219.203.80 TIME_WAIT
udp4 0 0

Donde podemos ver que hay varias conexiones establecidas (ESTABLISH), por lo que se trata de una conexión entrante desde algún sistema remoto hacía mi sistema. Por otro lado también tenemos el estado de LISTEN, que significa que el socket está esperando posibles conexiones entrantes. Pero estos no son los únicos estados que te permite conocer Netstat, ya que los estado posibles son:

  • ESTABLISHED -> El socket tiene una conexión establecida.
  • SYN_SENT -> El socket está intentando iniciar una conexión.
  • SYN_RECV -> Una petición de conexión fue recibida por la red.
  • FIN_WAIT1 -> El socket está cerrado, y la conexión esta finalizándose.
  • FIN_WAIT2 -> La conexión esta cerrada, y el socket está esperando que finalice la conexión remota.
  • TIME_WAIT -> El socket está esperando después de cerrarse que concluyan los paquetes que siguen en la red.
  • CLOSED -> El socket no está siendo usado.
  • CLOSE_WAIT -> La conexión remota ha finalizado, y se espera que se cierre el socket.
  • LAST_ACK -> La conexión remota ha finalizado, y se espera que se cierre el socket. Esperando el acknowledgement.
  • LISTEN -> El socket está esperando posibles conexiones entrantes.
  • CLOSING -> Ambos sockets han finalizado pero aun no fueron enviados todos los datos.
  • UNKNOWN -> El estado del socket no se conoce.


Sintaxis:

Ahora veremos la sintaxis y parámetros que se pueden usar con Netstat en los diferentes sistemas operativos.

Como ya comentamos la sintaxis y los parámetros de la herramienta pueden variar entre los diferentes sistemas operativos, en los sistemas Unix se puede usar el comando man netstat para visualizar la ayuda del comando, mientras que en los sistemas Windows es posible usar netstat /?.

Comencemos a ver los parámetros que podemos utilizar en los sistemas operativos Linux:

  • -r, --route Muestra la tabla de enrutamiento.
  • -i, --interfaces Muestra la tabla de interfaces
  • -g, --groups Muestra los miembros del grupo de multidifusión
  • -s, --statistics Muestra estadísticas de red (como SNMP)
  • -M, --masquerade Muestra conexiones enmascaradas
  • -v, --verbose Muestra más información en la salida
  • -n, --numeric No resuelve nombres en general
  • --numeric-hosts No resuelve el nombre de los hosts
  • --numeric-ports No resuelve el nombre de los puertos
  • --numeric-users No resuelve los nombres de usuarios
  • -N, --symbolic Muestra los nombres del hardware de red
  • -e, --extend Muestra otra/mas información.
  • -p, --programs Muestra PID o nombre del programa por cada socket
  • -c, --continuous Muestra continuamente las estadísticas de red (hasta que se interrumpa el programa)
  • -l, --listening Muestra los server sockets que están es modo escucha
  • -a, --all, --listening Muestra todos los sockets (por defecto únicamente los que están en modo conectado)
  • -o, --timers Muestra los timers
  • -F, --fib Muestra el Forwarding Information Base (por defecto)
  • -C, --cache Mostrar el cache de enrutamiento en ves del FIB

Mientras que en Windows y en MS-DOS podemos usar los siguientes parámetros:

  • -a Visualiza todas las conexiones y puertos TCP y UDP, incluyendo las que están "en escucha" (listening).
  • -b En los sistemas recientes, visualiza el binario (ejecutable) del programa que ha creado la conexión.
  • -e Estadísticas Ethernet de las visualizaciones, como el número de paquetes enviados y recibidos. Se puede combinar con la opción -s.
  • -n Se muestran los puertos con su identificación en forma numérica y no de texto.
  • -o En sistemas Windows XP y 2003 Server, muestra los identificadores de proceso (PID) para cada conexión. Se puede verificar los identificadores de proceso en el Administrador de Tareas de Windows (al agregarlo a las columnas de la pestaña procesos)
  • -p Muestra las conexiones para el protocolo especificado; el protocolo puede ser TCP o UDP. Si se utiliza con la opción de
  • -s para visualizar la estadística por protocolo puede ser TCP, UDP o IP.
  • -r Visualiza la tabla de enrutamiento o encaminamiento. Equivale al comando route print.
  • -s Estadística por protocolo de las visualizaciones. Por el valor por defecto, la estadística se muestra para TCP, UDP e IP; la opción -p se puede utilizar para especificar un subconjunto del valor por defecto.
  • -v En sistemas Windows XP y 2003 Server, y usado en conjunto con -b, muestra la secuencia de componentes usados en la creación de la conexión por cada uno de los ejecutables.

Artículos para aprender a usar Netstat

Una de las consultas más usadas en netstat es la de consulta de la tabla de encaminamiento, para ver la información de la tabla de encaminamiento del núcleo, que es equivalente al comando route en Unix, tenemos que ejecutar el siguiente comando:

netstat –nr
Routing tables
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.3 UGSc 24 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 5 23550 lo0

Este comando nos permite ver las rutas que tenemos en nuestro sistema, y con la opción -n le estamos diciendo a netstat que imprima las direcciones IP en lugar de usar los nombres simbólicos de las máquinas o las redes, lo que nos facilita identificar las distintas redes nuestro sistema, así como identificar si existe una ruta por defecto.

Otra de las opciones que podemos usar en netstat son -nt o –ntl, que nos permite ver las conexiones activas o los puertos abiertos respectivamente. Por ejemplo para las conexiones activas podríamos ejecutar el siguiente comando:

netstat –nt
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.1.193.57643 ww-in-f102.googl.http ESTABLISHED
tcp4 0 0 192.168.1.193.57642 wy-in-f157.googl.http ESTABLISHED
tcp4 0 0 192.168.1.193.57630 wy-in-f166.googl.http ESTABLISHED
tcp4 0 0 192.168.1.193.57622 wy-in-f166.googl.http ESTABLISHED
tcp4 0 0 192.168.1.193.57377 wy-in-f104.googl.http ESTABLISHED

Mientras que para los puertos abiertos podríamos usar el siguiente comando, que nos devolvería una respuesta parecida a la anterior, añadiendo el puerto del servicio:

netstat –ntl
cp4 0 0 192.168.1.193.55569 205.187.13.56.aol ESTABLISHED
tcp4 0 0 192.168.1.193.53642 mail.correo.com.imaps ESTABLISHED
tcp4 0 0 localhost.26164 localhost.52301 ESTABLISHED
tcp4 0 0 localhost.52301 localhost.26164 ESTABLISHED
tcp4 0 0 192.168.1.193.49970 mail.correo.com.imaps ESTABLISHED
tcp4 0 0 192.168.1.193.49855 cds69.ams9.llnw..http CLOSE_WAIT

Netstat también nos permite conocer las estadísticas de una interfaz, para ello tenemos que ejecutar el siguiente comando que presenta las estadísticas para las interfaces de red configuradas en ese momento:

netstat -i
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lo0 16384 49732 0 49732 0 0
lo0 16384 localhost fe80::1 49732 - 49732 - -
lo0 16384 127 localhost 49732 - 49732 - -
lo0 16384 localhost ::1 49732 - 49732 - -
gif0* 1280 0 0 0 0 0

Otra de las características de netstat es que nos ofrece una serie de opciones, –t, –u, –w, y –x, que nos permiten mostrar los puertos activos o pasivos. Estás opciones muestran conexiones activas a puertos TCP, UDP, RAW o Unix, y si además ponemos el indicador –a, se mostrarán también los puertos que estén esperando una conexión. Por ejemplo podemos usar el siguiente comando:

netstat –ta
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.1.193.59501 wy-in-f102.googl.http ESTABLISHED
tcp4 0 0 192.168.1.193.59497 wy-in-f157.googl.http ESTABLISHED
tcp4 0 0 192.168.1.193.59485 wy-in-f165.googl.http ESTABLISHED

Información extraída de:
http://www.websecurity.es/netstat

Comentarios

Entradas populares de este blog

Trinity Rescue Kit: Tutorial para eliminar la contraseña de administrador en Windows

Cómo extraer el handshake WPA/WPA2 de archivos de captura grandes

Crear un Fake AP en muy pocos pasos con Gerix