Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
usbrip — Отслеживание истории событий USB на GNU/Linux | Kitploit
Инструменты/GitHubGitHub/snovvcrash/usbrip
ФорензикаЦифровая криминалистикаРазведка угрозРеагирование на ИнцидентыАнализ ЖурналовArchived
GitHubsnovvcrash/usbrip

usbrip

Отслеживание истории событий USB на GNU/Linux

Репозиторий
1.2k1133 лет назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

logo.png


version.svg python.svg license.svg blackarch.svg built-with-love.svg

usbrip (унаследовано от «USB Ripper», не «USB R.I.P.») — это простой инструмент криминалистики с интерфейсом командной строки, позволяющий отслеживать артефакты USB-устройств (т.е. историю USB-событий) на машинах Linux.

Содержание:

  • Описание
  • Быстрый старт
  • Демонстрация
  • Структура системного журнала
  • Зависимости
    • deb
    • pip
  • Ручная установка
    • Git Clone
    • install.sh
      • Пути
      • Cron
      • uninstall.sh
  • Использование
    • Синопсис
    • Справка
  • Примеры
  • Благодарности и ссылки
  • График звёзд
  • Post Scriptum

Описание

usbrip — это небольшая программа, анализирующая данные журналов Linux: вывод journalctl или содержимое файлов /var/log/syslog* (или /var/log/messages*). На основе собранных данных usbrip может строить таблицы истории USB-событий со следующими столбцами:

  • Подключено (дата и время)
  • Хост
  • VID (идентификатор производителя)
  • PID (идентификатор продукта)
  • Продукт
  • Производитель
  • Серийный номер
  • Порт
  • Отключено (дата и время)

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

  • Экспортировать собранные данные в виде JSON-дампа для последующего использования.
  • Создать список авторизованных (доверенных) USB-устройств в виде JSON-файла (назовём его auth.json).
  • Искать «события нарушений» на основе auth.json: обнаруживать USB-устройства, которые присутствуют в истории и отсутствуют в файле auth.json.
  • *при установке с флагом -s* создавать защищённые хранилища (архивы 7-Zip) для автоматического резервного копирования и накопления USB-событий с помощью планировщика cron.
  • Искать дополнительную информацию о конкретном USB-устройстве по его VID и/или PID.

Быстрый старт

Способ 1. Установка через pip:

root@kitploit:~
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h

Способ 2. Установка последней версии с помощью install.sh (рекомендуется, доступны дополнительные функции):

root@kitploit:~
~$ sudo apt install python3-venv p7zip-full -y
~$ git clone https://github.com/snovvcrash/usbrip && cd usbrip
~/usbrip$ sudo -H installers/install.sh
~/usbrip$ cd
~$ usbrip -h

Демонстрация

showcase.png

Docker (*ТОЛЬКО ДЕМО!*)

root@kitploit:~
~$ docker run --rm -it snovvcrash/usbrip

Структура системного журнала

usbrip поддерживает два типа временных меток для анализа файлов системного журнала:

  1. Немодифицированные – стандартная структура syslog для GNU/Linux ("%b %d %H:%M:%S", например "Янв 1 00:00:00"). Этот тип меток не содержит информации о годе.
  2. Модифицированные (рекомендуется) – улучшенная структура syslog, обеспечивающая высокую точность временных меток, включая год ("%Y-%m-%dT%H:%M:%S.%f%z", например "1970-01-01T00:00:00.000000-00:00").

Если у вас установлен journalctl, то беспокоиться не о чем, так как он может конвертировать метки времени на лету. В противном случае желаемую структуру syslog можно получить, установив формат RSYSLOG_FileFormat в конфигурации rsyslog.

  1. Закомментируйте следующую строку в /etc/rsyslog.conf:
root@kitploit:~
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. Добавьте собственный .conf файл для usbrip:
root@kitploit:~
~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
  1. *необязательно* Удалите существующие файлы журналов:
root@kitploit:~
~$ sudo rm -f /var/log/syslog* /var/log/messages*
  1. Перезапустите службу:
root@kitploit:~
~$ sudo systemctl restart rsyslog

Сначала usbrip проверит, есть ли возможность сбросить системные события с помощью journalctl как наиболее портативный вариант. Если нет – он будет искать и обрабатывать файлы системных журналов /var/log/syslog* или /var/log/messages*.

Зависимости

deb

  • Интерпретатор python3.6 (или новее)
  • python3-venv
  • p7zip-full (используется модулем storage)

