Wireshark usb windows 10

Введение в перехват USB команд с помощью Wireshark

Введение

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

Кратко о USB

USB является хост-ориентированной шиной с топологией многоуровневой звезды. На шине может присутствовать только один хост и до 127 устройств. Каждое устройство может иметь до 32 концевых точек (endpoint) — 16 на приём и 16 на передачу. Все передачи на шине инициирует только хост — устройство может передавать данные только тогда, когда хост запросит их.

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

Далее идет транспортный слой, который работает через каналы (pipe). Каналы делятся на:

  • потоковые, которые передают разные данные
  • каналы сообщений, которые используются для управления устройствами, в каждом устройстве минимум один такой канал.

Верхний уровень — это уровень протоколов приложения (или класса в USB терминах), например USB Mass Storage (флэшки) или Human Interface Devices (HID) — устройства для взаимодействия человека с компьютером.

На уровне программного обеспечения, минимальная неделимая единица – трансфер. По типам трансферы бывают следующие:

  • прерывания (interrupt) — передают данные по чуть-чуть в реальном времени, хост не должен тормозить, и эти события не должны потеряться
  • изохронные (isochronous) — работают также как и прерывания, но могут передавать больше данных и могут допускать их потерю, если это не критично
  • пакетные (bulk) — предназначены для больших объёмов
  • управляющие (control) — используются для управления устройствами, и только у них есть жёстко заданный формат запросов и ответов.

Для отправки сообщений устройству используются управляющие трансферы, так как они (единственные из всех) являются двунаправленными и ориентированы на обмен сообщениями, они состоят из 3-х фаз:

  1. Хост предает девайсу пакет с настройками (подобно заголовку сообщения)
  2. Далее передаются данные (аналогично телу сообщения), направление передачи зависит от настроек.
  3. Посылается подтверждение о корректной обработки сообщения, направление противоположно предыдущем из п. 2.

Таким образом для формирования трансфера хост должен знать адрес устройства, которому предназначен трансфер, а также тип, направление и номер концевой точки куда отправляется сообщение.

Пример перехвата USB трафика с Wireshark

Для перехвата USB траффика можно использовать популярный снифер Wireshark. Для Windows также необходимо установит USBPcap.

Запустить прехват можно выбрав соответствующий режим в wireshark:

Разберем подробней пример дампа:

Этот дамп содержит 2 части:

  1. Это подключение физического устройства в USB (пакеты 1-9);
  2. Отправка команд на переключение устройства в другой режим (пакеты 9-16).

Схематично взаимодействие будет выглядеть так:

Как видно из примера взаимодействие с портом USB очень похоже на взаимодействие по сети. Хост всегда отправляет команду, а устройство подтверждает ее получение.

Наибольший интерес вызывают пакеты 9-16, так как видно что это контрольные трансферы (URB_CONTROL) а значит именно с их помощью происходит управление устройствам.

Итак первая команда (пакет 9) отправляет какую-то команду на устройство. Об этом свидетельствует префикс out, так как команды всегда идут от хоста, то перфикс задает напрваление относительно него.

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

Следующий код запрашивает состояние устройства:

Затем отправляется еще одна команда с данными (пакет 13) и еще раз читает состояние (пакет 13), после чего можно заметить что девайс переподключился (пакет 17-18).

Реализация перехваченной функциональности

После анализа дампа понятно какие команды нужно отправить на устройство для воспроизведения работы анализируемого ПО.

Для простоты воспроизведем эти команды с помощью пакета PyUSB.

Скрипт будет выглядеть так:

Также важно отметить что команды отправляются не функцией write как описано в документации, а функцией ctrl_transfer , которая как раз отвечает за работу с контрольными трансферами.

Заключение

По сути анализ работы по USB дампам не сильно отличается от анализа сетевого трафика и если у вас есть минимальный опыт работы c wireshark то вы сможете без проблем разобраться с базовыми вещами не требующими глубокого понимания.

Как пользоваться Wireshark под Windows

Содержание

Какой наиболее мощный инструмент для захвата и анализа интернет трафика на сегодняшний день? Ответ прост – программа Wireshark. Она способна перехватывать не только исходящие TCP пакеты, но и входящие. Такой инструмент состоит на вооружении многих профессионалов. Да и хакеры не гнушаются его использовать. Возможности программы безграничны. С ее помощью можно вытащить любой файл из пакета, просмотреть его и проверить. Главный вопрос состоит в том, как это сделать. В этом мы и попробуем разобраться.

