แยกแอปพลิเคชันและตรวจสอบว่ามีการส่งข้อมูลใดบนแพคเก็ตทางอินเทอร์เน็ต


18

ฉันไม่แน่ใจว่าคำถามประเภทนี้เหมาะสมที่นี่ดังนั้นโปรดยกโทษให้ฉันหากฉันผิด

นี่คือปัญหา: ฉันต้องการดูว่าโปรแกรมใดที่ส่งไปยังอินเทอร์เน็ตโดยเฉพาะ แต่สิ่งที่อยู่บนคอมพิวเตอร์นั้นมีแอปพลิเคชันและบริการมากมายที่ใช้อินเทอร์เน็ต ดังนั้นจึงเป็นไปไม่ได้ที่จะรู้ว่าแพ็กเก็ตใดที่ส่งโดยแอพที่ฉันสนใจ

วิธีหนึ่งคือพยายามปิดแอปพลิเคชันอื่น ๆ ทั้งหมด แต่ไม่สามารถทำได้

ดังนั้นมีวิธีแยกแอปพลิเคชันเฉพาะหรือไม่ ฉันกำลังทำงานบน windows7 และจับแพ็คเก็ตด้วย wireshark

คำตอบ:


13

เนื่องจากคุณกำลังใช้ Wireshark หมายเลขพอร์ตของคุณจะไม่ได้รับการแก้ไขโดยอัตโนมัติสำหรับชื่อแอปพลิเคชันดังนั้นคุณจะต้องทำอีกเล็กน้อยเพื่อปรับแต่งข้อมูลที่คุณกำลังมองหา ทุกแอปพลิเคชันที่ใช้ TCP / IP เพื่อสื่อสารข้ามเครือข่ายจะใช้พอร์ตเพื่อให้สแต็กเครือข่ายรู้ตำแหน่งที่จะส่งเซ็กเมนต์ไปที่ (ฉันชอบเรียกมันว่าที่อยู่แอปพลิเคชัน)

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

netstat -b

ที่บรรทัดรับคำสั่งจะให้รายการการเชื่อมต่อที่มีชื่อของไฟล์เรียกทำงานที่สร้างการเชื่อมต่อ แต่ละไฟล์ที่เรียกทำงานได้มีการเชื่อมต่อหนึ่งรายการขึ้นไปเป็น 127.0.0.1:xxxxx โดยที่ X คือหมายเลขพอร์ตโลคัลสำหรับการเชื่อมต่อ

ขณะนี้อยู่ใน wireshark คุณต้องบอกให้แสดงแพ็กเก็ตที่มาจากหรือถูกลิขิตมาที่พอร์ตนั้นโดยใช้ตัวกรองเหล่านี้ตั้งแต่หนึ่งตัวขึ้นไป:

tcp.port == xxxxx หรือ udp.port == xxxxx

เพิ่มส่วนเพิ่มเติมor tcp.port == xxxxxสำหรับแต่ละการเชื่อมต่อที่คุณต้องการแสดง

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

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

ip.addr == x.x.x.x

ปัญหาที่ใหญ่ที่สุดกับซ็อกเก็ต (ใช้พอร์ตที่ไม่ได้สำรอง) คือซ็อกเก็ตที่เปิดและปิดโดยแอปพลิเคชันนั้นมีความเคลื่อนไหวในลักษณะที่เป็นธรรมชาติมาก เมื่อคุณรันคำสั่ง netstat -b มันจะให้ผลลัพธ์ที่แตกต่างกัน u สำหรับแอปพลิเคชันที่แสดงรายการทั้งหมดแม้ว่าคุณจะรันในช่วงเวลา 5 วินาที ดังนั้นจึงเป็นเรื่องยากมากที่จะสังเกตเห็นหมายเลขพอร์ตทั้งหมดที่ได้รับการจัดสรรให้แอปพลิเคชันของฉัน ฉันสังเกตเหมือนกันสำหรับแอปพลิเคชันของฉันในเครื่องมือ "TCPView" (ชุด sysInternals) ฉันเห็นว่าในช่วงเวลา 10 วินาทีประมาณ 15 การเชื่อมต่อซ็อกเก็ต TCP ถูกเปิดโดยแอปพลิเคชันของฉันและหลายคนถูกฆ่าด้วย
RBT

1
นี่คือที่การตรวจสอบเครือข่ายของ Microsoft มีประโยชน์เพราะสามารถติดตามกระบวนการที่การสื่อสารเครือข่ายมาจากและจัดกลุ่มภายใต้กระบวนการนั้น อย่างไรก็ตามตั้งแต่นี้ถูกเขียนรุ่นใหญ่ที่สำคัญของ Wireshark ได้รับการปล่อยตัวออกมา อาจเป็นกรณีที่การจัดกลุ่มแบบนี้เป็นไปได้ด้วยการใช้ Wireshark แต่ฉันไม่ได้ใช้มาระยะหนึ่ง
john

7

หากคุณใช้การตรวจสอบกระบวนการจาก Microsoftคุณสามารถเปลี่ยนฟิลเตอร์เพื่อแสดงเฉพาะการสื่อสารเครือข่ายจากกระบวนการเฉพาะ มันไม่ได้ให้เนื้อหาของแพ็คเก็ตแก่คุณ แต่มันแสดงให้เห็นว่าโฮสต์กำลังใช้งานแอปอะไรอยู่


1
? เขาต้องการเห็นแพ็คเก็ต
Pacerier

1

Microsoft Network Monitor จะแสดงกระบวนการที่รับผิดชอบต่อการรับส่งข้อมูล


1

ฉันพบMicrosoft Message Analyzerมีประโยชน์อย่างมากสำหรับวัตถุประสงค์เดียวกัน จะช่วยให้การจับภาพการรับส่งข้อมูลเครือข่ายและรวมโดยต้นไม้กระบวนการ


0

ใช้ System Internals Process Monitor เพื่อรับหมายเลขแอปพลิเคชันและตรวจสอบเครื่องมือระบบภายในอื่น ๆ ที่:

https://docs.microsoft.com/en-us/sysinternals/

เปิด cmd.exe แล้วเรียกใช้แสดงตัวเลือกบรรทัดคำสั่ง netstat, netstat /? .

ตอนนี้ลอง netstat -bo 1 >> c: /test.log นี่จะช่วยให้คุณค้นหาข้อมูลการเชื่อมต่อเครือข่ายของแอปพลิเคชันเฉพาะของคุณในไฟล์ที่อัปเดตอย่างต่อเนื่อง

จำไว้ว่าคุณต้องหยุด netstat -bo >> c: /test.log ไม่ให้เขียนลงในบันทึกโดยป้อน ctl-C ในหน้าต่าง cmd


-2

เพียงแทนที่My_Applicationด้วยแอปพลิเคชันของคุณPNAMEหรือPID

netstat - โปรแกรม | grep "My_Application"

ฉันไม่ได้ทดสอบบน windows 7 แต่ใช้งานได้บน Linux

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.