ค้นหาเว็บไซต์

การใช้ PortQry เพื่อตรวจสอบ TCP/UDP เปิดพอร์ต (Port Scanner)


Windows มีเครื่องมือมากมายสำหรับวินิจฉัยปัญหาในเครือข่าย TCP/IP (

ping

,

telnet

,

pathping

ฯลฯ). แต่ไม่ใช่ทั้งหมดที่จะให้คุณตรวจสอบสถานะหรือสแกนพอร์ตเครือข่ายที่เปิดอยู่บนเซิร์ฟเวอร์ระยะไกลได้อย่างสะดวก ยูทิลิตี Portqry.exe เป็นเครื่องมือที่สะดวกในการตรวจสอบการตอบสนองของพอร์ต TCP/UDP บนโฮสต์ระยะไกล เพื่อวินิจฉัยปัญหาที่เกี่ยวข้องกับการทำงานของบริการเครือข่ายและไฟร์วอลล์ต่างๆ ในเครือข่าย TCP/IP บ่อยครั้งที่ยูทิลิตี้ Portqry ถูกใช้แทนการทำงานแทน

telnet

ซึ่งแตกต่างจาก telnet ตรงที่อนุญาตให้คุณตรวจสอบพอร์ต UDP ที่เปิดอยู่

การสแกนเปิดพอร์ต UDP/TCP ด้วย PortQry

PortQry เวอร์ชันแรกสำหรับ Windows Server 2003 ทำงานไม่ถูกต้องใน OS เวอร์ชันใหม่กว่า (Windows Server 2008 และใหม่กว่า) ดังนั้นยูทิลิตี้เวอร์ชันที่สอง PortQryV2 จึงได้รับการเผยแพร่ เป็นเวอร์ชันที่คุณควรใช้ในปัจจุบัน (คุณสามารถดาวน์โหลด PortQryV2 ได้ที่นี่)

ดาวน์โหลดและแตกไฟล์เก็บถาวร PortQryV2.exe เรียกใช้พรอมต์คำสั่งและไปที่ไดเร็กทอรีที่มียูทิลิตี ตัวอย่างเช่น:

cd c:\tools\PortQryV2

ตัวอย่างเช่น หากต้องการตรวจสอบความพร้อมใช้งานของเซิร์ฟเวอร์ DNS จากไคลเอ็นต์ คุณต้องตรวจสอบว่าพอร์ต TCP และ UDP 53 พอร์ตเปิดอยู่หรือไม่ ไวยากรณ์ของคำสั่งตรวจสอบพอร์ตมีดังนี้:

PortQry -n server [-p protocol] [-e || -r || -o endpoint(s)]
  • -n คือชื่อหรือที่อยู่ IP ของเซิร์ฟเวอร์ที่คุณกำลังตรวจสอบความพร้อมใช้งาน

  • -e คือหมายเลขพอร์ตที่จะตรวจสอบ (ตั้งแต่ 1 ถึง 65535)

  • -r คือช่วงของพอร์ตที่จะตรวจสอบ (เช่น 1:80)

  • -p เป็นโปรโตคอลที่ใช้ในการตรวจสอบ อาจเป็น TCP, UDP หรือ BOTH (ค่าเริ่มต้นจะใช้ TCP)

หมายเหตุ ซึ่งแตกต่างจาก cmdlet PowerShell Test-NetConnection ที่สามารถใช้เพื่อตรวจสอบความพร้อมใช้งานของพอร์ต TCP เท่านั้น ยูทิลิตี PortQry รองรับทั้งโปรโตคอล TCP และ UDP

ในตัวอย่างของเรา คำสั่งมีลักษณะดังนี้:

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