Читайте также:  Не работает команда chkdsk windows 10

Что такое Wireshark

Сия утилита предназначена для контроля интернет трафика. Она перехватывает TCP пакеты, которые были приняты компьютером или посланы с него. Функционал программы настолько богат, что простым перехватом дело не ограничивается. Можно просматривать содержимое пакетов, искать ошибки и так далее. Кроме того, с помощью WS можно вытащить из пакетов практически любой файл и просмотреть его. Чтобы лучше понять, что это за программа, нужно выделить ее основные преимущества. Итак, плюсы:

  • кроссплатформенность (есть версии для Linux, Mac, Unix);
  • утилита совершенно бесплатна;
  • обладает широким функционалом;
  • гибкость настройки;
  • возможность фильтрации трафика;
  • создание собственных фильтров;
  • перехват пакетов в реальном времени.

Преимуществ у данной утилиты действительно много. А вот недостатков как таковых нет вообще. Недаром Wireshark считается лучшей в своем роде для захвата и анализа TCP пакетов. Теперь нужно немного разобраться в самой программе.

Установка и настройка

Скачать Wireshark можно с официального сайта разработчика. Программа совершенно бесплатна. Стоит обратить внимание на то, что последняя версия (2.0.5) не работает с Wi-Fi адаптерами. Поэтому, если вам нужно анализировать трафик беспроводного соединения, следует скачать более старую версию.

Установка утилиты стандартна и не вызовет никаких проблем даже у новичков. В инсталляторе все понятно, хоть он и на английском. Кстати, Wireshark на русском языке в природе не существует, поэтому для того, чтобы успешно справляться с этим софтом придется напрячь память и вспомнить английский. В принципе, для простого захвата и просмотра TCP пакетов ничего сверхъестественного не понадобится. Хватит и школьного уровня английского.

Итак, первое, что мы видим после запуска установленной программы – главное окно. Для неподготовленного пользователя оно может показаться непонятным и страшным.

Ничего страшного в нем нет. В этом вы сейчас убедитесь. Для начала работы нужно сначала выбрать источник, из которого будет производиться захват TCP пакетов. Перехват может осуществляться как с Ethernet подключения, так и с WLAN адаптера. В качестве примера рассмотрим вариант с WLAN. Для настройки нужно зайти в пункт «Capture», подпункт «Options». В открывшемся окне следует выбрать ваш беспроводной адаптер и отметить его галочкой. Для начала захвата трафика достаточно нажать кнопку «Start».

После нажатия «Start» начнется анализ и захват пакетов. В окне появится много непонятных букв и цифр. Некоторые из пакетов имеют собственную цветовую маркировку. Для того, чтобы хоть что-то понять, нужно определить какой цвет к чему относится. Зеленый – TCP трафик, темно-синий – DNS, светло-синий – UDP и черный – пакеты TCP с ошибками. Теперь разобраться в этой горе данных проще.

Для остановки процесса перехвата достаточно нажать кнопку «Stop», которая помечена красным прямоугольником. Теперь можно выбрать интересующий вас пакет и просмотреть его. Для этого нужно щелкнуть по пакету правой клавишей мыши и в появившемся меню выбрать пункт «Show packet in new window». Тут же появится куча непонятных букв и цифр.

Но при углубленном изучении представленной информации можно понять, откуда и куда шел пакет и из чего он состоял. Для того чтобы просмотреть данные о TCP пакетах позднее, нужно использовать функцию сохранения захваченной информации. Она находится в пункте меню «File», подпункт «Save as». Потом можно будет загрузить информацию из файла и спокойно просмотреть ее.

Использование фильтров

Для отображения только той информации, которая вас интересует можно заставить Wireshark использовать фильтры и отсекать ненужный трафик. Инструкция по тонкой настройке фильтров находится в Сети, а мы пока рассмотрим только один пример. Допустим, вас интересуют только TCP пакеты. Для того, чтобы программа отображала только их, следует зайти в пункт меню «Capture», подпункт «Capture filters», выбрать пункт «TCP Only» и нажать кнопку «OK».

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

Заключение

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

Читайте также:  Команда linux для подключения дисков

Видео

Wireshark для Windows

Оценка:
  • 1
  • 2
  • 3
  • 4
  • 5

