7/3/08

El comando netstat en Windows

Netstat es una herramienta disponible desde la línea de comando de la mayoría de sistemas operativos importantes (Windows, Linux, Unix, etc), es otra de esas herramientas disponibles gratuitamente, pero a mi parecer bastante subutilizada. Entre otras cosas, esta herramienta permite dar un vistazo a las conexiones que tiene establecida la PC, también permite ver algunas estadísticas de red y la tabla de ruteo (esto ultimo también esta disponible con el comando route print)

En este post me voy a concentrar en la versión para Windows, particularmente en XP, puedo suponer que las mismas opciones también aplicarían a Windows Vista, pero de momento no tengo como comprobarlo. Ahora, sin más preámbulos, veamos algunos usos prácticos de este comando.

Para utilizar esta herramienta, únicamente tienes que abrir una línea de comando y escribir netstat al presionar enter, se desplegara un listado de conexiones activas en tu PC, como puede verse en la siguiente figura, la primera columna muestra el protocolo (puede ser tcp o udp), la siguiente muestra la dirección local junto con el puerto local, a continuación esta la dirección y puerto remoto y finalmente se muestra el estado de la conexión, en la figura puede verse que hay conexiones establecidas y otras en estado TIME_WAIT, esto indica que son conexiones tcp que ya se están cerrando. Esta información se captura en un instante de tiempo (constante se están creando y cerrando conexiones, así que aquí viene el primer tip, si deseas que la lista se este refrescando cada x tiempo, puedes agregar el numero de segundos de intervalo al final del comando, por ejm. netstat 10 refrescara la estadística cada 10 segundos.


Si el uso anterior fuera el único de este comando, sería interesante, pero quedaría en deuda, la clave esta en usar las opciones, si deseas verlas basta con escribir el comando netstat help, hay varias opciones y te animo a experimentarlas, se pueden utilizar solas o combinadas, en lo particular me resultan útiles algunas opciones especificas que describo a continuación.

Utilizando el comando con las opciones a (que despliega todas las conexiones y puertos que están abiertos, es decir esperando conexiones o en listening state) y o que despliega el PID del proceso que esta utilizando la conexión, el comando sería netstat -ao y el resultado puede verse en la siguiente figura.


Saber que puertos están abiertos es importante ya que permite detectar algunos procesos que no deberían estar en este estado, esto puede ayudar a descubrir spywares en tu PC, o protocolos que están corriendo y no deberían, por ejemplo en la figura anterior observo que el puerto 1025 en mi PC esta en estado LISTENING, la pregunta obvia es que programa o servicio esta abriendo el puerto 1025?, aquí es donde entra la opción o del comando, ya que muestra el PID (process ID),que en este caso en particular es esl 120, sabiendo este número, podemos utilizar el comando tasklist, que muestra el servicio o programa que esta abriendo este puerto, en la siguiente figura puede verse el resultado del comando tasklist, ahí observo que el programa asociado al proceso 120 es alg.exe nunca he oído hablar de alg.exe así que esto me genera curiosidad después de investigar un poco en internet, me doy cuenta que es un proceso normal de Windows utilizado por Internet Connection Sharing, uff, menos mal, sin embargo, utilizando esta misma lógica, se pueden encontrar programas maliciosos en tu PC (en mi caso, el siguiente paso sería abrir Wireshark y capturar tráfico para tener aun más detalles de lo que esta pasando).


La otra opción que puede resultar muy útil de este comando, es la opción de ver estadísticas de la conexión, el comando sería netstat -es que desglosa las estadísticas por protocolo, un análisis de estas estadísticas puede revelar problemas de cableado, o con la interface (por ejemplo si se observa un número alto de errores), o también ayudar a aislar mejor la causa del problema, te animo a experimentar con esta opción y ver que estadísticas te pueden resultar útiles.

Finalmente un consejo, es una buen práctica utilizar regularmente este comando en tu PC, si lo haces cuando todo esta funcionando bien, puedes identificar que procesos son normales, que puertos están abiertos, etc, esto te puede servir de base, en el futuro, si tu PC empieza a dar problemas, un rápido vistazo con netstat -ao puede ayudarte a identificar la raíz del problema, no digo que es un método infalible pero vale la pena considerarlo.

17 comentarios:

Anónimo dijo...

Buenisima explicacion, gracias!
Estaba buscando info justamente porque ejecute netstat en mi pc y me encontré con algunas sorpresas :D
Ahora, ¿se puede desconectar manualmente alguna conexion establecida que podamos ver ahi?

Hector Munguia dijo...

Amigo, con respuesta a tu pregunta, sobre si se puede desconectar manualmente alguna conexión inapropiada detectada con netstat, si hay algunas cosas que puedes hacer, la primera es tratar de identificar el proceso que esta generando la conexión indebida y tratar de terminarlo desde el taskmgr, otra opción es bloquer el puerto con algun firewall personal que pudieras tener instalado en tu PC, ese es un par de acciones inmediatas, más allá de eso, conviene investigar más a fondo el problema, correr algun programa para elimintar virus o malware, análizar tráfico con wireshark para ver que es lo que esta pasando etc. Espero que estos tips te sirvan. Saludos

Anónimo dijo...

Sì existe esa posibilidad el comando se escribe en la consola de comandos, inicio, ejecutar, cmd.exe, tasklist, cuando se ve el PID del causante del problema, desde la misma consola escribir : taskkill /IM 120 , con las separaciones correspondientes tal cual estàn. Con eso daràs tèrmino al proceso, pero para saber sobre procesos està esta direcciòn : www processlibrary.com , ademàs tienen antispyware gratuitos y escaneadores de puertos gratuitos. Si tu xp no tiene el comando netstat te podès bajar el programa tcp/viewer desde : www.sysinternals.com , esa compañìa la comprò Microsoft, y te redirecciona a Microsoft que te permite bajarlo gratuitamente sin preguntar nada.

Anónimo dijo...

oye la explicacion esta muy buena pero es que nesecito saber que puerto debo abrir para jugar un juego XD, yo puedo entrar a las salas pero si son ellos que van a entrar a la mia no le aparece y tambien el problema es que el rounter lo tiene mi amigo en su casa el me pasa el internet bueno si puedes ayudarme o no entendiste bien mi msn elangel20043@hotmail.com

Mike Guzman dijo...

Muy interesante el Post... de hecho tengo un problema en el Trabajo como se que en un equipo tiene abierto un puerto con el cual se esta comunicando un sistema de esa maquina con otra maquina en este caso seria el servidor.. el puerto es el TCP 3050 que utiliza el Firebird para comunicarme con la base de datos y el puerto UDP 8090 con el comunico con un programa para mandar correos.

Cuando estoy en el equipo 1 trato de conectarme al servidor pero no se logra la comunicacion, se desactivo el firewall, tmb el antivirus esta totalmente desbloqueada la maquina y con privilegios de administrador, pero me sigue marcando error de que no puede establecer la comunicacion y lo que me falta por verificar son los puertos que mencione.. y no puedo usar TELNET porque fundiria al motor de Firebird.

Gabriel Altamirano dijo...

uso windows xp, cerrando todos los programas abiertos, y ejecutando netstat -n, que me tiene que aparecer? para yo saber que mi pc anda correctamente, porque tengo microcortes en el modem, y quiero ver si es problema de mi pc, del IPS o del modem????

Gabriel ga@tutopia.com

Gabriel Altamirano dijo...

uso windows xp, cerrando todos los programas abiertos, y ejecutando netstat -n, que me tiene que aparecer? para yo saber que mi pc anda correctamente, porque tengo microcortes en el modem, y quiero ver si es problema de mi pc, del IPS o del modem????

Gabriel

ga@tutopia.com

Unknown dijo...

Como puedo abrir mis puertos USB

Unknown dijo...

como puedo abrir mis puertos USB

Anónimo dijo...

para abrir los puertos USB son los cables que estan conectados en tu cpu, las conexion no lo recuerdo pero es ahii, consulta como se debe conectar los cables de usb dentro del cpu en google.
salu2.

Anónimo dijo...

y gracias por el comentarios de comandos ms2. estan buenisimos ya estoy haciendo la prueba chavos.
salu2 all....

Maximiliano dijo...

Gracias amigo me re sirvio . Saldos desde Argentina (mendoza)

Anónimo dijo...

el parámetro "o" está bien para saber el pid pero con la "b" puedes ver hasta cual es el ejecutable que está causando la conexión a un puerto, un comando extremadamente util tanto en windows como en linux. Un saludo.

Anónimo dijo...

Y EL COMANDO NETSTAT -AN PARA QUE SIRVE

Miguel Angel Perez dijo...

Muy buena explicacion, Gracias!!
estaba buscando informacion sobre los comandos basicos para realizar troubleshooting,netstat es una herramienta muy util, ahora entiendo como se usa. Estudio redes y siempre es bueno encontrar informacion clara y precisa, seguire tu blog!

Anónimo dijo...

Como sabes eso de que es el puerto 1025 el que está abierto?

Unknown dijo...

Muy buena explicacion, es la primera vez que le entiendo perfectamente a los comandos del netstat
Gracias!