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

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

介绍

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

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

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

关于我们

[*]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
  • p7zip

[*]在 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

[*]列出与特定子命令相关的所有开关,例如 example events, 跑:

$ usbrip events genauth --help

2.查看USB设备连接历史

[*]要显示 USB 设备连接的历史记录,请运行:

$ usbrip events history

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

[*]您可以根据自己的喜好自定义输出。 在下面的 example, 我用了 -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 设备事件历史记录。 为了 example,此命令显示 2021 年 1 月至 2021 年 3 月之间发生的事件历史记录:

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

6. 只显示某些信息

[*]您可能有兴趣查看 USB 连接的具体事件。 例如,以下命令将为您提供仅连接、断开连接、串行和产品名称等列的详细信息:

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

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

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

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

[*]在下面的 example,我展示了我的罗技无线接收器的 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 页面。

[*]资源:

[*]相关阅读:

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