Uso de PortQry para verificar puertos abiertos TCP / UDP (escáner de puertos)

Windows tiene muchas herramientas para diagnosticar problemas en redes TCP / IP (ping, telnet, pathping, etc.). Pero no todos le permiten comprobar cómodamente el estado o escanear puertos de red abiertos en un servidor remoto. los Portqry.exe La utilidad es una herramienta conveniente para verificar la respuesta de los puertos TCP / UDP en hosts remotos para diagnosticar problemas relacionados con el funcionamiento de varios servicios de red y firewalls en redes TCP / IP. Muy a menudo, la utilidad Portqry se utiliza como un reemplazo más funcional para telnet comando y, a diferencia de Telnet, también le permite verificar los puertos UDP abiertos.

Escaneo de puertos abiertos UDP / TCP con PortQry

La primera versión de PortQry para Windows Server 2003 no funciona correctamente en las versiones más recientes del sistema operativo (Windows Server 2008 y posteriores), por lo que la segunda versión de la utilidad, PortQryV2, ha sido liberado. Es la versión que deberías usar hoy (puedes descargar PortQryV2 aquí).

En Windows 10, puede instalar PortQry usando el administrador de paquetes Chokolatey con el comando:

choco install portqry

Descarga y extrae el PortQryV2.exe archivo. Ejecute el símbolo del sistema y vaya al directorio con la utilidad, por ejemplo:

cd c:toolsPortQryV2

PortQry - descargar y extraer

Por ejemplo, para verificar la disponibilidad de un servidor DNS desde un cliente, debe verificar si 53 puertos TCP y UDP están abiertos en él. La sintaxis del comando de verificación de puerto es la siguiente:

PortQry -n server [-p protocol] [-e || -r || -o endpoint(s)]

  • -norte es el nombre o la dirección IP del servidor, cuya disponibilidad está comprobando;
  • -mi es el número de puerto que se va a verificar (de 1 a 65535);
  • -r es el rango de puertos que se deben verificar (por ejemplo, 1:80);
  • -pag es el protocolo utilizado para la verificación. Puede ser TCP, UDP o AMBOS (TCP se usa por defecto).
Nota. A diferencia del cmdlet Test-NetConnection PowerShell que se puede usar para verificar la disponibilidad solo de los puertos TCP, la utilidad PortQry admite los protocolos TCP y UDP.

En nuestro ejemplo, el comando se ve así:

PortQry.exe –n 10.0.25.6 -p both -e 53

usando portqry para verificar la disponibilidad de puertos dns

Portqry devolverá uno de los tres estados de puerto disponibles:

  • Escuchando – significa que el puerto está abierto (acepta conexiones), se ha recibido una respuesta de él;
  • No Escuchando : Muestra que no hay ningún proceso (servicio) en el sistema de destino que acepte conexiones en el puerto especificado. El PortQry recibió una respuesta ICMP «Destino inalcanzable – Puerto inalcanzable» al verificar el puerto UDP o el paquete TCP con el indicador de reinicio;
  • Filtrado – significa que PortQry no ha recibido ninguna respuesta del puerto especificado o que la respuesta se ha filtrado. Es decir, este puerto no está escuchando en el sistema de destino o el acceso a él está restringido por un firewall o alguna configuración del sistema. De forma predeterminada, los puertos TCP se sondean 3 veces y UDP es uno.

En nuestro ejemplo, el servidor DNS está disponible desde el cliente tanto a través de puertos TCP como UDP.

TCP port 53 (domain service): LISTENING
UDP port 53 (domain service): LISTENING

Utilizando -o atributo, puede especificar la secuencia de puertos para comprobar su disponibilidad:

portqry -n 10.0.25.6 -p tcp -o 21,110,143

El siguiente comando escanea los rangos de los conocidos números de puerto TCP / IP y devuelve la lista de puertos que aceptan las conexiones (funciona como TCP Port Scanner):

portqry -n 10.0.25.6 -r 1:1024 | find ": LISTENING"

Puede guardar el resultado del escaneo de puertos abiertos en un archivo de texto:

portqry -n 10.0.25.6 -p tcp -r 20:500 -l scan_port_log.txt

La utilidad portqry tiene un modo interactivo:

portqry –i

Ahora, en el indicador del modo interactivo de PortQry, puede especificar el nombre de la computadora remota y el número de puerto:

node srv-lic
set port=80

Para verificar el puerto en el servidor especificado, presione q y Enter.

Modo interactivo de PortQry

Utilizando el -wport y -wpid argumentos, puede monitorear el estado del puerto especificado (wport), o todos los puertos asociados con el proceso especificado (wpid) en el host local.

Por ejemplo, el siguiente comando monitoreará la respuesta del puerto local especificado dentro de 10 minutos (por ejemplo, puerto RDP 3389), y si su estado cambia, notificará al administrador acerca de esto (un registro detallado estará disponible en LogFile .TXT). Para detener la supervisión del puerto, presione Ctrl-C:

portqry -wport 3389 -wt 600 –l LogFile.txt -y -v

Puede obtener información sobre los puertos abiertos y las conexiones TCP / UDP activas en la computadora local:

portqry.exe -local

Estado de puertos abiertos de servicios de red avanzados en PortQry

