Захватить сетевой трафик одного приложения?

Я ищу метод / hack / модуль ядра для захвата сетевого трафика PID и всех его вилок / дочерних процессов.

У меня есть приложения Firefox, которые открывают некоторые веб-страницы и начинают потоковое вещание с потоковой передачей Flash, WMV или любым другим потоковым протоколом, а также "простой" загрузкой img, js и другого "статического" контента.

Я заинтересован в захвате этого трафика и в конечном итоге изоляции этих потоков.

Wireshark не поддерживает захват с помощью идентификатора процесса, но я предполагаю, что это можно обойти (и это суть моего вопроса). Очевидно, что настройка полноценной виртуальной машины и запуск только firefox с wireshark в ней будут работать, но я гораздо больше удовлетворен более легким решением, возможно, основанным на chroot? в сочетании с модулем владельца iptables.

Поэтому идеи или комплексные решения будут с благодарностью.

-- РЕДАКТИРОВАТЬ:

Люди справедливо угадывают ОС, над которой я работаю: вопрос в основном направлен на ОС Linux, но если будет найдено работоспособное решение для Windows / OpenSolaris / MacOSX или любой другой разумно доступной для хакеров ОС, ответ будет принят.

4 ответа

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

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

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

В идеале вы могли бы выделить трафик Firefox, добавив другой IP-адрес к вашей машине и заставив Firefox использовать его при открытии исходящих соединений.

Это возможно, например, с OpenSSH:

ssh -b 192.0.2.64 [...]

Но я не смог найти какой-либо параметр командной строки или запись настроек для этого в Firefox.

Вместо этого вы можете использовать простой (локальный) HTTP-прокси, как tinyproxyснова с прокси, использующим уникальный IP-адрес для своего исходящего трафика. tinyproxy делает это с Bind установка в tinyproxy.confНапример:

Bind 192.0.2.64

Наконец, вы можете исследовать что-то более легкое, чем полная виртуальная машина. Ты упомянул iptables поэтому я предполагаю, что вы используете хост Linux; Есть несколько решений, таких как LXC и OpenVZ, которые могут добиться цели, если HTTP-прокси не подходит для вас.

Установите HTTPWatch на рабочий стол и нажмите "Запись", прежде чем начать просмотр.

Другие вопросы по тегам