4.41 /5 голосов — 46

Лицензия:Бесплатная
Версия:3.4.0 | Сообщить о новой версии
Обновлено:30.10.2020
ОС:Windows 10, 8.1, 8, 7, XP
Интерфейс:Английский
Разработчик:
Категории:Сканеры, сниферы — Мониторинг
Загрузок (сегодня/всего):8 / 77 033 | Статистика
Размер:53,81 Мб
СКАЧАТЬ

Wireshark — бесплатный сниффер предназначенный для анализа трафика компьютерных сетей (Ethernet, FDDI, PPP, Token-Ring и других) в режиме реального времени, используя широковещательный режим сетевой карты.

Программа поддерживает различные сетевые протоколы, как например DNS, FDDI, ftp, HTTP, ICQ, IPV6, IPX, IRC, MAPI, MOUNT, NETBIOS, NFS, NNTP, POP, PPP, TCP, TELNET, X25 и позволяет досконально анализировать сетевые пакеты, отображая значение каждого поля протокола любого уровня.

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

Advanced IP Scanner — Это быстрый, надежный и простой в использовании сканер локальных сетей (LAN) для.

XSpider — сетевой сканер безопасности. Программное средство сетевого аудита, предназначенное для поиска уязвимостей на серверах и рабочих станциях.

LANScope — бесплатная утилита, с помощью которой можно легко и быстро определить доступность.

Nmap — Самый популярный сканер портов. Использовался в фильме «Матрица: Перезагрузка» при реальном взломе компьютера.

Wireshark — утилита для детального анализа сетевых пакетов локальных сетей в реальном времени.

Free IP scanner — сканер портов и IP-адресов. Предназначен как системным администраторам, так и обычным пользователям для мониторинга и управления своими сетями.

Отзывы о программе Wireshark

с супер деревни про Wireshark 1.12.4 [07-03-2015]

Хорошая программа для анализа трафика.
16 | 6 | Ответить

CaptureSetup / USB

USB capture setup

This page is about capturing raw USB traffic, e.g. the packets a USB mouse will generate on the Universal Serial Bus.

Table of contents

USB attached network interfaces

A special case are network interfaces connected to a host computer through an USB cable. The operating system «converts» the raw USB packets into the network traffic (e.g. Ethernet packets) and provides a network interface that looks like an ordinary network interface. So you can capture from:

  • the USB device for raw USB traffic (if supported)
  • the network device for «normal» network packets

The USB bus will add additional overhead, so the raw USB traffic will have higher volume than the network traffic, even if the only active USB devices on the system are network adapters. (If there are other active USB devices, the raw USB traffic will include traffic to and from those devices, so it will obviously have higher volume than Ethernet traffic.)

Linux

Capturing USB traffic on Linux is possible since Wireshark 1.2.0, libpcap 1.0.0, and Linux 2.6.11, using the Linux usbmon interface.

First, check if you belong to the wireshark group with:

To add yourself to the wireshark group, run the below command, then logout and login.

sudo adduser $USER wireshark

Then ensure that non-superusers are allowed to capture packets in wireshark. Select in the below prompt:

sudo dpkg-reconfigure wireshark-common

The next two commands may need to be re-run after every reboot:

To dump USB traffic on Linux, you need the usbmon kernel module. If it is not loaded yet, run this command as root:

To give regular users privileges, make the usbmonX device(s) readable:

sudo setfacl -m u:$USER:r /dev/usbmon*

On some Linux distributions (Arch Linux, Debian, Ubuntu, possibly others), the above command may not be necessary if you already belong to the wireshark group. See CaptureSetup/CapturePrivileges#Most_UNIXes.

With Linux kernels prior to 2.6.23, you will also need to run this command as root:

mount -t debugfs none /sys/kernel/debug

and, with those kernels, the usbmon mechanism’s protocol limits the total amount of data captured for each raw USB block to about 30 bytes. With a 2.6.23 or later kernel, and libpcap 1.1.0 and later, that size limitation is removed. Use uname -r to check your kernel version.

In libpcap 1.1.0 and later, the devices on which you can capture are named usbmonX, where X is the USB bus number. On Linux 2.6.22 and later, the special «usbmon0» interface receives a combined stream of events from all USB buses. In libpcap 1.0.x, the devices were named usbX.

Simple MITM hardware with Linux

