Фильтровать по процессу /PID в Wireshark

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 6

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

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

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

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

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

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

Ответ 7

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

  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 секунды.
  • Что если мое программное обеспечение или что-то еще сломается в контейнере? Это хорошая вещь о контейнерах. Все, что работает внутри, может только сломать текущий контейнер и не повредить остальную часть системы.

Ответ 8

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

Ответ 9

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

netstat -b

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

tcp.port == portnumber

Ответ 10

Попробуйте Omnipeek. Это очень полезно в таких случаях, я могу отслеживать трафик только для конкретного приложения.

Ответ 11

Вы можете проверить номера портов с этими примерами команд на wirehark: -

tcp.port == 80

tcp.port == 14220