Есть ли способ фильтровать/следовать TCP/SSL на основе конкретного идентификатора процесса с использованием Wireshark?
Фильтровать по процессу /PID в 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
Щелкните правой кнопкой мыши и добавьте в качестве столбца
Ответ 5
В Windows есть экспериментальная сборка, которая делает это, как описано в списке рассылки, Фильтровать по локальному имени процесса
Ответ 6
Это важная вещь, которую можно сделать для мониторинга, с которым некоторые процессы пытаются подключиться, и, похоже, нет никакого удобного способа сделать это в Linux. Однако возможны некоторые обходные пути, и поэтому я считаю, что их стоит упомянуть.
Существует программа под названием nonet, которая позволяет запускать программу без доступа в Интернет (у меня есть большинство программных пусковых установок в моей системе, настроенной с ней). Он использует setguid для запуска процесса в группе nonet и устанавливает правило iptables, чтобы отказаться от всех подключений из этой группы.
Обновление: теперь я использую еще более простую систему, вы можете легко иметь читаемую конфигурацию iptables с ferm и просто использовать программу sg
для запуска программы с определенной группой. Iptables также предлагает вам перенаправить трафик, чтобы вы могли даже перенаправить его на отдельный интерфейс или локальный прокси-сервер на порт, который позволяет вам фильтровать в wirehark или LOG-пакеты непосредственно из iptables, если вы не хотите отключать весь интернет, пока вы проверяют трафик.
Не очень сложно адаптировать его для запуска программы в группе и вырезать весь другой трафик с помощью iptables для времени выполнения, а затем вы можете захватить трафик только из этого процесса.
Если я когда-нибудь приступлю к написанию, я отправлю ссылку здесь.
С другой стороны, вы всегда можете запустить процесс на виртуальной машине и обнюхать правильный интерфейс, чтобы изолировать соединения, которые он делает, но это было бы неплохое решение...
Ответ 7
Если вы хотите следить за приложением, которое еще нужно запустить, то это, безусловно, возможно:
- Установите докер (см. Https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/).
- Откройте терминал и запустите крошечный контейнер:
docker run -t -i ubuntu/bin/bash
(измените "ubuntu" на ваш любимый дистрибутив, он не должен быть таким же, как в вашей реальной системе) - Установите ваше приложение в контейнере так же, как в реальной системе.
- Запустите wireshark в вашей реальной системе, перейдите к "захвату"> параметров. В открывшемся окне вы увидите все ваши интерфейсы. Вместо выбора
any
,wlan0
,eth0
,... вместо этого выберите новый виртуальный интерфейсdocker0
. - Начать захват
- Запустите ваше приложение в контейнере
У вас могут быть некоторые сомнения по поводу запуска вашего программного обеспечения в контейнере, поэтому вот ответы на вопросы, которые вы, вероятно, хотите задать:
- Будет ли мое приложение работать внутри контейнера? Почти наверняка да, но вам может понадобиться немного узнать о докере, чтобы он заработал
- Мое приложение не будет работать медленно? Незначительно. Если ваша программа выполняет тяжелые вычисления в течение недели, то теперь это может занять неделю и 3 секунды.
- Что если мое программное обеспечение или что-то еще сломается в контейнере? Это хорошая вещь о контейнерах. Все, что работает внутри, может только сломать текущий контейнер и не повредить остальную часть системы.
Ответ 8
В некоторых случаях вы не можете фильтровать по идентификатору процесса. Например, в моем случае мне нужно было обнюхать трафик от одного процесса. Но я нашел в его IP-адрес целевой целевой конфигурации, добавил фильтр ip.dst==someip
и вуаля. В любом случае это не сработает, но для некоторых это полезно.
Ответ 9
Получить номер порта, используя netstat
:
netstat -b
И затем используйте фильтр Wireshark:
tcp.port == portnumber
Ответ 10
Попробуйте Omnipeek. Это очень полезно в таких случаях, я могу отслеживать трафик только для конкретного приложения.
Ответ 11
Вы можете проверить номера портов с этими примерами команд на wirehark: -
tcp.port == 80
tcp.port == 14220