
GNU/Linux 上での USB イベントの履歴追跡
usbrip(「USB Ripper」に由来、USB R.I.P.ではありません)は、Linuxマシン上でUSBデバイスのアーティファクト(USBイベント履歴)を追跡できるシンプルなフォレンジックツールで、コマンドラインインターフェースを備えています。
目次:
usbrip は、Linuxのログデータ(journalctlの出力、または /var/log/syslog*(あるいは /var/log/messages*)ファイルの内容)を解析する小さなソフトウェアです。収集されたデータに基づいて、usbrip は以下の列を持つUSBイベント履歴テーブルを構築できます。
さらに、以下の機能もあります。
方法1. pipでインストール:
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h
方法2. install.sh で最先端バージョンをインストール(推奨、追加機能あり):
~$ sudo apt install python3-venv p7zip-full -y
~$ git clone https://github.com/snovvcrash/usbrip && cd usbrip
~/usbrip$ sudo -H installers/install.sh
~/usbrip$ cd
~$ usbrip -h

Docker(*デモのみ!*)
~$ docker run --rm -it snovvcrash/usbrip
usbrip はシステムログファイル内で解析する2種類のタイムスタンプをサポートしています。
"%b %d %H:%M:%S"、例 "Jan 1 00:00:00")。このタイムスタンプは年情報を提供しません。"%Y-%m-%dT%H:%M:%S.%f%z"、例 "1970-01-01T00:00:00.000000-00:00")。journalctl がインストールされていれば、タイムスタンプを自動変換できるため心配はありません。それ以外の場合、望ましい syslog 構造は rsyslog 設定で RSYSLOG_FileFormat 形式を設定することで実現できます。
/etc/rsyslog.conf の次の行をコメントアウト:$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
.conf ファイルを追加:~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
~$ sudo rm -f /var/log/syslog* /var/log/messages*
~$ sudo systemctl restart rsyslog
usbrip はまず、最も移植性の高いオプションとして journalctl を使用してシステムイベントをダンプできるかどうかを確認します。できない場合は、/var/log/syslog* または /var/log/messages* のシステムログファイルを検索して解析します。
storage モジュールで使用)簡単のため、~/usbrip$ プレフィックスが表示されるすべてのコマンドは、git clone の結果作成される ~/usbrip ディレクトリで実行されるものとします。
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd
install.shpip でインストールする以外にも、カスタム installers/install.sh スクリプトを使用して usbrip をインストールできます。
install.sh を使用すると、いくつかの追加機能が利用可能になります。
storage モジュールを使用できます。cron ジョブを設定してUSBイベントを定期的にバックアップできます(cron ジョブの例は usbrip/cron/usbrip.cron にあります)。⚠️ 警告: cron スケジューリングを使用する場合は、sudo crontab -e で crontab を設定して storage update サブモジュールを root として実行するようにしてください。ストレージのパスワードは /var/opt/usbrip/usbrip.ini に保存され、デフォルトでは root のみがアクセスできます。
install.sh で usbrip をインストールするには:
~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip -h
-l スイッチを有効にすると、Python 依存関係は PyPI ではなくローカルの .tar パッケージ(3rdPartyTools ディレクトリ)から解決されます。-s スイッチを有効にすると、usbrip プロジェクトのインストールに加えて、信頼できるUSBデバイスのリスト、履歴および違反ストレージが作成されます。インストール完了後、~/usbrip ディレクトリは削除しても問題ありません。
install.sh でインストールした場合、usbrip は以下のパスを使用します。
/opt/usbrip/ – プロジェクトのメインディレクトリ。/var/opt/usbrip/log/ – usbrip cron ログ。/var/opt/usbrip/storage/ – USBイベントストレージ(インストール中に作成される history.7z と violations.7z)。/var/opt/usbrip/trusted/ – 信頼できるUSBデバイスのリスト(インストール中に作成される auth.json)。/var/opt/usbrip/usbrip.ini – usbrip 設定ファイル(7-Zipストレージのパスワードを含む)。/usr/local/bin/usbrip – /opt/usbrip/venv/bin/usbrip スクリプトへのシンボリックリンク。cron ジョブは次のように設定できます。
~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron
uninstall.shinstallers/uninstall.sh スクリプトは、システムから usbrip とすべてのインストールアーティファクトを削除します。
usbrip をアンインストールするには:
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
-a スイッチを有効にすると、usbrip プロジェクトディレクトリだけでなく、すべてのストレージと usbrip ログも削除されます。cron ジョブを設定していた場合は、忘れずに削除してください。
# ---------- バナー ----------
~$ usbrip banner
usbrip バナーを表示します。
# ---------- イベント ----------
~$ usbrip events history [-t | -l] [-e] [-n <イベント数>] [-d <日付> [<日付> ...]] [--host <ホスト> [<ホスト> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <製品名> [<製品名> ...]] [--manufact <製造元> [<製造元> ...]] [--serial <シリアル番号> [<シリアル番号> ...]] [--port <ポート> [<ポート> ...]] [-c <列名> [<列名> ...]] [-f <ファイル> [<ファイル> ...]] [-q] [--debug]
USBイベント履歴を取得します。
~$ usbrip events open <ダンプファイル.json> [-t | -l] [-e] [-n <イベント数>] [-d <日付> [<日付> ...]] [--host <ホスト> [<ホスト> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <製品名> [<製品名> ...]] [--manufact <製造元> [<製造元> ...]] [--serial <シリアル番号> [<シリアル番号> ...]] [--port <ポート> [<ポート> ...]] [-c <列名> [<列名> ...]] [-q] [--debug]
USBイベントダンプを開きます。
~$ sudo usbrip events genauth <出力auth.json> [-a <属性> [<属性> ...]] [-e] [-n <イベント数>] [-d <日付> [<日付> ...]] [--host <ホスト> [<ホスト> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <製品名> [<製品名> ...]] [--manufact <製造元> [<製造元> ...]] [--serial <シリアル番号> [<シリアル番号> ...]] [--port <ポート> [<ポート> ...]] [-f <ファイル> [<ファイル> ...]] [-q] [--debug]
信頼できる(承認済み)USBデバイスのリストを生成します。