[*]
[*]本指南解释了什么是 优盘 程序,如何跟踪已连接或已断开 USB 设备的详细信息,以及如何在 Linux 中使用 Usbrip 工具显示 USB 设备事件历史记录。
内容
介绍
[*]现在,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 设备工件并将它们列在以下列下:
- 已连接(日期和时间)
- 主持人
- VID(供应商 ID)
- PID(产品 ID)
- 产品
- 制造商
- 序列号
- 港口
- 已断开连接”(日期和时间)
[*]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 将以表格列格式显示结果。 由于我的终端窗口太小而无法正确显示表格,因此输出以列表格式显示。 如果您想坚持 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
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
[*]这里, -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
[*]同样,您可以通过组合多个字段(例如 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
[*]