การใช้ 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 135TCP 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 UDPUDP 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