pip

  • terminaltables
  • termcolor
  • tqdm

Ручная установка

Git Clone

Для простоты договоримся, что все команды с префиксом ~/usbrip$ выполняются в каталоге ~/usbrip, который создаётся в результате git clone:

root@kitploit:~
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd

install.sh

Помимо установки через pip, usbrip можно установить с помощью пользовательского скрипта installers/install.sh.

При использовании install.sh становятся доступны некоторые дополнительные возможности:

  • Виртуальное окружение создаётся автоматически.
  • Вы можете использовать модуль storage – настроить задачу cron для резервного копирования USB-событий по расписанию (пример задачи cron можно найти в usbrip/cron/usbrip.cron).

⚠️ Предупреждение: если вы используете планировщик cron, настройте crontab с помощью sudo crontab -e, чтобы принудительно запускать подмодуль storage update от имени root. Пароли хранилищ находятся в /var/opt/usbrip/usbrip.ini и по умолчанию доступны только root.

Для установки usbrip с помощью install.sh используйте:

root@kitploit:~
~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip -h
  • При включённом ключе -l зависимости Python разрешаются из локальных .tar-пакетов (каталог 3rdPartyTools) вместо PyPI.
  • При включённом ключе -s устанавливается не только проект usbrip, но также создаются список доверенных USB-устройств, хранилища истории и нарушений.

После завершения установки каталог ~/usbrip можно удалить.

Пути

При установке с помощью install.sh usbrip использует следующие пути:

  • /opt/usbrip/ – основная директория проекта.
  • /var/opt/usbrip/log/ – журналы usbrip для cron.
  • /var/opt/usbrip/storage/ – хранилища USB-событий (history.7z и violations.7z, создаются в процессе установки).
  • /var/opt/usbrip/trusted/ – списки доверенных USB-устройств (auth.json, создаётся в процессе установки).
  • /var/opt/usbrip/usbrip.ini – конфигурационный файл usbrip (содержит пароли для хранилищ 7-Zip).
  • /usr/local/bin/usbrip – символическая ссылка на скрипт /opt/usbrip/venv/bin/usbrip.

Cron

Задачи cron можно настроить следующим образом:

root@kitploit:~
~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron

uninstall.sh

Скрипт installers/uninstall.sh удаляет usbrip и все артефакты установки из системы.

Для удаления usbrip используйте:

root@kitploit:~
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
  • При включённом ключе -a удаляется не только каталог проекта usbrip, но и все хранилища и журналы usbrip.

Не забудьте удалить задачу cron, если вы её настроили.

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

Синопсис

root@kitploit:~
# ---------- BANNER ----------

~$ usbrip banner
Get usbrip banner.

# ---------- EVENTS ----------

