Có cách nào để lọc / theo dõi luồng TCP / SSL dựa trên một ID quy trình cụ thể bằng cách sử dụng Wireshark không?
Có cách nào để lọc / theo dõi luồng TCP / SSL dựa trên một ID quy trình cụ thể bằng cách sử dụng Wireshark không?
Câu trả lời:
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.
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 ...
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 đó.
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
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ộ
Đâ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 ...
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ể:
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)any
, wlan0
, eth0
, ... chọn giao diện ảo mới docker0
để thay thế.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:
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==someip
và 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.
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
Sử dụng strace
phù 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à -s
hiể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>;
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