在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