Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
usbrip — 追踪 GNU/Linux 上的 USB 事件历史 | Kitploit
工具/GitHubGitHub/snovvcrash/usbrip
取证分析数字取证威胁情报事件响应日志分析Archived
GitHubsnovvcrash/usbrip

usbrip

追踪 GNU/Linux 上的 USB 事件历史

查看仓库
1.2k11363年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

logo.png


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

usbrip(名称源自“USB Ripper”,而非“USB R.I.P.”)是一款简单的命令行取证工具,可让您跟踪 Linux 机器上的 USB 设备痕迹(即 USB 事件历史)。

目录:

  • 描述
  • 快速开始
  • 展示
  • 系统日志结构
  • 依赖项
    • deb
    • pip
  • 手动安装
    • Git Clone
    • install.sh
      • 路径
      • Cron
      • uninstall.sh
  • 用法
    • 概要
    • 帮助
  • 示例
  • 鸣谢与参考
  • 加星者图表
  • 后记

描述

usbrip 是一款小型软件,用于分析 Linux 日志数据:journalctl 输出或 /var/log/syslog*(或 /var/log/messages*)文件的内容。基于收集的数据,usbrip 可以构建 USB 事件历史表格,包含以下列:

  • 连接时间(日期与时间)
  • 主机
  • VID(供应商 ID)
  • PID(产品 ID)
  • 产品
  • 制造商
  • 序列号
  • 端口
  • 断开时间(日期与时间)

此外,它还可以:

  • 将收集的数据导出为 JSON 转储,供后续使用。
  • 生成授权(可信)USB 设备列表,保存为 JSON 文件(称为 auth.json)。
  • 基于 auth.json 搜索“违规事件”:发现那些出现在历史记录中但未出现在 auth.json 文件中的 USB 设备。
  • *当使用 -s 标志安装时* 创建受保护的存储(7-Zip 归档),以借助 cron 调度器自动备份和累积 USB 事件。
  • 根据 VID 和/或 PID 搜索特定 USB 设备的额外详细信息。

快速开始

方式 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. 未修改 – 标准 GNU/Linux syslog 结构("%b %d %H:%M:%S",例如 "Jan 1 00:00:00")。此类时间戳不提供年份信息。
  2. 已修改(推荐) – 更佳的 syslog 结构,提供包含年份的高精度时间戳("%Y-%m-%dT%H:%M:%S.%f%z",例如 "1970-01-01T00:00:00.000000-00:00")。

如果您已安装 journalctl,则无需担心,因为它可以动态转换时间戳。否则,可以通过在 rsyslog 配置中设置 RSYSLOG_FileFormat 格式来实现所需的 syslog 结构。

  1. 在 /etc/rsyslog.conf 中注释掉以下行:
root@kitploit:~
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. 为 usbrip 添加自定义 .conf 文件:
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 调度,则需要使用 sudo crontab -e 配置 crontab,以强制 storage update 子模块以 root 身份运行。存储密码保存在 /var/opt/usbrip/usbrip.ini 中,默认情况下仅 root 可访问。

要使用 install.sh 安装 usbrip,请运行:

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
获取 usbrip 横幅。

# ---------- 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]
获取 USB 事件历史。

~$ 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]
打开 USB 事件转储。

~$ 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]
生成受信任(授权)USB 设备列表。

~$ 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]
基于受信任设备列表获取 USB 违规事件。

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

~$ sudo usbrip storage list <STORAGE_TYPE> [-q] [--debug]
列出所选存储的内容。STORAGE_TYPE 为 "history" 或 "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]
打开所选存储。行为类似于 EVENTS OPEN 子模块。

~$ 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]
更新存储 – 将 USB 事件添加到现有存储中。COMPRESSION_LEVEL 为 [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]
创建存储 – 创建 7-Zip 归档,并根据所选选项将 USB 事件添加到其中。

~$ sudo usbrip storage passwd <STORAGE_TYPE> [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
更改现有存储的密码。

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

~$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
从 USB ID 数据库中获取特定 USB 设备(通过 <VID> 和/或 <PID>)的额外详细信息。

~$ usbrip ids download [-q] [--debug]
更新(下载)USB ID 数据库。

帮助

要获取模块名称列表,请使用:

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 ...]),按日期(-d DATE [DATE ...], )和 PID()过滤,日志取自外部文件(, ):

鸣谢与参考

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

13cubed.jpg

加星者图表

stargazers

下载工具
--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)。当同时应用不同过滤器时,您将得到以下行为:首先应用外部和按日期过滤器,然后在后两个过滤器的交集中搜索指定的字段值,最后将输出截断为您通过 -n 选项定义的数量。因此,可以将其视为外部和按日期过滤的交集,以及按字段过滤的并集。希望这说得通。

  • 构建所有 USB 设备的事件历史并将输出重定向到文件以供进一步分析。当输出流不是终端 stdout(例如使用 | 或 >)时,输出中不会出现 ANSI 转义字符(颜色),因此可以放心使用。另外请注意,usbrip 使用了一些 UNICODE 符号,因此最好将结果文件转换为 UTF-8 编码(例如使用 encov),并将换行符转换为 Windows 风格以保持可移植性(例如使用 awk):

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

    👽 注意: 即使您已经将输出发送到 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 属性,仅包含 1984 年 11 月 30 日插入的前三个设备:

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

    ⚠️ 警告: 有时不同 U 盘可能具有相同的序列号。这可能是由于制造错误或某些黑帽重写了驱动器的存储芯片(结果发现并非一次性可编程)等原因造成的。无论如何,“没有系统是安全的”。目前 usbrip 没有以智能方式处理此类情况,即它将具有相同 SN 的一对设备(如果存在)视为同一设备,在受信任设备列表和 genauth 模块中也是。

  • 基于受信任 USB 设备列表(trusted/auth.json),按 PID 属性搜索外部 USB 设备的事件历史中的违规行为,将结果事件限制为那些主机名为 Bob-PC、制造商为 EvilUSBManufacturer、序列号为 0123456789 的事件,并以表格形式输出,显示连接时间、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
    
  • 通过 VID(--vid VID)和 PID(--pid PID)搜索特定 USB 设备的详细信息:

    root@kitploit:~
    ~$ usbrip ids search --vid 0781 --pid 5580
    
  • 下载最新版本的 usb.ids 数据库:

    root@kitploit:~
    ~$ usbrip ids download