Чи є спосіб фільтрувати / слідкувати за потоком TCP / SSL на основі конкретного ідентифікатора процесу за допомогою Wireshark ?
Чи є спосіб фільтрувати / слідкувати за потоком TCP / SSL на основі конкретного ідентифікатора процесу за допомогою Wireshark ?
Відповіді:
Я не бачу як. PID не робить його на дроті (загалом кажучи), плюс Wireshark дозволяє подивитися, що на дроті - можливо, всі машини, які спілкуються по дроту. Ідентифікатори процесів так чи інакше не відрізняються на різних машинах.
На всякий випадок, якщо ви шукаєте альтернативний спосіб і середовище, яке ви використовуєте, це Windows, Network Monitor 3.3 - це хороший вибір. У ньому стовпчик імені процесу. Ви можете легко додати його до фільтра за допомогою контекстного меню та застосувати фільтр. Як звичайно, графічний інтерфейс дуже інтуїтивно зрозумілий ...
Ви можете зіставити номери портів від провідного каналу до номерів портів, скажімо, netstat, який повідомить вам PID процесу прослуховування на цьому порту.
Використовуйте Microsoft Message Analyzer v1.4
Перейдіть до ProcessId з вибору поля.
Etw
-> EtwProviderMsg
--> EventRecord
---> Header
----> ProcessId
Клацніть правою кнопкою миші та Додати як стовпець
У Windows існує експериментальна збірка, яка робить це, як описано у списку розсилки, Фільтр за місцевим іменем процесу
Це важлива річ, яку можна зробити для моніторингу, де певні процеси намагаються підключитися, і, здається, немає зручного способу зробити це в Linux. Однак можливі кілька обхідних шляхів, і тому я вважаю, що варто згадати їх.
Існує програма під назвою nonet, яка дозволяє запускати програму без доступу до Інтернету (у мене в більшості моїх програм запуску програм). Він використовує setguid для запуску процесу в груповому нонеті і встановлює правило iptables для відмови від усіх з'єднань з цієї групи.
Оновлення: на даний момент я використовую ще простішу систему, ви можете легко встановити читабельну конфігурацію iptables з ferm і просто використовувати програму sg
для запуску програми з певною групою. Iptables також дозволяє вам перенаправляти трафік, так що ви навіть можете перенаправити його на окремий інтерфейс або локальний проксі на порт, що дозволяє вам фільтрувати в провідній книзі або LOG пакети безпосередньо з iptables, якщо ви не хочете вимкнути весь Інтернет, поки ви перевіряють трафік.
Не дуже складно адаптувати її для запуску програми в групі та скоротити весь інший трафік за допомогою iptables протягом усього періоду виконання, і тоді ви могли захопити трафік лише з цього процесу.
Якщо я коли-небудь підійду до його написання, опублікую посилання тут.
З іншого боку, ви завжди можете запустити процес у віртуальній машині та обнюхати правильний інтерфейс, щоб ізолювати з'єднання, які він робить, але це було б зовсім неповноцінним рішенням ...
Якщо ви хочете перейти на додаток, який ще потрібно запустити, це, безумовно, можливо:
docker run -t -i ubuntu /bin/bash
(змініть "ubuntu" на улюблений дистрибутив, це не повинно бути таким, як у вашій реальній системі)any
, wlan0
, eth0
, ... вибрати новий віртуальний інтерфейс docker0
замість.У вас можуть виникнути сумніви щодо запуску програмного забезпечення в контейнері, тому ось відповіді на питання, які ви, ймовірно, хочете задати:
У деяких випадках ви не можете фільтрувати за ідентифікатором процесу. Наприклад, у моєму випадку мені потрібно було нюхати трафік з одного процесу. Але я знайшов в його конфігураційній цільовій машині IP-адресу, додав фільтр ip.dst==someip
і вуалу. У будь-якому випадку це не буде працювати, але для деяких це корисно.
Отримайте номер порту за допомогою netstat
:
netstat -b
А потім скористайтеся фільтром Wireshark:
tcp.port == portnumber
Використання strace
більше підходить для даної ситуації.
strace -f -e trace=network -s 10000 -p <PID>;
варіанти -f
також відстежувати всі розщеплені процеси, -e trace=netwrok
фільтрувати лише мережевий системний виклик та -s
відображати довжину рядка до 10000 знаків.
Ви також можете відстежувати лише певні дзвінки, такі як операції надсилання, повторної читання, читання.
strace -f -e trace=send,recv,read -s 10000 -p <PID>;