Portqry จะส่งคืนหนึ่งในสามสถานะพอร์ตที่มีอยู่:

  • การฟัง - หมายความว่าพอร์ตเปิดอยู่ (ยอมรับการเชื่อมต่อ) ได้รับการตอบสนองจากมัน

  • ไม่ กำลังฟัง - แสดงว่าไม่มีกระบวนการ (บริการ) ในระบบเป้าหมายที่ยอมรับการเชื่อมต่อบนพอร์ตที่ระบุ PortQry ได้รับการตอบสนอง ICMP “ปลายทางไม่สามารถเข้าถึงได้ - พอร์ตไม่สามารถเข้าถึงได้” เมื่อตรวจสอบพอร์ต UDP หรือแพ็กเก็ต TCP ด้วยแฟล็กรีเซ็ต

  • กรองแล้ว - หมายความว่า PortQry ไม่ได้รับการตอบกลับใด ๆ จากพอร์ตที่ระบุหรือมีการกรองการตอบกลับ กล่าวคือ พอร์ตนี้ไม่ได้รับฟังระบบเป้าหมาย หรือการเข้าถึงพอร์ตนี้ถูกจำกัดโดยไฟร์วอลล์หรือการตั้งค่าระบบบางอย่าง ตามค่าเริ่มต้น พอร์ต TCP จะถูกสำรวจ 3 ครั้ง และ UDP เป็น 1 ครั้ง

ในตัวอย่างของเรา เซิร์ฟเวอร์ DNS พร้อมใช้งานจากไคลเอ็นต์ทั้งผ่านพอร์ต TCP และ UDP

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

เมื่อใช้แอตทริบิวต์ -o คุณสามารถระบุลำดับของพอร์ตเพื่อตรวจสอบความพร้อมใช้งาน:

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

คำสั่งถัดไปจะสแกนช่วงของหมายเลขพอร์ต TCP/IP ที่รู้จักกันดี และส่งกลับรายการพอร์ตที่ยอมรับการเชื่อมต่อ (ทำงานเป็น TCP Port Scanner):

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

คุณสามารถบันทึกผลการสแกนพอร์ตที่เปิดอยู่เป็นไฟล์ข้อความ:

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

ยูทิลิตี้ portqry มีโหมดโต้ตอบ:

portqry -i

ตอนนี้ ที่พรอมต์โหมดโต้ตอบของ PortQry คุณสามารถระบุชื่อคอมพิวเตอร์ระยะไกลและหมายเลขพอร์ตได้:

node srv-lic
set port=80

หากต้องการตรวจสอบพอร์ตบนเซิร์ฟเวอร์ที่ระบุ ให้กด q และ Enter

การใช้อาร์กิวเมนต์ -wport และ -wpid คุณสามารถตรวจสอบสถานะของพอร์ตที่ระบุ (wport) หรือพอร์ตทั้งหมดที่เกี่ยวข้องกับกระบวนการที่ระบุ (wpid) บนโลคัล เจ้าภาพ.

ตัวอย่างเช่น คำสั่งต่อไปนี้จะตรวจสอบการตอบสนองของพอร์ตภายในเครื่องที่ระบุภายใน 10 นาที (เช่น พอร์ต RDP 3389) และหากสถานะเปลี่ยนไป ก็จะแจ้งให้ผู้ดูแลระบบทราบเกี่ยวกับเรื่องนี้ (บันทึกโดยละเอียดจะอยู่ใน LogFile .txt). หากต้องการหยุดการตรวจสอบพอร์ต ให้กด Ctrl-C:

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

คุณสามารถรับข้อมูลเกี่ยวกับพอร์ตที่เปิดอยู่และการเชื่อมต่อ TCP/UDP ที่ใช้งานอยู่บนเครื่องคอมพิวเตอร์:

portqry.exe -local

บริการเครือข่ายขั้นสูงเปิดสถานะพอร์ตใน PortQry

PortQry มีการสนับสนุนในตัวสำหรับบริการเครือข่ายบางอย่าง เหล่านี้ได้แก่ LDAP, Remote Procedure Calls (RPC), โปรโตคอลอีเมล SMTP/POP3/IMAP4, SNMP, FTP/TFTP, NetBIOS Name Service, L2TP เป็นต้น นอกจากการตรวจสอบความพร้อมใช้งานของพอร์ตแล้ว เครื่องมือยังดำเนินการตามคำขอเฉพาะของโปรโตคอลไปยัง รับสถานะของบริการ

ตัวอย่างเช่น การใช้คำสั่งต่อไปนี้ คุณสามารถตรวจสอบความพร้อมใช้งานของบริการตัวแมปจุดสิ้นสุด RPC (TCP/135) และรับรายการชื่อจุดสิ้นสุด RPC ที่ลงทะเบียนบนคอมพิวเตอร์ (รวมถึงชื่อ UUID ที่อยู่ที่ถูกผูกไว้ และแอปพลิเคชันที่เกี่ยวข้อง)

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.

