Поиск по сайту:

Показать историю событий USB-устройств с помощью Usbrip в Linux

В этом руководстве объясняется, что такое программа Usbrip, как отслеживать сведения о подключенных или отключенных USB-устройствах, а также как показывать историю событий USB-устройств с помощью инструмента Usbrip в Linux.

Введение

В настоящее время широко распространены USB-устройства. Вам следует использовать множество устройств с разъемом USB, таких как флэш-накопитель, внешний диск, мышь, клавиатура, принтер, зарядное устройство для мобильного телефона, в течение всего дня, каждый день. Как и любые другие события, история USB-подключений также отслеживается ОС Linux. Всякий раз, когда вы подключаете или отключаете USB-устройство, история событий USB-устройств отслеживается и сохраняется в одном или нескольких из следующих файлов в вашей системе Linux:

  • /вар/журнал/dmesg
  • /var/log/daemon.log
  • /var/log/kern.log
  • /вар/журнал/системный журнал
  • /вар/журнал/сообщения

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

О Юсбрипе

Usbrip — это инструмент криминалистической командной строки для отслеживания истории всех подключений USB-устройств в Linux. Он анализирует данные журнала вашей системы с помощью команды journelctl или из файлов журналов, таких как /var/log/syslog и /var/log/messages и отображает собранную историю событий USB в стандартном формате вывода или в файле.

Программа usbrip отслеживает артефакты USB-устройств и перечисляет их в следующих столбцах:

  1. Подключено (дата и время)
  2. Хозяин
  3. VID (идентификатор поставщика)
  4. PID (идентификатор продукта)
  5. Продукт
  6. Производитель
  7. Серийный номер
  8. Порт
  9. Отключено» (дата и время)

Usbrip — это бесплатный инструмент с открытым исходным кодом, написанный на Python 3. Для тех, кому интересно: название Usbrip образовано от двух слов — USB и Ripper. Это не USB R.I.P.

Возможности Usbrip

Usbrip имеет несколько интересных функций. Я хотел бы отметить следующие три примечательные особенности.

1. Найдите несанкционированный доступ к USB-устройству.

Это основная цель инструмента Usbrip. Используя инструмент usbrip, мы можем доказать, что USB-устройство было подключено к определенной системе Linux конкретным пользователем в течение определенного интервала времени. В общем, мы можем использовать Usbrip в любых случаях, когда задействованы USB-устройства.

Как уже говорилось, вы можете экспортировать все данные USB-соединения в файл JSON. Почему мы сохраняем детали в файле JSON? Потому что мы можем легко найти любые «события нарушения». Например, мы могли бы создать файл, скажем, auth.json и сохранить в этом файле список авторизованных или доверенных USB-устройств.

Файл auth.json можно использовать для проверки того, какие USB-устройства были подключены и являются ли они авторизованными устройствами или нет. Таким образом можно узнать, не скопировал ли какой-то пользователь что-то из вашей системы без вашего разрешения.

Обратите внимание: если вы устанавливаете usbrip с помощью сценария установки, файл auth.json будет автоматически создан в папке /var/opt/usbrip/trusted/ в тот момент. установки. Вы также можете создать свой собственный в любом месте по вашему выбору.

2. Найдите сведения об устройстве USB.

Если вы хотите узнать подробности технических характеристик USB-устройства, вы можете легко получить их, используя его VID или PID. Usbbrip будет получать информацию о поставщиках, устройствах и интерфейсах из базы данных usb.ids, хранящейся по адресу http://www.linux-usb.org/.

3. Резервное копирование событий USB

Если вы вручную установили Usbrip с опцией -s (--storages), вы можете автоматически создавать резервные копии событий USB с помощью планировщика crontab.

Теперь давайте посмотрим, как установить и использовать Usbrip в Linux для сбора событий USB-подключения.

Установите Usbrip в Linux

Поскольку Usbrip написан на Python, мы можем установить его с помощью менеджера пакетов Pip.

pip install usbrip

Если вы установили usbrip с помощью pip, некоторые функции будут недоступны. Чтобы получить все функции, вам следует вручную установить usbrip, используя сценарий установки под названием install.sh.

Сначала убедитесь, что вы установили необходимые предварительные условия:

  • python3-venv
  • p7zip

В Debian, Ubuntu и их производных вы можете установить их, как показано ниже:

sudo apt install python3-venv p7zip-full

Git клонирует репозиторий usbrip:

git clone https://github.com/snovvcrash/usbrip.git usbrip

Приведенная выше команда клонирует содержимое репозитория usbrip и сохранит его в каталоге с именем «usbrip» в вашем текущем каталоге.

Перейдите в каталог usbrip:

cd usbrip

Сделайте скрипт установки исполняемым:

chmod +x ./installers/install.sh

И, наконец, установите его с помощью команды:

sudo -H ./installers/install.sh -s

Здесь мы использовали флаг -s для включения модуля хранения. Это позволит не только установить программу usbrip, но и создать список доверенных USB-устройств, хранилищ истории и нарушений. Запишите свой секретный пароль. Это может понадобиться вам позже.

После завершения установки вы можете удалить клонированный каталог:

cd
rm -r usbrip/

Показать историю событий USB-устройств с помощью Usbrip в Linux

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

1. Получение помощи

Чтобы просмотреть раздел справки программы Usbrip, просто запустите:

usbrip --help

Пример вывода:

usage: usbrip [-h] {banner,events,storage,ids} ...

positional arguments:
  {banner,events,storage,ids}
    banner              show tool banner
    events              work with USB events
    storage             work with USB event storage
    ids                 work with USB IDs

optional arguments:
  -h, --help            show this help message and exit

Как видите, существует четыре основных команды, а именно: banner, events, storage и ids.

Чтобы просмотреть список подкоманд для конкретной основной команды, выполните:

usbrip <command> --help

Пример:

usbrip events --help

Чтобы вывести список всех переключателей, связанных с определенной подкомандой, например events, выполните:

usbrip events genauth --help

2. Просмотр истории подключений USB-устройства.

Чтобы просмотреть историю подключений USB-устройств, запустите:

usbrip events history

Вам будет задан вопрос, хотите ли вы отображать историю событий USB в стандартном формате вывода или в файле JSON. Если вы хотите отобразить выходные данные, просто нажмите клавишу ВВОД (по умолчанию) или введите число 2, чтобы сохранить их в файле JSON.

Я использую вывод по умолчанию, поэтому получаю такой длинный вывод:

                   
         _     {{4}}    {v2.2.2-1}
 _ _ ___| |_ ___[e]___ 
| | |_ -| . |  _[n] . |
|___|___|___|_| [5]  _|
               x[1]_|   https://github.com/snovvcrash/usbrip
                       

[*] Started at 2021-03-27 14:28:31
[14:28:31] [INFO] Trying to run journalctl...
[14:29:10] [INFO] Successfully runned journalctl
[14:29:11] [INFO] Reading journalctl output
100%|█████████████████████████████| 912197/912197 [00:04<00:00, 188838.07line/s]
[?] How would you like your event history list to be generated?

    1. Terminal stdout
    2. JSON-file

[>] Please enter the number of your choice (default 1): 1
[14:29:48] [INFO] Preparing collected events
[14:29:48] [WARNING] Terminal window is too small to display table properly
[14:29:48] [WARNING] Representation: list

USB-History-Events
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2020-12-26 21:24:23
Host:           ostechnix
VID:            0cf3
PID:            3002
Product:        ∅
Manufacturer:   ∅
Serial Number:  ∅
Bus-Port:       1-1.4
Disconnected:   2020-12-26 21:24:24
.
.
.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 11:52:19
Host:           ostechnix
VID:            046d
PID:            c52b
Product:        USB Receiver
Manufacturer:   Logitech
Serial Number:  ∅
Bus-Port:       1-1.2
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[*] Shut down at 2021-03-27 14:29:48
[*] Time taken: 0:01:17.624936

Показать историю событий USB-устройств с помощью Usbrip

По умолчанию Usbrip отображает результат в формате табличного столбца. Поскольку мое окно терминала слишком мало для правильного отображения таблицы, выходные данные отображаются в формате списка. Если вы все равно хотите, чтобы Usbrip отображал результат в формате табличного столбца, добавьте флаг -t:

usbrip events history -t

Вы можете настроить вывод по своему вкусу. В следующем примере я использовал флаг -q/--quiet для подавления баннера и другой пользовательской информации, -l/--list для отображения вывода в формате списка и -n/--number для отображения определенного количества выходов.

usbrip events history -ql -n 2

Приведенная выше команда покажет только последние 2 события истории USB без баннера, информационного сообщения и запроса на взаимодействие с пользователем.

Пример вывода:

100%|█████████████████████████████| 912890/912890 [00:05<00:00, 159754.38line/s]

USB-History-Events
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 10:16:08
Host:           ostechnix
VID:            0cf3
PID:            3005
Product:        ∅
Manufacturer:   ∅
Serial Number:  ∅
Bus-Port:       1-1.4
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 11:52:19
Host:           ostechnix
VID:            046d
PID:            c52b
Product:        USB Receiver
Manufacturer:   Logitech
Serial Number:  ∅
Bus-Port:       1-1.2
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

3. Сохраните историю событий USB в файле.

Вместо отображения истории событий в стандартном выводе мы можем сохранить ее в файле формата JSON.

Для этого запустите команду для просмотра истории событий USB:

usbrip events history

Введите 2, когда вам будет предложено выбрать способ сохранения вывода. Вам снова будет предложено ввести местоположение имени выходного файла. Просто введите местоположение по вашему выбору или нажмите ENTER, чтобы сохранить его в файле по умолчанию с именем history.json в каталоге $HOME.

                      
         _     {{4}}    {v2.2.2-1}
 _ _ ___| |_ ___[3]___ 
| | |_ -| . |  _[N] . |
|___|___|___|_| [5]  _|
               x[1]_|   https://github.com/snovvcrash/usbrip
                       

[*] Started at 2021-03-29 11:49:40
[11:49:40] [INFO] Trying to run journalctl...
[11:49:41] [INFO] Successfully ran journalctl
[11:49:41] [INFO] Reading journalctl output
100%|███████████████████████████████| 15910/15910 [00:00<00:00, 235574.33line/s]
[?] How would you like your event history list to be generated?

    1. Terminal stdout
    2. JSON-file

[>] Please enter the number of your choice (default 1): 2
[>] Please enter the output file name (default is "history.json"): 
[11:49:46] [INFO] Generating event history list (JSON)
[11:49:46] [INFO] New event history list: "/home/ostechnix/history.json"
[*] Shut down at 2021-03-29 11:49:46
[*] Time taken: 0:00:05.852216

Вы можете просмотреть этот файл в любое время с помощью команды:

usbrip events open history.json

4. Показать историю событий внешних USB-устройств.

Чтобы показать историю подключений внешних устройств, используйте флаги -e, --external:

usbrip events history -q -e

Показать историю событий внешних USB-устройств

5. Показать историю событий USB за определенный период времени.

Мы можем использовать флаг -d, --date для просмотра истории событий USB-устройств за определенный период времени. Например, эта команда отображает историю событий, произошедших с января 2021 года по март 2021 года:

 $ usbrip events history -q -d '2021-01-01' '2021-03-29'

6. Показывайте только определенную информацию

Возможно, вас заинтересует просмотр конкретных событий USB-подключений. Например, следующая команда предоставит вам информацию только о столбцах, а именно: «Подключено», «Отключено», «Серийный номер» и «Название продукта»:

usbrip events history -q -c conn disconn serial prod -n 20

Показывать определенные события USB-устройства с помощью usbrip

Здесь опция -n 20 используется для отображения последних 20 записей.

7. Поиск сведений о конкретных USB-устройствах.

Возможно, вам будет интересно просмотреть историю событий конкретного устройства. Если да, вы можете использовать флаг --manufact для просмотра таких подробностей:

В следующем примере я отобразил 15 последних событий моего беспроводного приемника Logitech. Я также перечислил сведения только о четырех столбцах, а именно: «Подключено», «Отключено», «Последовательный порт» и «Продукт».

usbrip events history -q -c conn disconn serial prod --manufact Logitech -n 15

Просмотр истории событий конкретного USB-устройства

Аналогичным образом вы можете фильтровать события USB, комбинируя множество полей, таких как PID, VID, порт, имя хоста, серийный номер и т. д.

8. Создайте список доверенных USB-устройств.

Чтобы создать список авторизованных USB-устройств, используйте опцию authgen:

sudo usbrip events genauth ~/auth.json -a vid pid -n 10 -d '2021-03-29'

Эта команда создаст список доверенных USB-устройств в виде файла JSON с именем auth.json, содержащего первые 10 устройств, подключенных 29 марта 2021 г. Кроме того, этот файл будет содержать только сведения об атрибутах VID и PID. .

9. Поиск нарушений

Если вы хотите проверить наличие несанкционированного доступа к USB, просто найдите файл auth.json, который мы создали ранее.

sudo usbrip events violations ~/auth.json

Вы также можете фильтровать вывод по своему вкусу.

Пример:

sudo usbrip events violations ~/auth.json -a pid -et --host ostechnix --manufact Logitech --serial 0123456789 -c conn disconn

Эта команда выполнит поиск нарушений в истории событий внешних USB-устройств на основе списка доверенных USB-устройств (~/auth.json) по атрибуту «PID», ограничит результирующие события теми, у которых в качестве имени хоста указано «ostechnix», Logitech» в качестве производителя, «0123456789» в качестве серийного номера и отображать выходные данные в виде таблицы со столбцами «Подключено», «Отключено».

Если USB-устройство появляется в истории, но не отображается в файле auth.json, можно говорить о нарушении.

Более подробную информацию об использовании можно найти на странице проекта на GitHub, приведенной ниже.

Ресурс:

  • Репозиторий Usbrip на GitHub

Связанное чтение:

  • Как узнать использование пропускной способности USB-устройства в Linux

Статьи по данной тематике