viernes, marzo 07, 2008

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.
Publicar un comentario