Lọc theo quy trình / PID trong Wireshark


Câu trả lời:


58

Tôi không biết làm thế nào. PID không đi vào dây (nói chung), cộng với Wireshark cho phép bạn xem những gì trên dây - có khả năng là tất cả các máy đang giao tiếp qua dây. Dù sao thì ID quy trình không phải là duy nhất trên các máy khác nhau.


7
point..thats tốt những gì tôi nghĩ quá .. hãy để tôi chờ đợi một ngày trước khi bế mạc này, chỉ trong trường hợp có một ninja Wireshark ra có những người quản lý để làm điều này ..
Ryan Fernandes

30
Wireshark biết cổng nào đang được sử dụng và hệ điều hành biết PID của quá trình đang sử dụng cổng. Với các thay đổi mã, Wireshark có thể ánh xạ cổng sang PID. Có một số trường hợp mà điều này sẽ không thành công như khi Hệ điều hành phân bổ lại một cổng cho một ứng dụng khác ngay trước khi Wireshark truy vấn Hệ điều hành về PID cho một cổng. Vì vậy, đây sẽ không phải là bằng chứng đánh lừa và bằng chứng trục trặc nhưng nếu người dùng nhận thức được những hạn chế này, nó vẫn sẽ là một tính năng hữu ích.
Dojo

Tôi nói chỉ cần thêm mô-đun vào wirehark để lắng nghe việc đóng / mở cổng và ánh xạ PID tới cổng. Đồng bộ hóa điều đó với quy trình chính và bạn đã có một trình ánh xạ chuyển cổng đến quy trình hoàn hảo. Tuy nhiên, đọc lỗi từ nhận xét câu hỏi, mô-đun không đơn giản để tạo.
Vesper

Tôi nhớ lần đầu tiên tôi tải xuống wirehark, nó hiển thị cây quy trình và bạn có thể chọn một quy trình để theo dõi. Dunno khi tùy chọn này biến mất, nhưng nó vẫn ở đó.
Tomáš Zato - Phục hồi Monica

90

Chỉ trong trường hợp bạn đang tìm kiếm một cách thay thế và môi trường bạn sử dụng là Windows, thì Network Monitor 3.3 của Microsoft là một lựa chọn tốt. Nó có cột tên quy trình. Bạn dễ dàng thêm nó vào bộ lọc bằng menu ngữ cảnh và áp dụng bộ lọc .. Như thường lệ, GUI rất trực quan ...


10
Microsoft Network Monitor 3.4 có tại microsoft.com/en-us/download/details.aspx?id=4865
gt

39
Ngoài ra còn có Microsoft Message Analyzer về cơ bản là phiên bản Wireshark của Microsoft (và bộ xử lý Network Monitor như tôi hiểu), nhưng được tích hợp tốt hơn một chút. Trong trình chọn cột, bên dưới 'Etw' -> 'EtwProviderMsg' có một cột dành cho 'PID'. Nó hoạt động tốt!
Cameron

3
Đường dẫn chính xác là EtwProviderMsg -> EventRecord -> Header -> ProcessId
r590 17/02/17

Tôi vừa thử nó và Microsoft Message Analyzer là một phần mềm buồn tẻ! Gần như đã đưa hệ thống của tôi thu thập thông tin. Giao diện người dùng rất phản trực giác. Có ai đã tìm ra cách để xóa danh sách với dữ liệu thu thập được không? Tôi đã từ bỏ và gỡ cài đặt phần rác đó. (Tái bút. Thật tệ là các nhà phát triển Wireshark đã không thêm tính năng kết nối PID / Tên quy trình với một cổng trong bộ lọc. Điều này rất dễ thực hiện. Điều này có thể rất quan trọng để xem những gì đang xảy ra trong quá trình này trong quá trình khởi động. Như một cách giải quyết mà tôi có thể có được ý tưởng chung bằng cách sử dụng ProcMon từ SysInternals.)
c00000fd

1
Tôi vừa mới phát hiện ra Microsoft Message Analyzer gần đây và đó là một công cụ hữu ích! Làm thế nào có thể mà tôi chưa bao giờ nghe nói về nó. Vì vậy, đánh giá thấp. Nó có khả năng lọc tuyệt vời do tích hợp với Windows tốt hơn nhiều so với Wireshark. Tôi đã chuyển sang nó trên tất cả các máy chủ của công ty tôi trong vòng ~ 3 tháng làm việc hàng ngày. Cảm ơn @Cameron rất nhiều vì nhận xét của anh ấy / cô ấy dưới câu trả lời đó! :-)
Skipper

16

Bạn có thể so khớp số cổng từ wirehark cho đến số cổng từ netstat sẽ cho bạn biết PID của quá trình đang lắng nghe trên cổng đó.


12
tốt, sức mạnh này không work..the chương trình mở ra và đóng rất nhiều các cổng nội bộ và từ xa
Ryan Fernandes

11

Sử dụng Microsoft Message Analyzer v1.4

Điều hướng đến ProcessId từ trình chọn trường.

Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId

Nhấp chuột phải và thêm dưới dạng cột


1
Cảm ơn vì đã chỉ cho tôi hướng đi của việc này, đó chính xác là những gì tôi cần. FWIW, các "ProcMon" nhóm cấp cao nhất dường như chứa processID cùng, cũng như thông tin khác như tên quá trình, ParentId vv
Tobias J

3

Trên Windows có một bản dựng thử nghiệm thực hiện điều này, như được mô tả trên danh sách gửi thư, Lọc theo tên quy trình cục bộ


Điều đó có, trong Wireshark, thông báo "Bạn có thể so khớp số cổng từ wirehark cho đến số cổng từ netstat, ví dụ, netstat sẽ cho bạn biết PID của quá trình đang nghe trên cổng đó." nội dung từ bình luận của Tom Woolfrey, vì vậy nó (như thông báo lưu ý) phải tuân theo những hạn chế của cơ chế đó.

