Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

ハッシュマッチング

ハッシュマッチングはPRX-SD検出パイプラインの最初かつ最も高速なレイヤーです。スキャンされるすべてのファイルに対して、PRX-SDは暗号学的ハッシュを計算し、既知の悪意のあるハッシュのローカルデータベースで照合します。一致はそのファイルが既知のマルウェアサンプルのバイト単位の完全なコピーであることを意味します。

仕組み

  1. ハッシュ計算 -- PRX-SDはファイルのSHA-256ハッシュを計算します。VirusShareのルックアップのためにMD5ハッシュも計算されます。
  2. LMDBルックアップ -- ハッシュはメモリマップB+ツリーを使用してLMDBデータベースに対してチェックされます。これによりO(1)の平均ルックアップ時間が提供されます。
  3. メタデータ取得 -- 一致が見つかった場合、関連するメタデータ(ソース、マルウェアファミリー、初回検出日)が返されます。
  4. 判定 -- ハッシュマッチングは即座にMALICIOUS判定を生成し、残りの検出レイヤーはスキップされます。

パフォーマンス

操作時間
SHA-256計算(1 KBファイル)~2マイクロ秒
SHA-256計算(10 MBファイル)~15ミリ秒
LMDBルックアップ~0.5マイクロ秒
ファイルあたり合計(小さいファイル、ハッシュヒット)~3マイクロ秒

LMDBはメモリマップファイルを使用するため、OSのページキャッシュがデータベースの頻繁にアクセスされる部分をRAMに保持します。十分なメモリを持つシステムでは、ルックアップは実質的に無料です。

対応ハッシュタイプ

ハッシュタイプサイズ用途
SHA-256256ビット(64桁の16進数)すべてのルックアップのプライマリハッシュ。abuse.chフィードと組み込みブロックリストで使用。
MD5128ビット(32桁の16進数)VirusShareデータベースの互換性に使用。VirusShareデータが存在する場合のみ計算。

MD5の制限

MD5は暗号学的に破られており、衝突攻撃に対して脆弱です。PRX-SDはVirusShareデータベースとの後方互換性のためにのみMD5を使用します。SHA-256は他のすべてのソースのプライマリハッシュです。

データソース

PRX-SDは複数の脅威インテリジェンスフィードからハッシュシグネチャを集約します:

ソースハッシュタイプ無料内容更新頻度
abuse.ch MalwareBazaarSHA-256はい最新48時間のマルウェアサンプル5分ごと
abuse.ch URLhausSHA-256はい悪意のあるURLからのマルウェアファイル1時間ごと
abuse.ch Feodo TrackerSHA-256はいバンキングトロイの木馬(Emotet、Dridex、TrickBot)5分ごと
abuse.ch ThreatFoxSHA-256はいコミュニティIOC共有プラットフォーム1時間ごと
VirusShareMD5はい2000万以上のマルウェアハッシュ(過去の)定期的
組み込みブロックリストSHA-256バンドルEICAR、WannaCry、NotPetya、Emotetなどリリースと共に

ハッシュカバレッジの合計

更新モードハッシュ数データベースサイズ
標準(sd update~28,000 SHA-256~5 MB
完全(sd update --full~28,000 SHA-256 + 2000万以上 MD5~800 MB

ハッシュデータベースの更新

標準更新

すべてのabuse.chフィードから最新のSHA-256ハッシュを取得:

bash
sd update

これはPRX-SDが最初にインストールされたときに自動的に実行され、継続的な更新のためにcronまたはsd serviceでスケジュールできます。

完全更新

完全なVirusShare MD5データベースを含む:

bash
sd update --full

完全モードを使用するタイミング

VirusShareデータベースには何年もさかのぼる2000万以上の過去のMD5ハッシュが含まれています。フォレンジック調査と包括的スキャンに役立ちますが、データベースに~800 MBが追加されます。日常的な保護には標準更新で十分です。

手動ハッシュインポート

テキストファイル(1行に1ハッシュ)からカスタムハッシュリストをインポート:

bash
sd import my_hashes.txt

インポートコマンドは文字列の長さに基づいてハッシュタイプ(SHA-256またはMD5)を自動検出します。メタデータも指定できます:

bash
sd import my_hashes.txt --source "internal-ir" --family "custom-trojan"

LMDBデータベース

PRX-SDはそのプロパティのためにLMDB(Lightning Memory-Mapped Database)にハッシュを保存します:

プロパティ利点
メモリマップI/Oゼロコピー読み込み、シリアライズのオーバーヘッドなし
B+ツリー構造O(1)の償却ルックアップ
ACIDトランザクション更新中の安全な並行読み込み
クラッシュ耐性コピーオンライトによる破損防止
コンパクトサイズハッシュキーの効率的な保存

データベースはデフォルトで~/.local/share/prx-sd/signatures.lmdbに保存されます。パスはカスタマイズ可能:

toml
# ~/.config/prx-sd/config.toml
[database]
path = "/opt/prx-sd/signatures.lmdb"

データベースステータスの確認

現在のハッシュデータベース統計を表示:

bash
sd info
PRX-SD Signature Database
=========================
SHA-256 hashes:  28,428
MD5 hashes:      0 (run 'sd update --full' for VirusShare)
YARA rules:      38,800
Database path:   /home/user/.local/share/prx-sd/signatures.lmdb
Database size:   4.8 MB
Last updated:    2026-03-21 10:00:00 UTC

ハッシュマッチングがパイプラインに収まる仕組み

ハッシュマッチングは第一防衛線として設計されています:

  • 速度 -- ファイルあたり~3マイクロ秒で、無視できるオーバーヘッドを追加します。100万のクリーンファイルは3秒以内にチェックできます。
  • ゼロ誤検知 -- SHA-256マッチはファイルが既知のマルウェアサンプルと同一であることの暗号学的保証です。
  • ショートサーキット -- ハッシュマッチングが見つかると、YARAとヒューリスティック分析が完全にスキップされ、処理時間が大幅に節約されます。

ハッシュマッチングの制限は、正確なコピーの既知サンプルのみを検出することです。1バイトの変更により異なるハッシュが生成され、このレイヤーを回避します。そのため、後続の防衛としてYARAとヒューリスティックレイヤーが存在します。

次のステップ

Released under the Apache-2.0 License.