~$ usbrip events history [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Get USB event history.

~$ usbrip events open <DUMP.JSON> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Open USB event dump.

~$ sudo usbrip events genauth <OUT_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Generate a list of trusted (authorized) USB devices.

~$ sudo usbrip events violations <IN_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Get USB violation events based on the list of trusted devices.

# ---------- STORAGE ----------

~$ sudo usbrip storage list <STORAGE_TYPE> [-q] [--debug]
List contents of the selected storage. STORAGE_TYPE is either "history" or "violations".

~$ sudo usbrip storage open <STORAGE_TYPE> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Open selected storage. Behaves similarly to the EVENTS OPEN submodule.

~$ sudo usbrip storage update <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Update storage -- add USB events to the existing storage. COMPRESSION_LEVEL is a number in [0..9].

~$ sudo usbrip storage create <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Create storage -- create 7-Zip archive and add USB events to it according to the selected options.

~$ sudo usbrip storage passwd <STORAGE_TYPE> [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Change password of the existing storage.

# ---------- IDs ----------

~$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
Get extra details about a specific USB device by its <VID> and/or <PID> from the USB ID database.

~$ usbrip ids download [-q] [--debug]
Update (download) the USB ID database.

Справка

Чтобы получить список имён модулей, используйте:

root@kitploit:~
~$ usbrip -h

Чтобы получить список имён подмодулей для конкретного модуля, используйте:

root@kitploit:~
~$ usbrip <MODULE> -h

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

root@kitploit:~
~$ usbrip <MODULE> <SUBMODULE> -h

Примеры

  • Показать историю событий всех USB-устройств, подавив вывод баннера, информационных сообщений и взаимодействие с пользователем (-q, --quiet), в виде списка (-l, --list) с последними 100 записями (-n NUMBER, --number NUMBER):

    root@kitploit:~
    ~$ usbrip events history -ql -n 100
    
  • Показать историю событий внешних USB-устройств (-e, --external, которые были фактически отключены) в виде таблицы (-t, --table) со столбцами: Подключено, VID, PID, Отключено и Серийный номер (-c COLUMN [COLUMN ...], --column COLUMN [COLUMN ...]), отфильтрованных по дате (, ) и PID (), с логами, взятыми из внешних файлов (, ):

Благодарности и ссылки

  • usbrip / Инструменты Kali Linux
  • Как узнать, какие USB устройства подключались к Linux / HackWare.ru
  • usbrip: USB-форензика для Линуксов, или Как Алиса стала Евой / Форум информационной безопасности Codeby.net

13cubed.jpg

График звёзд

stargazers

Скачать инструмент
-d DATE [DATE ...]
--date DATE [DATE ...]
--pid <PID> [<PID> ...]
-f FILE [FILE ...]
--file FILE [FILE ...]
root@kitploit:~
~$ usbrip events history -et -c conn vid pid disconn serial -d '1995-09-15' '2018-07-01' --pid 1337 -f /var/log/syslog.1 /var/log/syslog.2.gz

👽 Примечание: есть одна вещь, которую нужно помнить при работе с фильтрами. Доступно 4 типа фильтрации: только внешние USB-события (устройства, которые легко извлечь, -e), по дате (-d), по полям (--host, --vid, --pid, --product, --manufact, --serial, --port) и по количеству записей, полученных в выводе (-n). При одновременном применении разных фильтров поведение будет следующим: сначала применяются фильтры внешних и по дате, затем usbrip будет искать указанные значения полей в пересечении двух последних фильтров, и в конце обрежет вывод до количества, заданного параметром -n. Так что думайте об этом как о пересечении для фильтров внешних и по дате и объединении для фильтров по полям. Надеюсь, это имеет смысл.

  • Построить историю событий всех USB-устройств и перенаправить вывод в файл для дальнейшего анализа. Когда выходной поток НЕ является терминалом stdout (| or > для примера), в выводе не будет ANSI-escape-символов (цветов), так что смело используйте этот способ. Также обратите внимание, что usbrip использует некоторые символы UNICODE, поэтому желательно преобразовать результирующий файл в кодировку UTF-8 (например, с помощью enconv), а также изменить символы перевода строки на стиль Windows для переносимости (например, с помощью awk):

    root@kitploit:~
    ~$ usbrip events history -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
    

    👽 Примечание: вы всегда можете избавиться от escape-символов самостоятельно, даже если вывод уже попал в stdout. Для этого скопируйте выходные данные в usbrip.out и примените ещё одну инструкцию awk:

    root@kitploit:~
    ~$ awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
    
  • Создать список доверенных USB-устройств в виде JSON-файла (trusted/auth.json) с атрибутами VID и PID, содержащего первые три устройства, подключённые 30 ноября 1984 года:

    root@kitploit:~
    ~$ sudo usbrip events genauth trusted/auth.json -a vid pid -n 3 -d '1984-11-30'
    

    ⚠️ Предупреждение: бывают случаи, когда разные USB-флешки могут иметь одинаковые серийные номера. Это может произойти из-за производственной ошибки или просто злоумышленники смогли перезаписать чип памяти устройства, который оказался не однократно программируемым и т.д. В любом случае, «нет безопасных систем». usbrip не обрабатывает такие случаи интеллектуальным образом на данный момент, а именно: он будет рассматривать пару устройств с одинаковыми SN (если таковые есть) как одно и то же устройство в отношении списка доверенных устройств и модуля genauth.

  • Найти в истории событий внешних USB-устройств нарушения на основе списка доверенных USB-устройств (trusted/auth.json) по атрибуту PID, ограничить результирующие события теми, у которых хост Bob-PC, производитель EvilUSBManufacturer, серийный номер 0123456789, и представить вывод в виде таблицы со столбцами Connected, VID и PID:

    root@kitploit:~
    ~$ sudo usbrip events violations trusted/auth.json -a pid -et --host Bob-PC --manufact EvilUSBManufacturer --serial 0123456789 -c conn vid pid
    
  • Найти подробную информацию о конкретном USB-устройстве по его VID (--vid VID) и PID (--pid PID):

    root@kitploit:~
    ~$ usbrip ids search --vid 0781 --pid 5580
    
  • Загрузить последнюю версию базы данных usb.ids:

    root@kitploit:~
    ~$ usbrip ids download