3

Đây là một điều quan trọng để có thể thực hiện để giám sát nơi các tiến trình nhất định cố gắng kết nối và có vẻ như không có bất kỳ cách nào thuận tiện để thực hiện việc này trên Linux. Tuy nhiên, có thể có một số cách giải quyết khác, và vì vậy tôi cảm thấy cần phải đề cập đến chúng.

Có một chương trình được gọi là nonet cho phép chạy một chương trình mà không cần truy cập Internet (tôi có hầu hết các trình khởi chạy chương trình trên hệ thống của mình được thiết lập với nó). Nó sử dụng setguid để chạy một tiến trình trong mạng nonet nhóm và đặt quy tắc iptables để từ chối tất cả các kết nối từ nhóm này.

Cập nhật: bây giờ tôi sử dụng một hệ thống thậm chí còn đơn giản hơn, bạn có thể dễ dàng có cấu hình iptables có thể đọc được với ferm và chỉ cần sử dụng chương trình sgđể chạy một chương trình với một nhóm cụ thể. Iptables cũng cảnh báo bạn định tuyến lại lưu lượng truy cập để bạn thậm chí có thể định tuyến nó đến một giao diện riêng biệt hoặc một proxy cục bộ trên một cổng. đang kiểm tra giao thông.

Không quá phức tạp để điều chỉnh nó để chạy một chương trình trong một nhóm và cắt tất cả lưu lượng khác với iptables trong suốt thời gian thực thi và sau đó bạn chỉ có thể nắm bắt lưu lượng từ quá trình này.

Nếu tôi bắt đầu viết nó, tôi sẽ đăng một liên kết ở đây.

Một lưu ý khác, bạn luôn có thể chạy một quy trình trong máy ảo và đánh hơi giao diện chính xác để cô lập các kết nối mà nó tạo ra, nhưng đó sẽ là một giải pháp khá kém ...


3

Nếu bạn muốn theo dõi một ứng dụng vẫn phải khởi động thì chắc chắn có thể:

  1. Cài đặt docker (xem https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/ )
  2. Mở một thiết bị đầu cuối và chạy một vùng chứa nhỏ: docker run -t -i ubuntu /bin/bash(thay đổi "ubuntu" thành bản phân phối yêu thích của bạn, điều này không cần phải giống như trong hệ thống thực của bạn)
  3. Cài đặt ứng dụng của bạn trong vùng chứa bằng cách sử dụng giống như cách bạn cài đặt nó trong hệ thống thực.
  4. Bắt đầu Wirehark trong hệ thống thực của bạn, đi tới chụp> tùy chọn. Trong cửa sổ mở ra, bạn sẽ thấy tất cả các giao diện của mình. Thay vì chọn any, wlan0, eth0, ... chọn giao diện ảo mới docker0để thay thế.
  5. Bắt đầu chụp
  6. Khởi động ứng dụng của bạn trong vùng chứa

Bạn có thể nghi ngờ về việc chạy phần mềm của mình trong vùng chứa, vì vậy đây là câu trả lời cho những câu hỏi bạn có thể muốn hỏi:

  • Ứng dụng của tôi có hoạt động bên trong vùng chứa không? Gần như chắc chắn là có, nhưng bạn có thể cần tìm hiểu một chút về docker để làm cho nó hoạt động
  • Ứng dụng của tôi sẽ chạy chậm chứ? Không đáng kể. Nếu chương trình của bạn là thứ chạy các phép tính nặng trong một tuần thì bây giờ có thể mất một tuần 3 giây
  • Điều gì sẽ xảy ra nếu phần mềm của tôi hoặc thứ gì đó khác bị hỏng trong vùng chứa? Đó là điều tốt đẹp về container. Bất cứ thứ gì đang chạy bên trong chỉ có thể phá vỡ vùng chứa hiện tại và không thể làm tổn thương phần còn lại của hệ thống.

0

Trong một số trường hợp, bạn không thể lọc theo id quy trình. Ví dụ, trong trường hợp của tôi, tôi cần đánh giá lưu lượng truy cập từ một quá trình. Nhưng tôi đã tìm thấy địa chỉ IP máy mục tiêu cấu hình của nó, đã thêm bộ lọc ip.dst==someipvà thì đấy. Nó sẽ không hoạt động trong mọi trường hợp, nhưng đối với một số người, nó hữu ích.


0

Nhận số cổng bằng cách sử dụng netstat:

netstat -b

Và sau đó sử dụng bộ lọc Wireshark:

tcp.port == portnumber

Tôi không chắc đây là một cách dễ hiểu. Nếu bạn có một máy chủ TCP đang lắng nghe trên một cổng nhưng chưa chặn việc xử lý TCP của hạt nhân, thì một trong hai hoặc cả hai hạt nhân hoặc ứng dụng của bạn có thể phản hồi trên cổng.
aeb0

0

Sử dụng stracephù hợp hơn cho tình huống này.

strace -f -e trace=network -s 10000 -p <PID>;

các tùy chọn -fđể theo dõi tất cả các quy trình đã phân nhánh, -e trace=netwrokđể chỉ lọc cuộc gọi hệ thống mạng và -shiển thị độ dài chuỗi lên đến 10000 ký tự.

Bạn cũng chỉ có thể theo dõi một số cuộc gọi nhất định như các thao tác gửi, gửi, đọc.

strace -f -e trace=send,recv,read -s 10000 -p <PID>;

-16

Bạn có thể kiểm tra số cổng bằng các ví dụ lệnh sau trên wirehark: -

tcp.port == 80

tcp.port == 14220

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.