หรือคุณสามารถตรวจสอบความพร้อมใช้งานและการตอบกลับจากบริการ SQL Server Browser ที่ทำงานบน 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

อย่างที่คุณเห็น เครื่องมือ PortQry ไม่เพียงแสดงความพร้อมใช้งานของพอร์ต 1434/UDP เท่านั้น แต่ยังแสดงเวอร์ชันของเซิร์ฟเวอร์ SQL และชื่อของอินสแตนซ์ที่ทำงานบนเซิร์ฟเวอร์ SQL และพอร์ต TCP อีกด้วย อินสแตนซ์ DBINVENT แรกฟังพอร์ตเริ่มต้น TCP/1433 และ MSSQLSERVER ตัวที่สองใช้พอร์ต TCP/53200 แบบคงที่จากช่วง RPC

คุณสามารถสำรวจพอร์ต SNMP บนอุปกรณ์โดยระบุชื่อชุมชน:

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

เมื่อตรวจสอบพอร์ต TCP/25 บนเซิร์ฟเวอร์ SMTP คุณจะได้รับแบนเนอร์ SMTP ของบริการ:

portqry -n mx.a-d.site  -p tcp -e 25

เวอร์ชัน PortQuery GUI

เดิมที PortQry เป็นเพียงเครื่องมือคอนโซล (CLI) เพื่อให้สะดวกยิ่งขึ้นสำหรับผู้ใช้ที่ไม่ต้องการใช้พรอมต์คำสั่ง Microsoft ได้พัฒนาอินเทอร์เฟซแบบกราฟิกอย่างง่ายสำหรับ portqry - PortQueryUI คุณสามารถดาวน์โหลด PortQueryUI ได้จากเว็บไซต์ดาวน์โหลดอย่างเป็นทางการของ Microsoft: PortQueryUI.

ที่จริงแล้ว PortQueryUI เป็นส่วนเสริมกราฟิกสำหรับ portqry เพื่อสร้างคำสั่งและส่งกลับผลลัพธ์ในหน้าต่างกราฟิก

นอกจากนี้ PortQueryUI ยังมีชุดการสืบค้นที่กำหนดไว้ล่วงหน้าหลายชุดเพื่อตรวจสอบความพร้อมใช้งานของบริการยอดนิยมของ Microsoft:

  • โดเมนและความน่าเชื่อถือ (ตรวจสอบบริการ ADDS บนตัวควบคุมโดเมน Active Directory)

  • เซิร์ฟเวอร์แลกเปลี่ยน

  • เซิร์ฟเวอร์ SQL

  • ระบบเครือข่าย

  • IP วินาที

  • เว็บเซิร์ฟเวอร์

  • การประชุมสุทธิ

ฉันคิดว่า PortQueryUI ไม่ต้องการความคิดเห็นพิเศษใดๆ ควรจะชัดเจนถ้าคุณดูภาพหน้าจอด้านล่าง ป้อน ชื่อ DNS หรือ ที่อยู่ IP ของเซิร์ฟเวอร์ระยะไกล เลือกหนึ่งในบริการที่กำหนดไว้ล่วงหน้า (ค้นหาบริการที่กำหนดไว้ล่วงหน้า) หรือระบุหมายเลขพอร์ต สำหรับการตรวจสอบพอร์ตด้วยตนเอง (ป้อนพอร์ตข้อความค้นหาด้วยตนเอง) แล้วคลิกปุ่ม ข้อความค้นหา

รหัสส่งคืนที่เป็นไปได้ใน PortQueryUI (เน้นในภาพหน้าจอ):

  • 0 (0x00000000) - สร้างการเชื่อมต่อสำเร็จและพอร์ตพร้อมใช้งาน

  • 1 (0x00000001) - พอร์ตที่ระบุไม่พร้อมใช้งานหรือถูกกรอง

  • 2 (0x00000002 - รหัสส่งคืนปกติเมื่อตรวจสอบความพร้อมใช้งานของการเชื่อมต่อ UDP เนื่องจากไม่มีการตอบกลับ ACK

บทความที่เกี่ยวข้อง