PortQry tiene un soporte integrado para algunos servicios de red. Estos son LDAP, llamadas a procedimiento remoto (RPC), protocolos de correo electrónico SMTP / POP3 / IMAP4, SNMP, FTP / TFTP, servicio de nombres NetBIOS, L2TP, etc. Además de verificar la disponibilidad del puerto, la herramienta realiza solicitudes específicas del protocolo para obtener el estado de los servicios.

Por ejemplo, con el siguiente comando, puede verificar la disponibilidad del servicio de mapeador de puntos finales RPC (TCP / 135) y obtener la lista de nombres de puntos finales RPC registrados en la computadora (incluidos sus nombres, UUID, la dirección a la que están vinculados y la aplicación con la que están relacionados).

portqry -n 10.0.25.6 -p tcp -e 135

TCP port 135 (epmap service): LISTENING
Using ephemeral source port
Querying Endpoint Mapper Database…
Server’s response:
UUID: d95afe72-a6d5-4259-822e-2c84da1ddb0d
ncacn_ip_tcp:10.0.25.6 [49152]
UUID: 8975497f-93f3-4376-9c9c-fd2277495c27 Frs2 Service
ncacn_ip_tcp:10.0.25.6 [5722]
UUID: 6b5bd21e-528c-422c-af8c-a4079be4a448 Remote Fw APIs
ncacn_ip_tcp:10.0.25.6 [63006]
UUID: 12345678-1234-abcd-ef22-0123456789ab IPSec Policy agent endpoint
ncacn_ip_tcp:10.0.25.6 [63006]
UUID: 367abb81-9844-35f1-ad32-912345001003
ncacn_ip_tcp:10.0.25.6 [63002]
UUID: 50cda2a3-574d-40b3-1d66-ee4aaa33a076
ncacn_ip_tcp:10.0.25.6 [56020]
……..
UUID: 3c4428c5-f0ab-448b-bda1-6ce01eb0a6d5 DHCP Client LRPC Endpoint
ncacn_ip_tcp:10.0.25.6 [49153]
Total endpoints found: 61
==== End of RPC Endpoint Mapper query response ====
portqry.exe -n 10.0.25.6 -e 135 -p TCP exits with return code 0x00000000.

O puede verificar la disponibilidad y la respuesta del servicio del navegador de SQL Server que se ejecuta en Microsoft SQL Server:

PortQry.exe -n rome-sql01 -e 1434 -p UDP

UDP port 1434 (ms-sql-m service): LISTENING or FILTERED
Sending SQL Server query to UDP port 1434...
Server's response:
ServerName ROME-SQL01
InstanceName MSSQLSERVER
IsClustered No
Version 15.0.2000.5
tcp 53200

ServerName ROME-SQL01
InstanceName DBINVENT
IsClustered No
Version 15.0.2000.5
tcp 1433
==== End of SQL Server query response ====
UDP port 1434 is LISTENING

Como puede ver, la herramienta PortQry mostró no solo la disponibilidad del puerto 1434 / UDP, sino también la versión del servidor SQL y los nombres de las instancias que se ejecutan en el servidor SQL y sus puertos TCP. La primera instancia DBINVENT escucha en el puerto predeterminado TCP / 1433 y el segundo MSSQLSERVER usa un puerto TCP / 53200 fijo del rango RPC.

portqry: verificando la respuesta del servidor SQL y ejecutando instancias

Puede sondear el puerto SNMP en el dispositivo especificando el nombre de la comunidad:

portqry -n rome-sql1 -cn !snmp_trap! -e 161 -p udp

Al verificar el puerto TCP / 25 en un servidor SMTP, puede obtener el banner SMTP del servicio:

portqry -n mx.woshub.com  -p tcp -e 25

Versión de la GUI de PortQuery

Originalmente, PortQry era exclusivamente una herramienta de consola (CLI). Para que sea más conveniente para los usuarios a los que no les gusta usar el símbolo del sistema, Microsoft ha desarrollado la interfaz gráfica simple para portqry: PortQueryUI. Puede descargar PortQueryUI desde el sitio web oficial de descargas de Microsoft: PortQueryUI.

En realidad, PortQueryUI es un complemento gráfico para portqry para generar un comando y devolver el resultado en la ventana gráfica.

Además, PortQueryUI contiene varios conjuntos predefinidos de consultas para verificar la disponibilidad de los populares servicios de Microsoft:

  • Dominio y fideicomisos (verificando los servicios ADDS en un controlador de dominio de Active Directory)
  • Servidor de intercambio
  • servidor SQL
  • Redes
  • Sec de IP
  • Servidor web
  • Reunión en la red

Creo que PortQueryUI no necesita comentarios especiales. Debería quedar claro si observa la captura de pantalla a continuación. Introducir el Nombre DNS o dirección IP del servidor remoto, seleccione uno de los servicios predefinidos (Servicio de consulta predefinido), o especifique los números de puerto para la verificación manual del puerto (Ingrese manualmente los puertos de consulta) y haga clic en el Consulta botón.

PortQueryUI - GUI para portqry

Posibles códigos de retorno en PortQueryUI (resaltados en la captura de pantalla):

  • 0 (0x00000000): la conexión se ha establecido correctamente y el puerto está disponible;
  • 1 (0x00000001): el puerto especificado no está disponible o filtrado;
  • 2 (0x00000002 – un código de retorno normal cuando se verifica la disponibilidad de una conexión UDP, ya que no se devuelve la respuesta ACK.

Artículos Interesantes