If the USB host is a black-box device such as a game console and you cannot capture USB traffic on the host’s operating system, here are two DIY-projects that help you build a simple MITM device to intercept and relay USB messages on the USB cable.

is designed to intercept USB HID traffic. Originally made for the GIMX project (which lets you connect PC game controllers to the PS4 by converting the HID protocol messages). You will need a Linux computer to capture the HID messages and an Arduino-based USB dongle. Parts are cheap. If you don’t like soldering, you can buy ready-made «GIMX USB adapters» from the developer and from enthusiasts on eBay and elsewhere.

USBProxy

  • intercepts USB traffic with a standalone Beaglebone Black, which is reconfigured to act as a USB gadget emulating the device connected to the 2nd USB port. Unlike SerialUSB, this solution works with higher-speed non-HID USB traffic as well (within the hardware limitations of the Beaglebone device).

macOS

Capturing USB traffic on macOS is possible since Wireshark 2.4.0, libpcap 1.9.0, and macOS High Sierra, using the XHC20 interface.

In order to capture on that interface, you will first have to run the command

as root, for example by running

sudo ifconfig XHC20 up

Windows

You can capture raw USB traffic on Windows with USBPcap. The Tools page lists some other options for Windows USB capture.

A word of warning about USBPcap

There have been problems with using USBPcap in the past, and while these problems should be resolved now, you may wish to familiarize yourself with these earlier problems, in the event you are still affected by it.

Wireshark Bug 11766 — USBPcap prevents mouse and keyboard from working

USBPcap Issue #3 — Windows 7 — USB bus not recognized after restart after USBPcap installation

Microsoft Security Advisory 3033929 — Availability of SHA-2 Code Signing Support for Windows 7 and Windows Server 2008 R2

You can also capture and debug USB traffic on a virtual Windows machine under VirtualBox. In some ways this is more convenient than working with a separate Windows box.

In this example, an embedded Linux device running g_ether (RNDIS ethernet gadget) connects to Windows. e.g. an NSLU2 with a USB slave modification http://www.nslu2-linux.org/wiki/HowTo/AddDeviceSideUSBPort but it should work for almost any USB device.

With this method, Linux recognises the USB device (i.e. >lsusb will still show them), but VirtualBox hooks it into Windows but Wireshark on linux still gets to snoop on all the packets.

1. Install a VirtualBox Windows guest on your Linux host. Start up the virtual Windows session.

2. Plug-in the embedded slave device via a USB cable, which itself should be either a device Windows already knows about (or in this case it was running a valid g_ether gadget stack and needed a .inf file)

3. Run >lsusb and take a note of which bus the device connects.

  • e.g
  • «Bus 003 Device 003: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget»

4. On linux side,run >ifconfig usb0 down — this prevents both the linux system and the windows system from fighting over the device

5. On the Windows virtual machine, on VirtualBox menus click the checkbox

[Devices]->Usb devices>[x]Your device

  • to let windows see the USB device.
  • 6. Now Windows should recognise the device and proceed with the «plug-and-pray» session for driver initialisation.

    7. In this example, I had to set up the networking options for IP address, Gateway etc on Windows to match the IP network on the gadget but for other USB device types there will be no extra setup. In any case this is just normal Windows behavior.

    8. On Linux, startup Wireshark and using the Bus number given earlier from >lsusb command to sniff for packets.

    Hints for developing something like a Windows native «USBPcap»: a kernel mode filter device driver has to be written. An older Driver Development Kit (DDK) is available which at least can compile kernel mode binaries. The most important functions to install the filter driver are CreateService() and SetupDiSetDeviceRegistryProperty() function with SPDRP_LOWERFILTERS parameter.

    Discussion

    Why was the note about inaccurate time stamps removed. — UlfLamping

    The timestamps should be ok now since libpcap works around the issue by explicitly calling gettimeofday()- ronnie

    Well, the inaccuracies I had in mind was about the «delta» involved between the data is received from the USB device and actually timestamped from the kernel. This delta will be substantially lower for e.g. PCI based nic’s than for USB ones — and should be mentioned. Or am I just wrong on this topic and this can be ignored — which should be mentioned then too? — UlfLamping

    There’s «capturing on USB-attached networking interfaces» and there’s «capturing USB traffic»; this page is for the latter, but it sounds as if the time stamp delta is an issue for the former. — Guy Harris

    Оцените статью