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 обычно отключена, поскольку имеется альтернативная служба.
Информация об установке в другие операционные системы будет добавлена позже.
Comments are Closed