在 Linux 中使用 Usbrip 显示 USB 设备事件历史记录

[*]

[*]本指南解释了什么是 优盘 程序,如何跟踪已连接或已断开 USB 设备的详细信息,以及如何在 Linux 中使用 Usbrip 工具显示 USB 设备事件历史记录。

内容

  1. 介绍
  2. 关于 Usbrip
  3. Usbrip 功能
    1. 1.查找未经授权的USB访问
    2. 2. 查找 USB 设备详细信息
    3. 3.备份USB事件
  4. 在 Linux 中安装 Usbrip
  5. 在 Linux 中使用 Usbrip 显示 USB 设备事件历史记录
    1. 1. 寻求帮助
    2. 2.查看USB设备连接历史
    3. 3. Save 文件中的 USB 事件历史记录
    4. 4. 显示外部 USB 设备事件历史记录
    5. 5. 显示特定时间范围内的 USB 事件历史记录
    6. 6. 只显示某些信息
    7. 7.搜索特定USB设备的详细信息
    8. 8. 生成受信任的 USB 设备列表
    9. 9. 搜索违规

介绍

[*]现在,USB 设备很普遍。 您应该每天都在使用许多带有 USB 连接器的设备,例如闪存驱动器、外置驱动器、鼠标、键盘、打印机、手机充电器。 与其他所有事件一样,Linux 操作系统也会跟踪 USB 连接的历史记录。 每当您连接或断开 USB 设备时,都会跟踪 USB 设备事件历史并将其存储在 Linux 系统中的以下一个或多个文件中:

  • /var/log/dmesg
  • /var/log/daemon.log
  • /var/log/kern.log
  • /var/日志/系统日志
  • /var/日志/消息

[*]您可以手动浏览这些文件以了解您的 USB 连接历史记录,或者使用有助于以整洁的表格列格式轻松组织 USB 工件的工具。 一种跟踪 USB 事件历史记录的工具是 优盘.

关于 Usbrip

[*]Usbrip 是一个命令行取证工具,用于跟踪 Linux 中所有 USB 设备连接的历史记录。 它使用以下方法分析您系统的日志数据 journelctl 命令或来自日志文件,例如 /var/log/syslog/var/log/messages 并在标准输出或文件中显示收集的 USB 事件历史记录。

[*]usbrip 程序跟踪 USB 设备工件并将它们列在以下列下:

  1. 已连接(日期和时间)
  2. 主持人
  3. VID(供应商 ID)
  4. PID(产品 ID)
  5. 产品
  6. 制造商
  7. 序列号
  8. 港口
  9. 已断开连接”(日期和时间)

[*]Usbrip 是免费的开源工具 蟒蛇 3. 对于那些想知道的人来说,Usbrip 这个名字来源于两个词—— USB开膛手. 它不是 USB RIP

Usbrip 功能

[*]Usbrip 有一些有趣的功能。 我想提及以下三个显着特征。

1.查找未经授权的USB访问

[*]这是 Usbrip 工具的主要目的。 使用 usbrip 工具,我们可以证明特定用户在特定时间间隔内将 USB 设备连接到特定 Linux 系统。 一般来说,我们可以在任何涉及 USB 设备的情况下使用 Usbrip。

[*]如前所述,您可以导出所有 USB 连接详细信息 JSON 文件。 为什么我们将详细信息转储到 JSON 文件中? 因为,我们可以轻松搜索任何“违规事件”。 例如,我们可以创建一个文件,说 auth.json,并将授权或受信任的 USB 设备列表存储在该文件中。

[*]这 auth.json 文件可用于调查连接了哪些 USB 设备以及它们是否是授权设备。 通过这种方式,可以查明某些用户是否未经您的许可从您的系统中复制了某些内容。

[*]请注意,如果您使用安装程序脚本安装 usbrip, auth.json 文件将在该位置自动创建 /var/opt/usbrip/trusted/ 在安装时。 您还可以在您选择的任何位置创建自己的。

2. 查找 USB 设备详细信息

[*]如果您想了解 USB 设备的规格详细信息,您可以使用其 VID 或 PID 轻松获取它们。 Usbbrip 将获取供应商、设备和接口的详细信息。 usb.ids 数据库维护在 https://www.linux-usb.org/.

