GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでUsbripを使用してUSBデバイスのイベント履歴を表示する

このガイドでは、 Usbripとは何かについて説明します プログラム、接続または切断されたUSBデバイスの詳細を追跡する方法、およびLinuxのUsbripツールを使用してUSBデバイスのイベント履歴を表示する方法。

はじめに

今日では、USBデバイスが普及しています。フラッシュドライブ、外付けドライブ、マウス、キーボード、プリンター、携帯電話の充電器など、USBコネクタを備えた多くのデバイスを毎日毎日使用する必要があります。他のすべてのイベントと同様に、USB接続の履歴もLinuxOSによって追跡されます。 USBデバイスを接続または切断するたびに、USBデバイスのイベント履歴が追跡され、Linuxシステムの次の1つ以上のファイルに保存されます。

  • / var / log / dmesg
  • /var/log/daemon.log
  • /var/log/kern.log
  • / var / log / syslog
  • / var / log / messages

これらのファイルを手動で調べてUSB接続履歴を確認したり、USBアーティファクトをわかりやすい表形式で簡単に整理するのに役立つツールを使用したりできます。 USBイベント履歴を追跡するためのそのようなツールの1つは、 Usbrip です。 。

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は、 Python 3で記述された無料のオープンソースツールです。 。不思議に思う人のために、Usbripという名前は2つの単語に由来しています- USB およびリッパー 。 USBR.I.Pではありません。

Usbrip機能

Usbripにはいくつかの興味深い機能があります。次の3つの注目すべき機能について説明します。

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を使用してUsbripを手動でインストールした場合 (--storages )オプションを使用すると、crontabスケジューラを使用してUSBイベントを自動的にバックアップできます。

次に、LinuxにUsbripをインストールして使用し、USB接続イベントを収集する方法を見てみましょう。

LinuxにUsbripをインストールする

UsbripはPythonで記述されているため、 Pipを使用してインストールできます。 パッケージマネージャー。

$ pip install usbrip

usbripをpipと一緒にインストールした場合、一部の機能は使用できなくなります。すべての機能を利用するには、install.shというインストーラスクリプトを使用してusbripを手動でインストールする必要があります。 。

まず、必要な前提条件がインストールされていることを確認します。

  • 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」という名前のディレクトリに保存します。

usbripディレクトリへのCd:

$ 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

ご覧のとおり、4つの主要なコマンド、つまりbannerがあります。 、eventsstorage 、およびids

特定のメインコマンドのサブコマンドのリストを表示するには、次のコマンドを実行します。

$ usbrip <command> --help

例:

$ usbrip events --help

eventsなど、特定のサブコマンドに関連するすべてのスイッチを一覧表示します 、実行:

$ usbrip events genauth --help

2。 USBデバイスの接続履歴を表示する

USBデバイス接続の履歴を表示するには、次を実行します。

$ usbrip events history

USBイベント履歴を標準出力で表示するかJSONファイルで表示するかを確認するメッセージが表示されます。出力を表示する場合は、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は結果を表形式の列形式で表示します。ターミナルウィンドウが小さすぎてテーブルを正しく表示できないため、出力はリスト形式で表示されます。とにかく結果を表形式の列形式で表示するように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

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

ここで、-n 20 オプションは、最近の20レコードを表示するために使用されます。

7。特定のUSBデバイスの詳細を検索

特定のデバイスのイベント履歴を表示することをお勧めします。その場合は、--manufactを使用できます そのような詳細を表示するためのフラグ:

次の例では、Logitechワイヤレスレシーバーの最近の15のイベントを表示しています。また、接続済み、切断済み、シリアル、製品の4つの列のみの詳細をリストしました。

$ 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デバイスのリストをauth.jsonという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
  1. ProcDumpを使用してLinuxをデバッグする

  2. Etcherを使用してLinuxでISOファイルをUSBドライブに書き込む方法

  3. LinuxでのBash履歴の解析

  1. LinuxでのBash履歴での単語修飾子の使用

  2. Linuxのコマンドライン履歴

  3. Linux履歴コマンド

  1. Python for Linux を使用したキー押下イベントのシミュレート

  2. LinuxでUSB入力ストリームを読み取る

  3. Linux USB 接続/切断イベント