在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 / syslog
  • / 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是使用以下语言编写的免费开放源代码工具: 的Python 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 数据库维持在 http://www.linux-usb.org/

3.备份USB事件

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

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

在Linux中安装Usbrip

[*]由于Usbrip是用Python编写的,因此我们可以使用 点子 包裹经理。

$ pip install usbrip

[*]如果您将usbrip与pip一起安装,则某些功能将不可用。 要获得所有功能,您应该使用名为的安装程序脚本手动安装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

[*]如您所见,有四个主要命令,分别是 bannereventsstorage, 和 ids

[*]要查看特定主命令的子命令列表,请运行:

$ usbrip <command> --help

[*]例子:

$ usbrip events --help

[*]列出与特定子命令相关的所有开关,例如 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

[*]您可以根据自己的喜好自定义输出。 在以下示例中,我使用了 -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.将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设备事件历史记录显示外部USB设备事件历史记录

5.显示特定时间段之间的USB事件历史记录

[*]我们可以用 -d--date 标志以查看特定时间段之间的USB设备事件历史记录。 例如,以下命令显示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 标记以查看此类详细信息:

[*]在以下示例中,我显示了Logitech无线接收器的15个最近事件。 我还列出了仅4列的详细信息,即“已连接”,“已断开连接”,“串行”和“产品”。

$ usbrip events history -q -c conn disconn serial prod --manufact Logitech -n 15

查看特定USB设备的事件历史记录查看特定USB设备的事件历史记录
[*]同样,您可以通过组合许多字段来过滤USB事件,例如PID,VID,端口,主机名,序列号等。

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

[*]此命令将通过“ PID”属性基于受信任的USB设备列表(〜/ auth.json)搜索外部USB设备的事件历史记录,以发现违规情况,将结果事件限制为以“ ostechnix”作为主机名的事件, Logitech”作为制造商,“ 0123456789”作为序列号,并将输出显示为带有“ Connected”,“ Disconnected”列的表格。

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

[*]有关更多用法的详细信息,请参见下面给出的项目的GitHub页面。

[*]资源:

[*]相关阅读:

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

法医工具LinuxPythonUSBUsbrip

Sidebar