3.备份USB事件

[*]如果您手动安装了 Usbrip -s (--storages) 选项,您可以使用 crontab 调度程序自动备份 USB 事件。

[*]现在让我们看看如何在 Linux 中安装和使用 Usbrip 来收集 USB 连接事件。

在 Linux 中安装 Usbrip

[*]由于 Usbrip 是用 Python 编写的,我们可以使用 包管理器。

$ pip install usbrip

[*]如果您使用 pip 安装 usbrip,某些功能将不可用。 要获得所有功能,您应该使用名为的安装程序脚本手动安装 usbrip install.sh.

[*]首先,请确保您已安装必要的先决条件:

  • python3-venv
  • 压缩包

[*]在 Debian、Ubuntu 及其衍生产品上,您可以按如下所示安装它们:

$ sudo apt install python3-venv p7zip-full

[*]Git 克隆 usbrip 存储库:

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

[*]上面的命令将克隆 usbrip 存储库的内容并将它们存储在您当前目录中名为“usbrip”的目录中。

[*]cd 进入 usbrip 目录:

$ cd usbrip

[*]将安装程序脚本设为可执行:

$ chmod +x ./installers/install.sh

[*]最后使用命令安装它:

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

[*]在这里,我们使用了 -s 启用存储模块的标志。 这不仅会安装 usbrip 程序,还会创建受信任的 USB 设备列表、历史记录和违规存储。 记下您的秘密密码。 您以后可能需要它。

[*]安装完成后,您可以删除克隆的目录:

$ cd
$ rm -r usbrip/

在 Linux 中使用 Usbrip 显示 USB 设备事件历史记录

[*]在开始使用它之前,让我们了解一下常规选项和可用标志的列表。

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

[*]系统将提示您是要在标准输出中还是在 JSON 文件中显示 USB 事件历史记录。 如果要显示输出,只需按 ENTER(这是默认值)或键入 number 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
使用 Usbrip 显示 USB 设备事件历史记录

[*]默认情况下,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. Save 文件中的 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 年 1 月至 2021 年 3 月之间发生的事件历史记录:

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

6. 只显示某些信息

[*]您可能有兴趣查看 USB 连接的特定事件。 例如,以下命令将为您提供列的详细信息,即 Connected、Disconnected、Serial 和 Product name:

$ usbrip events history -q -c conn disconn serial prod -n 20
使用 usbrip 显示某些 USB 设备事件使用 usbrip 显示某些 USB 设备事件

[*]这里, -n 20 选项用于显示最近的 20 条记录。

7.搜索特定USB设备的详细信息

[*]您可能有兴趣查看特定设备的事件历史记录。 如果是这样,您可以使用 --manufact 标志以查看此类详细信息:

[*]在以下示例中,我显示了我的 Logitech 无线接收器的 15 个最近事件。 我还列出了仅 4 列的详细信息,即 Connected、Disconnected、Serial 和 Product。

$ usbrip events history -q -c conn disconn serial prod --manufact Logitech -n 15
查看特定 USB 设备的事件历史记录查看特定 USB 设备的事件历史记录

[*]同样,您可以通过组合多个字段(例如 PID、VID、端口、主机名、序列号等)来过滤 USB 事件。

8. 生成受信任的 USB 设备列表

[*]要创建授权 USB 设备列表,请使用 authgen 选项:

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

[*]此命令将生成一个受信任的 USB 设备列表作为名为的 JSON 文件 auth.json 包含 2021 年 3 月 29 日连接的前 10 个设备。此外,此文件将仅包含 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 设备列表 (~/auth.json) 通过“PID”属性搜索外部 USB 设备的事件历史记录是否存在违规,将结果事件限制为以“ostechnix”作为主机名的事件,“ Logitech”作为制造商,“0123456789”作为序列号,并将输出显示为带有“Connected”、“Disconnected”列的表格。

[*]如果 USB 设备出现在历史记录中但没有出现在 auth.json 文件,我们可以说存在违规事件。

[*]更多使用细节,请参考下面给出的项目的 GitHub 页面。

[*]资源:

  • Usbrip GitHub 存储库

[*]相关阅读:

  • 如何在 Linux 上查找 USB 设备带宽使用情况

取证工具LinuxPythonUSBUsbrip

[*]