Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
usbrip — GNU/Linux 上での USB イベントの履歴追跡 | Kitploit
ツール/GitHubGitHub/snovvcrash/usbrip
フォレンジックデジタルフォレンジック脅威インテリジェンスインシデントレスポンスログ分析Archived
GitHubsnovvcrash/usbrip

usbrip

GNU/Linux 上での USB イベントの履歴追跡

リポジトリを見る
1.2k1133年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

logo.png


version.svg python.svg license.svg blackarch.svg built-with-love.svg

usbrip(「USB Ripper」に由来、USB R.I.P.ではありません)は、Linuxマシン上でUSBデバイスのアーティファクト(USBイベント履歴)を追跡できるシンプルなフォレンジックツールで、コマンドラインインターフェースを備えています。

目次:

  • 説明
  • クイックスタート
  • デモ
  • システムログ構造
  • 依存関係
    • deb
    • pip
  • 手動インストール
    • Git Clone
    • install.sh
      • パス
      • Cron
      • uninstall.sh
  • 使用方法
    • 構文
    • ヘルプ
  • 例
  • クレジットと参考文献
  • スターゲイザーチャート
  • 追記

説明

usbrip は、Linuxのログデータ(journalctlの出力、または /var/log/syslog*(あるいは /var/log/messages*)ファイルの内容)を解析する小さなソフトウェアです。収集されたデータに基づいて、usbrip は以下の列を持つUSBイベント履歴テーブルを構築できます。

  • 接続日時
  • ホスト
  • VID(ベンダーID)
  • PID(製品ID)
  • 製品名
  • 製造元
  • シリアル番号
  • ポート
  • 切断日時

さらに、以下の機能もあります。

  • 収集したデータをJSONダンプとしてエクスポートし後で使用できます。
  • 承認済み(信頼できる)USBデバイスのリストをJSONファイル(auth.json)として生成できます。
  • auth.json に基づいて「違反イベント」を検索します。履歴に存在するが auth.json には存在しないUSBデバイスを発見します。
  • *-s フラグを指定してインストールした場合* cronスケジューラを使用して自動的にUSBイベントをバックアップおよび蓄積する保護ストレージ(7-Zipアーカイブ)を作成できます。
  • VIDやPIDに基づいて特定のUSBデバイスの追加詳細を検索できます。

クイックスタート

方法1. pipでインストール:

root@kitploit:~
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h

方法2. install.sh で最先端バージョンをインストール(推奨、追加機能あり):

root@kitploit:~
~$ 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

デモ

showcase.png

Docker(*デモのみ!*)

root@kitploit:~
~$ docker run --rm -it snovvcrash/usbrip

システムログ構造

usbrip はシステムログファイル内で解析する2種類のタイムスタンプをサポートしています。

  1. 非修正版 – GNU/Linux の標準 syslog 構造("%b %d %H:%M:%S"、例 "Jan 1 00:00:00")。このタイムスタンプは年情報を提供しません。
  2. 修正版(推奨) – より高精度なタイムスタンプ(年を含む)を提供する syslog 構造("%Y-%m-%dT%H:%M:%S.%f%z"、例 "1970-01-01T00:00:00.000000-00:00")。

journalctl がインストールされていれば、タイムスタンプを自動変換できるため心配はありません。それ以外の場合、望ましい syslog 構造は rsyslog 設定で RSYSLOG_FileFormat 形式を設定することで実現できます。

  1. /etc/rsyslog.conf の次の行をコメントアウト:
root@kitploit:~
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. usbrip 用のカスタム .conf ファイルを追加:
root@kitploit:~
~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
  1. *任意* 既存のログファイルを削除:
root@kitploit:~
~$ sudo rm -f /var/log/syslog* /var/log/messages*
  1. サービスを再起動:
root@kitploit:~
~$ sudo systemctl restart rsyslog

usbrip はまず、最も移植性の高いオプションとして journalctl を使用してシステムイベントをダンプできるかどうかを確認します。できない場合は、/var/log/syslog* または /var/log/messages* のシステムログファイルを検索して解析します。

依存関係

deb

  • python3.6 インタプリタ(またはそれ以降)
  • python3-venv
  • p7zip-full(storage モジュールで使用)

pip

  • terminaltables
  • termcolor
  • tqdm

手動インストール

Git Clone

簡単のため、~/usbrip$ プレフィックスが表示されるすべてのコマンドは、git clone の結果作成される ~/usbrip ディレクトリで実行されるものとします。

