このガイドでは、 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デバイスのアーティファクトを追跡し、次の列に一覧表示します。
- 接続済み(日付と時刻)
- ホスト
- VID(ベンダーID)
- PID(製品ID)
- 製品
- メーカー
- シリアル番号
- ポート
- 切断済み」(日付と時刻)
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
があります。 、events
、storage
、および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ページを参照してください。