Фильтровать по процессу / PID в Wireshark - PullRequest
104 голосов
/ 27 августа 2009

Есть ли способ фильтрации / отслеживания потока TCP / SSL на основе определенного идентификатора процесса с использованием Wireshark ?

Ответы [ 10 ]

85 голосов
/ 04 мая 2010

На всякий случай, если вы ищете альтернативный способ, и среда, которую вы используете, - Windows, Network Monitor от Microsoft 3.3 - хороший выбор. У него есть столбец с именем процесса. Вы можете легко добавить его в фильтр с помощью контекстного меню и применить фильтр. Как обычно, графический интерфейс очень интуитивно понятен ...

51 голосов
/ 27 августа 2009

Не понимаю как. PID не попадает на провод (вообще говоря), плюс Wireshark позволяет вам посмотреть, что находится на проводе - потенциально все машины, которые обмениваются данными через провод. В любом случае, идентификаторы процессов не являются уникальными на разных компьютерах.

14 голосов
/ 27 августа 2009

Можно сопоставить номера портов от wireshark до номеров портов, скажем, netstat , который сообщит вам PID процесса, прослушивающего этот порт.

11 голосов
/ 12 августа 2016

Использовать Microsoft Message Analyzer v1.4

Перейдите к ProcessId из окна выбора поля.

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

Щелкните правой кнопкой мыши и Добавить в столбец

3 голосов
/ 19 ноября 2013

Это важная вещь, которую нужно иметь для мониторинга, к которому пытаются подключиться определенные процессы, и, похоже, в Linux нет удобного способа сделать это. Однако возможны несколько обходных путей, и поэтому я считаю, что стоит упомянуть их.

Существует программа под названием nonet , которая позволяет запускать программу без доступа к Интернету (в моей системе установлено большинство программ запуска программ). Он использует setguid для запуска процесса в группе nonet и устанавливает правило iptables для отказа от всех соединений из этой группы.

Обновление: теперь я использую еще более простую систему, вы можете легко иметь удобочитаемую конфигурацию iptables с помощью ferm, и просто использовать программу sg для запуска программы с определенной группой. Iptables также позволяет вам перенаправлять трафик, чтобы вы могли даже перенаправить его на отдельный интерфейс или локальный прокси-сервер через порт, который позволяет фильтровать в Wireshark или регистрировать пакеты непосредственно из iptables, если вы не хотите отключать весь интернет, пока вы проверяют трафик.

Не очень сложно адаптировать его для запуска программы в группе и сократить весь остальной трафик с помощью iptables на время выполнения, а затем вы можете захватывать трафик только из этого процесса.

Если я когда-нибудь найду это, я опубликую здесь ссылку.

С другой стороны, вы всегда можете запустить процесс на виртуальной машине и найти правильный интерфейс, чтобы изолировать соединения, которые он устанавливает, но это было бы довольно плохим решением ...

3 голосов
/ 28 декабря 2012

В Windows есть экспериментальная сборка, которая делает это, как описано в списке рассылки, Фильтр по имени локального процесса

1 голос
/ 22 января 2018

Если вы хотите следить за приложением, которое все еще должно быть запущено, тогда, безусловно, возможно:

  1. Установить докер (см. https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/)
  2. Откройте терминал и запустите крошечный контейнер: docker run -t -i ubuntu /bin/bash (замените «ubuntu» на ваш любимый дистрибутив, он не должен быть таким же, как в вашей реальной системе)
  3. Установите ваше приложение в контейнере так же, как вы установили бы его в реальной системе.
  4. Запустите Wireshark в вашей реальной системе, перейдите к «захвату»> параметров. В открывшемся окне вы увидите все ваши интерфейсы. Вместо выбора any, wlan0, eth0, ... выберите новый виртуальный интерфейс docker0.
  5. Начало захвата
  6. Запустите ваше приложение в контейнере

У вас могут возникнуть некоторые сомнения по поводу запуска вашего программного обеспечения в контейнере, поэтому вот ответы на вопросы, которые вы, вероятно, хотите задать:

  • Будет ли мое приложение работать в контейнере? Почти наверняка да, но вам может понадобиться немного узнать о докере, чтобы оно заработало
  • Разве мое приложение не будет работать медленно? Незначительно. Если ваша программа выполняет тяжелые вычисления в течение недели, то теперь это может занять неделю и 3 секунды
  • Что если мое программное обеспечение или что-то еще сломается в контейнере? Это хорошая вещь в контейнерах. Все, что работает внутри, может только сломать текущий контейнер и не повредить остальную часть системы.
0 голосов
/ 13 сентября 2016

Получить номер порта, используя netstat:

netstat -b

А затем используйте фильтр Wireshark:

tcp.port == portnumber
0 голосов
/ 08 апреля 2016

В некоторых случаях вы не можете фильтровать по идентификатору процесса. Например, в моем случае мне нужно было прослушивать трафик одного процесса. Но я нашел в его конфиге целевой IP-адрес машины, добавил фильтр ip.dst==someip и вуаля. В любом случае это не сработает, но для некоторых это полезно.

0 голосов
/ 04 мая 2013

Вы можете проверить номера портов с помощью следующих примеров команд на wireshark: -

tcp.port == 80

tcp.port == 14220

...