5

Я пытаюсь отслеживать USB-трафик с помощью Wireshark в Linux (Ubuntu). Если я запускаю Wireshark как обычный пользователь без прав root, интерфейсы шины USB не отображаются. Если я буду sudo wireshark , я вижу интерфейсы шины USB. Возможно, это лучше всего проиллюстрировать с помощью команды dumpcap для вывода списка доступных интерфейсов захвата:

~$dumpcap -D

1. eth0
2. any (Pseudo-device that captures on all interfaces)
3. lo

против

~$sudo dumpcap -D

1. eth0
2. usbmon1 (USB bus number 1)
3. usbmon2 (USB bus number 2)
4. usbmon3 (USB bus number 3)
5. usbmon4 (USB bus number 4)
6. usbmon5 (USB bus number 5)
7. usbmon6 (USB bus number 6)
8. usbmon7 (USB bus number 7)
9. usbmon8 (USB bus number 8)
10. any (Pseudo-device that captures on all interfaces)
11. lo

Есть ли способ, которым я могу настроить Wireshark, чтобы мне не нужно было работать от имени пользователя root, чтобы получить доступ к интерфейсам шины USB? Ранее я следовал руководству по настройке wireshark, чтобы мне не нужно было запускать его с правами root для просмотра интерфейсов Ethernet, поэтому мне интересно, нужно ли просто изменить разрешения для другого исполняемого файла, чтобы иметь возможность видеть USB интерфейсы без запуска от имени root ...

2 ответа2

6

Да, вам просто нужно добавить еще одну возможность в утилиту dumpcap. CAP_DAC_OVERRIDE дает возможность переопределить проверки прав доступа к файлам и позволяет dumpcap получать доступ к файлам, необходимым для захвата USB. Это не красивое решение, но гораздо лучше, чем запускать весь Wireshark от имени root. Поскольку вы уже сделали большую часть работы, вам просто нужно выполнить эту последнюю команду.

sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip CAP_DAC_OVERRIDE+eip' /usr /bin /dumpcap

Прочитайте ответ Эвана Хууса об этом сообщении об ошибке для получения дополнительной информации:

https://bugs.launchpad.net/ubuntu/+source/wireshark/+bug/893828

3

CAP_DAC_OVERRIDE, безусловно, даст Wireshark возможность перехватывать usb без полномочий root, но он также предоставляет доступ ко всему остальному. С точки зрения безопасности это не хорошо. Однако есть и другой способ. sudo chmod go+r /dev/usbmon* Это даст доступ только к USB-мониторингу. Это можно было бы уточнить, создав группу с именем wireshark, затем сделав следующее:

sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod g+s /usr/bin/dumpcap
sudo chgrp wireshark dev/usbmon*
sudo chmod g+r /dev/usbmon*

Это настроено так, что dumpcap имеет доступ к монитору USB и по-прежнему связан обычными ограничениями разрешений. Кроме того, программы, которые являются членами группы «wireshark», будут иметь такой доступ.

Для тех, кто не знает, dumpcap является основной рабочей программой для wireshark. Кроме того, до тех пор, пока не будут внесены дополнительные изменения конфигурации, /dev /usbmon * вернется к разрешениям по умолчанию при перезагрузке, отключив доступ к USB-мониторингу. Просто перезапустите sudo chmod g+r /dev/usbmon* чтобы включить. Изменения в разрешениях dumpcap сохранятся после перезагрузки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .