usbrip


Описание usbrip

Простой криминалистический инструмент с интерфейсом командной строки для отслеживания артефактов USB-устройств (истории USB-событий) в GNU/Linux (например, историю событий USB, события «Подключён» и «Отключён») на Linux машинах.

Программа для получения информация анализирует журналы /var/log/syslog* или /var/log/messages* (в зависимости от дистрибутива). Извлечённые данные она оформляет в удобные для восприятия таблицы с историей событий USB. Такие таблицы могут содержать следующие столбцы: «Подключено» (дата и время), «Пользователь», «VID» (идентификатор поставщика), «PID» (идентификатор продукта), «Продукт», «Производитель», «Серийный номер», «Порт» и «Отключён» (дата и время).

Кроме того, он также может:

  • экспортировать собранную информацию как дамп JSON (и открывать такие дампы);
  • генерировать список авторизованных (доверенных) USB-устройств в виде JSON (назовите его auth.json);
  • искать «событий нарушения» на основе auth.json: показать (или сгенерировать другой JSON) с USB-устройствами, которые появляются в истории и НЕ содержатся в auth.json;
  • если установка выполнена с флагом -s, создавать зашифрованные хранилища (7zip-архивы) для автоматического резервного копирования и накопления событий USB с помощью планировщика crontab;
  • поиск дополнительных сведений о конкретном USB-устройстве по его VID и/или PID.

Домашняя страница: https://github.com/snovvcrash/usbrip

Автор: Sam Freeside

Лицензия: GPLv3

Справка по usbrip

Имеется три значимых команды:

  • events - вывод списка событий
  • storage - экспорт списка событий и работа с этими списками
  • ids - поиск производителя и типа устройств по их идентификаторам

Использование:

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

Опции:

позиционные аргументы:
  {banner,events,storage,ids}
    banner              показать банер программы
    events              работа с USB событиями
    storage             работа с сохранением USB событий
    ids                 работа с идентификаторами USB

опциональные аргументы:
  -h, --help            показать справку и выйти

Справка по команде events

Данная команда позволяет работать с событиями, у неё четыре подкоманды:


  • history — вывод списка событий на основе анализа журнала syslog
  • open — показ содержимого дампа событий
  • gen_auth — создание списка авторизованных устройств
  • violations — вывод список нарушений (подключение USB устройства, отсутствующего в списке авторизованных)

Использование:

usbrip events [-h] {history,open,gen_auth,violations} ...

Опции:

позиционные аргументы:
  {history,open,gen_auth,violations}
    history             показать историю событий USB
    open                открыть дамп событий USB
    gen_auth            генерация списка авторизованных устройств (JSON)
    violations          поиск по истории событий USB случаев нарушение (показать USB
                        устройства, которые появились в истории, но отсутствуют
                        в списке авторизованных устройств (JSON))

Подкоманда history

Использование:

usbrip events history [-h] [--debug] [-q] [-c КОЛОНКА [КОЛОНКА ...]] [-e]
                             [-n ЧИСЛО] [-d ДАТА [ДАТА ...]]
                             [--user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]] [--vid VID [VID ...]]
                             [--pid PID [PID ...]] [--prod PROD [PROD ...]]
                             [--manufact MANUFACT [MANUFACT ...]]
                             [--serial SERIAL [SERIAL ...]]
                             [--port PORT [PORT ...]] [-t | -l]
                             [-f ФАЙЛ [ФАЙЛ ...]]

Опции:

позиционные аргументы:
  -h, --help            показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  -c КОЛОНКА [КОЛОНКА ...], --column КОЛОНКА [КОЛОНКА ...]
                        столбцы для показа (опции: "conn", "user", "vid",
                        "pid", "prod", "manufact", "serial", "port",
                        "disconn")
  -e, --external        показать только те устройства, у которых есть дата "disconnect" (отключено)
  -n ЧИСЛО, --number ЧИСЛО
                        количество событий для показа
  -d ДАТА [ДАТА ...], --date ДАТА [ДАТА ...]
                        фильтровать по дате
  --user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]
                        поиск по пользователям
  --vid VID [VID ...]   поиск по VID
  --pid PID [PID ...]   поиск по PID
  --prod PROD [PROD ...]
                        поиск по продуктам
  --manufact MANUFACT [MANUFACT ...]
                        поиск по производителям
  --serial SERIAL [SERIAL ...]
                        поиск по серийному номеру
  --port PORT [PORT ...]
                        поиск по портам
  -t, --table           представить в виде таблицы (а не списка)
  -l, --list            представить в виде списка (а не таблицы)
  -f ФАЙЛ [ФАЙЛ ...], --file ФАЙЛ [ФАЙЛ ...]
                        проанализировать в качестве журнала указанный файл

Подкоманда open

Использование:

usbrip events open [-h] [--debug] [-q] [-c КОЛОНКА [КОЛОНКА ...]] [-e]
                          [-n ЧИСЛО] [-d ДАТА [ДАТА ...]]
                          [--user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]] [--vid VID [VID ...]]
                          [--pid PID [PID ...]] [--prod PROD [PROD ...]]
                          [--manufact MANUFACT [MANUFACT ...]]
                          [--serial SERIAL [SERIAL ...]]
                          [--port PORT [PORT ...]] [-t | -l]
                             [-f ФАЙЛ [ФАЙЛ ...]]
                          ввод

Опции:

позиционные аргументы:
  input                 путь до файла с дампом событий (JSON)

опциональные аргументы:
  -h, --help            показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  -c КОЛОНКА [КОЛОНКА ...], --column КОЛОНКА [КОЛОНКА ...]
                        столбцы для показа (опции: "conn", "user", "vid",
                        "pid", "prod", "manufact", "serial", "port",
                        "disconn")
  -e, --external        показать только те устройства, у которых есть дата "disconnect" (отключено)
  -n ЧИСЛО, --number ЧИСЛО
                        количество событий для показа
  -d ДАТА [ДАТА ...], --date ДАТА [ДАТА ...]
                        фильтровать по дате
  --user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]
                        поиск по пользователям
  --vid VID [VID ...]   поиск по VID
  --pid PID [PID ...]   поиск по PID
  --prod PROD [PROD ...]
                        поиск по продуктам
  --manufact MANUFACT [MANUFACT ...]
                        поиск по производителям
  --serial SERIAL [SERIAL ...]
                        поиск по серийному номеру
  --port PORT [PORT ...]
                        поиск по портам
  -t, --table           представить в виде таблицы (а не списка)
  -l, --list            представить в виде списка (а не таблицы)
  -f ФАЙЛ [ФАЙЛ ...], --file ФАЙЛ [ФАЙЛ ...]
                        проанализировать в качестве журнала указанный файл

Подкоманда gen_auth

Использование:

usbrip events gen_auth [-h] [--debug] [-q] [-e] [-n ЧИСЛО]
                              [-d ДАТА [ДАТА ...]] [--user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]]
                              [--vid VID [VID ...]] [--pid PID [PID ...]]
                              [--prod PROD [PROD ...]]
                              [--manufact MANUFACT [MANUFACT ...]]
                              [--serial SERIAL [SERIAL ...]]
                              [--port PORT [PORT ...]] [-f ФАЙЛ [ФАЙЛ ...]]
                              [-a АТРИБУТ [АТРИБУТ ...]]
                              вывод

Опции:

позиционные аргументы:
  output                путь до файла вывода со списком авторизованных устройств (JSON)

опциональные аргументы:
  -h, --help            показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  -e, --external        показать только те устройства, у которых есть дата "disconnect" (отключено)
  -n ЧИСЛО, --number ЧИСЛО
                        количество событий для показа
  -d ДАТА [ДАТА ...], --date ДАТА [ДАТА ...]
                        фильтровать по дате
  --user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]
                        поиск по пользователям
  --vid VID [VID ...]   поиск по VID
  --pid PID [PID ...]   поиск по PID
  --prod PROD [PROD ...]
                        поиск по продуктам
  --manufact MANUFACT [MANUFACT ...]
                        поиск по производителям
  --serial SERIAL [SERIAL ...]
                        поиск по серийному номеру
  --port PORT [PORT ...]
                        поиск по портам
  -f ФАЙЛ [ФАЙЛ ...], --file ФАЙЛ [ФАЙЛ ...]
                        проанализировать в качестве журнала указанный файл
  -a АТРИБУТЫ [АТРИБУТЫ ...], --attribute АТРИБУТЫ [АТРИБУТЫ ...]
                        атрибуты для включения в список авторизованных устройств
                        (опции: "vid", "pid", "prod", "manufact", "serial")

Подкоманда violations

Использование:

usbrip events violations [-h] [--debug] [-q] [-c КОЛОНКА [КОЛОНКА ...]]
                                [-e] [-n ЧИСЛО] [-d ДАТА [ДАТА ...]]
                                [--user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]] [--vid VID [VID ...]]
                                [--pid PID [PID ...]] [--prod PROD [PROD ...]]
                                [--manufact MANUFACT [MANUFACT ...]]
                                [--serial SERIAL [SERIAL ...]]
                                [--port PORT [PORT ...]] [-t | -l]
                                [-f ФАЙЛ [ФАЙЛ ...]]
                                [-a АТРИБУТ [АТРИБУТ ...]]
                                ввод

Опции:

позиционные аргументы:
  input                 путь до файла ввода со списком авторизованных устройств (JSON)

опциональные аргументы:
  -h, --help            показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  -c КОЛОНКА [КОЛОНКА ...], --column КОЛОНКА [КОЛОНКА ...]
                        столбцы для показа (опции: "conn", "user", "vid",
                        "pid", "prod", "manufact", "serial", "port",
                        "disconn")
  -e, --external        показать только те устройства, у которых есть дата "disconnect" (отключено)
  -n ЧИСЛО, --number ЧИСЛО
                        количество событий для показа
  -d ДАТА [ДАТА ...], --date ДАТА [ДАТА ...]
                        фильтровать по дате
  --user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]
                        поиск по пользователям
  --vid VID [VID ...]   поиск по VID
  --pid PID [PID ...]   поиск по PID
  --prod PROD [PROD ...]
                        поиск по продуктам
  --manufact MANUFACT [MANUFACT ...]
                        поиск по производителям
  --serial SERIAL [SERIAL ...]
                        поиск по серийному номеру
  --port PORT [PORT ...]
                        поиск по портам
  -t, --table           представить в виде таблицы (а не списка)
  -l, --list            представить в виде списка (а не таблицы)
  -f ФАЙЛ [ФАЙЛ ...], --file ФАЙЛ [ФАЙЛ ...]
                        проанализировать в качестве журнала указанный файл
  -a АТРИБУТЫ [АТРИБУТЫ ...], --attribute АТРИБУТЫ [АТРИБУТЫ ...]
                        атрибуты для использования в поиске при обнаружении USB
                        событий нарушения (опции: "vid", "pid", "prod",
                        "manufact", "serial")

Справка по команде storage

Работа с сохранениями, то есть экспортированными списками событий. Данная программа умеет выводить список имеющихся сохранений, создавать, открывать, обновлять их и устанавливать на них пароль.


Использование:

usbrip storage [-h] {list,open,update,create,passwd} ...

Опции:

позиционные аргументы:
  {list,open,update,create,passwd}
    list                вывод списка сохранений
    open                открыть сохранение
    update              обновить текущее сохранение
    create              создать первое сохранение истории/нарушений; путь
                        до сохранений "/var/opt/usbrip/storage"
    passwd              изменить пароль сохранения

опциональные аргументы:
  -h, --help            показать справку и выйти

Подкоманда list

Выводит список сохранений.

Использование:

usbrip storage list [-h] [--debug] [-q] тип_сохранения

Опции:

позиционные аргументы:
  storage_type  тип сохранения (опции: "history" (история), "violations" (нарушения))

опциональные аргументы:
  -h, --help    показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем

Подкоманда open

Использование:

usbrip storage open [-h] [--debug] [-q] [-c КОЛОНКА [КОЛОНКА ...]] [-e]
                           [-n ЧИСЛО] [-d ДАТА [ДАТА ...]]
                           [--user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]] [--vid VID [VID ...]]
                           [--pid PID [PID ...]] [--prod PROD [PROD ...]]
                           [--manufact MANUFACT [MANUFACT ...]]
                           [--serial SERIAL [SERIAL ...]]
                           [--port PORT [PORT ...]] [-t | -l]
                           тип сохранения

Опции:

позиционные аргументы:
  storage_type          тип сохранения (опции: "history" (история), "violations" (нарушения))

опциональные аргументы:
  -h, --help            показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  -c КОЛОНКА [КОЛОНКА ...], --column КОЛОНКА [КОЛОНКА ...]
                        столбцы для показа (опции: "conn", "user", "vid",
                        "pid", "prod", "manufact", "serial", "port",
                        "disconn")
  -e, --external        показать только те устройства, у которых есть дата "disconnect" (отключено)
  -n ЧИСЛО, --number ЧИСЛО
                        количество событий для показа
  -d ДАТА [ДАТА ...], --date ДАТА [ДАТА ...]
                        фильтровать по дате
  --user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]
                        поиск по пользователям
  --vid VID [VID ...]   поиск по VID
  --pid PID [PID ...]   поиск по PID
  --prod PROD [PROD ...]
                        поиск по продуктам
  --manufact MANUFACT [MANUFACT ...]
                        поиск по производителям
  --serial SERIAL [SERIAL ...]
                        поиск по серийному номеру
  --port PORT [PORT ...]
                        поиск по портам
  -t, --table           представить в виде таблицы (а не списка)
  -l, --list            представить в виде списка (а не таблицы)

Подкоманда update

Использование:

usbrip storage update [-h] [--debug] [-q] [--lvl УРОВЕНЬ] [-e] [-n ЧИСЛО]
                             [-d ДАТА [ДАТА ...]] [--user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]]
                             [--vid VID [VID ...]] [--pid PID [PID ...]]
                             [--prod PROD [PROD ...]]
                             [--manufact MANUFACT [MANUFACT ...]]
                             [--serial SERIAL [SERIAL ...]]
                             [--port PORT [PORT ...]]
                             [-a АТРИБУТ [АТРИБУТ ...]] [-i ВВОД]
                             тип_сохранения

Опции:

позиционные аргументы:
  storage_type          тип сохранения (options: "history" (история), "violations" (нарушения))

опциональные аргументы:
  -h, --help            показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  --lvl УРОВЕНЬ             уровень сжатия (с 0 до 9, по умолчанию 0 = без
                        сжатия)
  -e, --external        показать только те устройства, у которых есть дата "disconnect" (отключено)
  -n ЧИСЛО, --number ЧИСЛО
                        количество событий для показа
  -d ДАТА [ДАТА ...], --date ДАТА [ДАТА ...]
                        фильтровать по дате
  --user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]
                        поиск по пользователям
  --vid VID [VID ...]   поиск по VID
  --pid PID [PID ...]   поиск по PID
  --prod PROD [PROD ...]
                        поиск по продуктам
  --manufact MANUFACT [MANUFACT ...]
                        поиск по производителям
  --serial SERIAL [SERIAL ...]
                        поиск по серийному номеру
  --port PORT [PORT ...]
                        поиск по портам
  -a АТРИБУТЫ [АТРИБУТЫ ...], --attribute АТРИБУТЫ [АТРИБУТЫ ...]
                        атрибуты для использования в поиске при обнаружении USB
                        событий нарушения (опции: "vid", "pid", "prod",
                        "manufact", "serial")
  -i ВВОД, --input ВВОД
                        путь до файла ввода со списком авторизованных устройств (JSON)

Подкоманда create

Использование:

usbrip storage create [-h] [--debug] [-q] [--lvl УРОВЕНЬ] [-e] [-n ЧИСЛО]
                             [-d ДАТА [ДАТА ...]] [--user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]]
                             [--vid VID [VID ...]] [--pid PID [PID ...]]
                             [--prod PROD [PROD ...]]
                             [--manufact MANUFACT [MANUFACT ...]]
                             [--serial SERIAL [SERIAL ...]]
                             [--port PORT [PORT ...]]
                             [-a АТРИБУТ [АТРИБУТ ...]] [-i ВВОД]
                             тип_сохранения

Опции:

позиционные аргументы:
  storage_type          информация для сохранения (опции: "history" (история), "violations" нарушения)

опциональные аргументы:
  -h, --help            показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  --lvl УРОВЕНЬ             уровень сжатия (с 0 до 9, по умолчанию 0 = без
                        сжатия)
  -e, --external        показать только те устройства, у которых есть дата "disconnect" (отключено)
  -n ЧИСЛО, --number ЧИСЛО
                        количество событий для показа
  -d ДАТА [ДАТА ...], --date ДАТА [ДАТА ...]
                        фильтровать по дате
  --user ПОЛЬЗОВАТЕЛЬ [ПОЛЬЗОВАТЕЛЬ ...]
                        поиск по пользователям
  --vid VID [VID ...]   поиск по VID
  --pid PID [PID ...]   поиск по PID
  --prod PROD [PROD ...]
                        поиск по продуктам
  --manufact MANUFACT [MANUFACT ...]
                        поиск по производителям
  --serial SERIAL [SERIAL ...]
                        поиск по серийному номеру
  --port PORT [PORT ...]
                        поиск по портам
  -a АТРИБУТЫ [АТРИБУТЫ ...], --attribute АТРИБУТЫ [АТРИБУТЫ ...]
                        атрибуты для использования в поиске при обнаружении USB
                        событий нарушения (опции: "vid", "pid", "prod",
                        "manufact", "serial")
  -i ВВОД, --input ВВОД
                        путь до файла ввода со списком авторизованных устройств (JSON)

Подкоманда passwd

Использование:

usbrip storage passwd [-h] [--debug] [-q] [--lvl УРОВЕНЬ] тип_хранилища

Опции:

позиционные аргументы:
  storage_type  тип хранилища (опции: "history" (история), "violations" (нарушения))

опциональные аргументы:
  -h, --help    показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  --lvl УРОВЕНЬ             уровень сжатия (с 0 до 9, по умолчанию 0 = без
                        сжатия)

Справка по команде ids

Использование:


usbrip ids [-h] {search,download} ...

Опции:

позиционные аргументы:
  {search,download}
    search           поиск по VID и/или PID; путь до базы данных ids
                     "/opt/usbrip/venv/lib/python3.7/site-
                     packages/usbrip/usb_ids/usb.ids"
    download         загрузить/обновить базу данных; путь до базы данных id
                     "/opt/usbrip/venv/lib/python3.7/site-
                     packages/usbrip/usb_ids/usb.ids"

опциональные аргументы:
  -h, --help         показать справку и выйти

Подкоманда search

Использование:

usbrip ids search [-h] [--debug] [-q] [--vid VID] [--pid PID]
                         [--offline]

Опции:

позиционные аргументы:
  -h, --help    показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем
  --vid VID    ID вендора
  --pid PID    ID продукта
  --offline    офлайн режим (без загрузки/обновления базы данных)

Подкоманда download

Использование:

usbrip ids download [-h] [--debug] [-q]

Опции:

позиционные аргументы:
  -h, --help    показать справку и выйти
  --debug               режим отладки
  -q, --quiet           не выводить банер, некоторые информационные сообщения, время захвата
                        и взаимодействие с пользователем

Руководство по usbrip

Страница man отсутствует.

Примеры запуска usbrip

Показать историю подключения USB устройств к данной системе:

usbrip events history

Установка usbrip

Установка в Kali Linux

sudo apt install python3-venv p7zip-full -y
git clone https://github.com/snovvcrash/usbrip
cd usbrip/
chmod +x ./installers/install.sh
sudo -H ./installers/install.sh -s
cd
usbrip -h

Структура системных логов

usbrip (>= 2.1.4.post1) работает с модифицированными файлами системных журналов предоставляющих повышенную точность в метках времени, поэтому нужно включить формат времени "%Y-%m-%dT%H:%M:%S.%f%z" (например, "2019-08-09T06:15:49.655261-04:00") для обоих файлов /var/log/syslog* и /var/log/messages* и после этого их можно анализировать с помощью данного программного обеспечения.

Если вы используете rsyslog, то это можно сделать установив формат времени RSYSLOG_FileFormat.

Для этого откройте файл /etc/rsyslog.conf:

sudo gedit /etc/rsyslog.conf

Найдите там строку:

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

и закомментируйте её — поставьте в самом начале символ #.

Добавьте пользовательский файл .conf для usbrip. Это можно сделать командой:

echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf

Удалите существующие файлы журналов и перезапустите службу:

sudo rm -f /var/log/syslog* /var/log/messages*
sudo systemctl restart rsyslog

После этого собранные данные о подключённых USB устройства можно будет анализировать с помощью usbrip


Установка в BlackArch

Программа предустановлена в BlackArch.

sudo pip3 install termcolor terminaltables tqdm
sudo pacman -S usbrip
sudo usbrip ids download

Обратите внимание, что в Arch Linux служба syslog обычно отключена, поскольку имеется альтернативная служба.

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты usbrip

Инструкции по usbrip


Рекомендуется Вам:

Comments are Closed