root@kitploit:~
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd

install.sh

pip でインストールする以外にも、カスタム 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 をインストールするには:

root@kitploit:~
~/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

cron ジョブは次のように設定できます。

root@kitploit:~
~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron

uninstall.sh

installers/uninstall.sh スクリプトは、システムから usbrip とすべてのインストールアーティファクトを削除します。

usbrip をアンインストールするには:

root@kitploit:~
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
  • -a スイッチを有効にすると、usbrip プロジェクトディレクトリだけでなく、すべてのストレージと usbrip ログも削除されます。

cron ジョブを設定していた場合は、忘れずに削除してください。

使用方法

構文

root@kitploit:~
# ---------- バナー ----------

~$ 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デバイスのリストを生成します。

~$ sudo usbrip events violations <入力auth.json> [-a <属性> [<属性> ...]] [-t | -l] [-e] [-n <イベント数>] [-d <日付> [<日付> ...]] [--host <ホスト> [<ホスト> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <製品名> [<製品名> ...]] [--manufact <製造元> [<製造元> ...]] [--serial <シリアル番号> [<シリアル番号> ...]] [--port <ポート> [<ポート> ...]] [-c <列名> [<列名> ...]] [-f <ファイル> [<ファイル> ...]] [-q] [--debug]
信頼できるデバイスのリストに基づいてUSB違反イベントを取得します。

# ---------- ストレージ ----------

~$ sudo usbrip storage list <ストレージタイプ> [-q] [--debug]
選択したストレージの内容を一覧表示します。ストレージタイプは "history" または "violations" です。

~$ sudo usbrip storage open <ストレージタイプ> [-t | -l] [-e] [-n <イベント数>] [-d <日付> [<日付> ...]] [--host <ホスト> [<ホスト> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <製品名> [<製品名> ...]] [--manufact <製造元> [<製造元> ...]] [--serial <シリアル番号> [<シリアル番号> ...]] [--port <ポート> [<ポート> ...]] [-c <列名> [<列名> ...]] [-q] [--debug]
選択したストレージを開きます。EVENTS OPEN サブモジュールと同様に動作します。

~$ sudo usbrip storage update <ストレージタイプ> [入力auth.json] [-a <属性> [<属性> ...]] [-e] [-n <イベント数>] [-d <日付> [<日付> ...]] [--host <ホスト> [<ホスト> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <製品名> [<製品名> ...]] [--manufact <製造元> [<製造元> ...]] [--serial <シリアル番号> [<シリアル番号> ...]] [--port <ポート> [<ポート> ...]] [--lvl <圧縮レベル>] [-q] [--debug]
ストレージを更新します — 既存のストレージにUSBイベントを追加します。圧縮レベルは [0..9] の数値です。

~$ sudo usbrip storage create <ストレージタイプ> [入力auth.json] [-a <属性> [<属性> ...]] [-e] [-n <イベント数>] [-d <日付> [<日付> ...]] [--host <ホスト> [<ホスト> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <製品名> [<製品名> ...]] [--manufact <製造元> [<製造元> ...]] [--serial <シリアル番号> [<シリアル番号> ...]] [--port <ポート> [<ポート> ...]] [--lvl <圧縮レベル>] [-q] [--debug]
ストレージを作成します — 7-Zipアーカイブを作成し、選択したオプションに従ってUSBイベントを追加します。

~$ sudo usbrip storage passwd <ストレージタイプ> [--lvl <圧縮レベル>] [-q] [--debug]
既存のストレージのパスワードを変更します。

# ---------- IDs ----------

~$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
USB IDデータベースから、<VID> や <PID> で特定のUSBデバイスの追加詳細を取得します。

~$ usbrip ids download [-q] [--debug]
USB IDデータベースを更新(ダウンロード)します。

ヘルプ

モジュール名の一覧を表示するには:

root@kitploit:~
~$ usbrip -h

特定のモジュールのサブモジュール名の一覧を表示するには:

root@kitploit:~
~$ usbrip <モジュール> -h

特定のサブモジュールのすべてのスイッチの一覧を表示するには:

root@kitploit:~
~$ usbrip <モジュール> <サブモジュール> -h

例

  • バナー出力、情報メッセージ、ユーザー操作を抑制し(-q, --quiet)、最新100件のエントリをリスト形式(-l, --list)で全USBデバイスのイベント履歴を表示:

    root@kitploit:~
    ~$ usbrip events history -ql -n 100
    
  • 外部USBデバイス(-e, --external、実際に切断されたもの)のイベント履歴を、接続日時、VID、PID、切断日時、シリアル番号の列(-c conn vid pid disconn serial)を含むテーブル形式(-t, --table)で表示し、日付(-d '1995-09-15' '2018-07-01')とPID(--pid 1337)でフィルタリングし、ログは外部ファイル(-f /var/log/syslog.1 /var/log/syslog.2.gz)から取得:

    root@kitploit:~
    ~$ usbrip events history -et -c conn vid pid disconn serial -d '1995-09-15' '2018-07-01' --pid 1337 -f /var/log/syslog.1 /var/log/syslog.2.gz
    

クレジットと参考文献

  • usbrip / Kali Linuxツール
  • LinuxにどのUSBデバイスが接続されたかを調べる方法 / HackWare.ru
  • usbrip: Linux向けUSBフォレンジック、またはアリスがイブになった話 / Codeby.net情報セキュリティフォーラム

13cubed.jpg

スターゲイザーチャート

stargazers

ツールをダウンロード

👽 注: フィルタを扱う際には覚えておくべきことがあります。4種類のフィルタリングが利用可能です: 外部USBイベントのみ(簡単に抜き差しできるデバイス、-e)、日付(-d)、フィールド(--host, --vid, --pid, --product, --manufact, --serial, --port)、出力として取得するエントリ数(-n)。異なるフィルタを同時に適用した場合、次の動作になります: 最初に 外部 と 日付 のフィルタが適用され、次に usbrip はこれら2つのフィルタの共通部分から指定されたフィールド値を検索し、最後に -n オプションで定義した数に出力を切り詰めます。つまり、外部 と 日付 フィルタは共通部分、フィールド フィルタは和集合として考えてください。ご理解いただければ幸いです。

  • 全USBデバイスのイベント履歴を構築し、出力をファイルにリダイレクトしてさらに分析。出力ストリームがターミナルstdoutでない場合(| や > など)、出力にANSIエスケープ文字(色)は含まれないので安心して使用できます。また、usbrip は一部のUNICODE記号を使用するため、結果のファイルをUTF-8エンコーディングに変換し(例: enconv)、さらに改行文字をWindows形式に変換して移植性を高める(例: awk)ことをお勧めします:

    root@kitploit:~
    ~$ usbrip events history -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
    

    👽 注: 出力をstdoutに既に取得している場合でも、自分でエスケープ文字を除去できます。そのためには出力データを usbrip.out にコピーし、さらに awk の命令を適用します:

    root@kitploit:~
    ~$ awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
    
  • 信頼できるUSBデバイスのリストをJSONファイル(trusted/auth.json)として生成。VIDとPIDの属性を使用し、1984年11月30日に接続された最初の3デバイスを含める:

    root@kitploit:~
    ~$ sudo usbrip events genauth trusted/auth.json -a vid pid -n 3 -d '1984-11-30'
    

    ⚠️ 警告: 異なるUSBフラッシュドライブでもシリアル番号が同一になる場合があります。これは製造エラーや、ブラックハットがドライブのメモリチップを書き換えた結果など、様々な理由で発生する可能性があります。いずれにせよ、"安全なシステムはありません"。usbrip は現在、このようなケースをスマートに処理しません。つまり、シリアル番号が同一のデバイスのペアが存在する場合、それらは信頼できるデバイスリストと genauth モジュールに関しては同じデバイスとして扱われます。

  • 外部USBデバイスのイベント履歴から、信頼できるUSBデバイスのリスト(trusted/auth.json)に基づいてPID属性で違反を検索。結果のイベントをホスト名 Bob-PC、製造元 EvilUSBManufacturer、シリアル番号 0123456789 に制限し、出力を接続日時、VID、PIDの列を含むテーブルとして表示:

    root@kitploit:~
    ~$ sudo usbrip events violations trusted/auth.json -a pid -et --host Bob-PC --manufact EvilUSBManufacturer --serial 0123456789 -c conn vid pid
    
  • VID(--vid VID)とPID(--pid PID)で特定のUSBデバイスの詳細を検索:

    root@kitploit:~
    ~$ usbrip ids search --vid 0781 --pid 5580
    
  • usb.ids データベースの最新バージョンをダウンロード:

    root@kitploit:~
    ~$ usbrip ids download