ハッシュマッチング
ハッシュマッチングはPRX-SD検出パイプラインの最初かつ最も高速なレイヤーです。スキャンされるすべてのファイルに対して、PRX-SDは暗号学的ハッシュを計算し、既知の悪意のあるハッシュのローカルデータベースで照合します。一致はそのファイルが既知のマルウェアサンプルのバイト単位の完全なコピーであることを意味します。
仕組み
- ハッシュ計算 -- PRX-SDはファイルのSHA-256ハッシュを計算します。VirusShareのルックアップのためにMD5ハッシュも計算されます。
- LMDBルックアップ -- ハッシュはメモリマップB+ツリーを使用してLMDBデータベースに対してチェックされます。これによりO(1)の平均ルックアップ時間が提供されます。
- メタデータ取得 -- 一致が見つかった場合、関連するメタデータ(ソース、マルウェアファミリー、初回検出日)が返されます。
- 判定 -- ハッシュマッチングは即座に
MALICIOUS判定を生成し、残りの検出レイヤーはスキップされます。
パフォーマンス
| 操作 | 時間 |
|---|---|
| SHA-256計算(1 KBファイル) | ~2マイクロ秒 |
| SHA-256計算(10 MBファイル) | ~15ミリ秒 |
| LMDBルックアップ | ~0.5マイクロ秒 |
| ファイルあたり合計(小さいファイル、ハッシュヒット) | ~3マイクロ秒 |
LMDBはメモリマップファイルを使用するため、OSのページキャッシュがデータベースの頻繁にアクセスされる部分をRAMに保持します。十分なメモリを持つシステムでは、ルックアップは実質的に無料です。
対応ハッシュタイプ
| ハッシュタイプ | サイズ | 用途 |
|---|---|---|
| SHA-256 | 256ビット(64桁の16進数) | すべてのルックアップのプライマリハッシュ。abuse.chフィードと組み込みブロックリストで使用。 |
| MD5 | 128ビット(32桁の16進数) | VirusShareデータベースの互換性に使用。VirusShareデータが存在する場合のみ計算。 |
MD5の制限
MD5は暗号学的に破られており、衝突攻撃に対して脆弱です。PRX-SDはVirusShareデータベースとの後方互換性のためにのみMD5を使用します。SHA-256は他のすべてのソースのプライマリハッシュです。
データソース
PRX-SDは複数の脅威インテリジェンスフィードからハッシュシグネチャを集約します:
| ソース | ハッシュタイプ | 無料 | 内容 | 更新頻度 |
|---|---|---|---|---|
| abuse.ch MalwareBazaar | SHA-256 | はい | 最新48時間のマルウェアサンプル | 5分ごと |
| abuse.ch URLhaus | SHA-256 | はい | 悪意のあるURLからのマルウェアファイル | 1時間ごと |
| abuse.ch Feodo Tracker | SHA-256 | はい | バンキングトロイの木馬(Emotet、Dridex、TrickBot) | 5分ごと |
| abuse.ch ThreatFox | SHA-256 | はい | コミュニティIOC共有プラットフォーム | 1時間ごと |
| VirusShare | MD5 | はい | 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ハッシュを取得:
sd updateこれはPRX-SDが最初にインストールされたときに自動的に実行され、継続的な更新のためにcronまたはsd serviceでスケジュールできます。
完全更新
完全なVirusShare MD5データベースを含む:
sd update --full完全モードを使用するタイミング
VirusShareデータベースには何年もさかのぼる2000万以上の過去のMD5ハッシュが含まれています。フォレンジック調査と包括的スキャンに役立ちますが、データベースに~800 MBが追加されます。日常的な保護には標準更新で十分です。
手動ハッシュインポート
テキストファイル(1行に1ハッシュ)からカスタムハッシュリストをインポート:
sd import my_hashes.txtインポートコマンドは文字列の長さに基づいてハッシュタイプ(SHA-256またはMD5)を自動検出します。メタデータも指定できます:
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に保存されます。パスはカスタマイズ可能:
# ~/.config/prx-sd/config.toml
[database]
path = "/opt/prx-sd/signatures.lmdb"データベースステータスの確認
現在のハッシュデータベース統計を表示:
sd infoPRX-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とヒューリスティックレイヤーが存在します。
次のステップ
- YARAルール -- バリアントとファミリーのパターンベースの検出
- ヒューリスティック分析 -- 未知の脅威の動作検出
- 検出エンジン概要 -- すべてのレイヤーが連携する仕組み
- ファイル&ディレクトリスキャン -- 実際のハッシュマッチングの使用