YARAルール
YARAルールはPRX-SD検出パイプラインの第2レイヤーです。ハッシュマッチングが既知のマルウェアの正確なコピーを捕捉するのに対し、YARAルールはファイル内のバイトシーケンス、文字列、構造的条件を照合することでマルウェアのファミリー、バリアント、動作パターンを検出します。
PRX-SDは8つのソースから集約された38,800以上のYARAルールを搭載し、YARA-Xエンジン(YARAの次世代Rustリライト)を使用して改善されたパフォーマンス、安全性、互換性を提供します。
YARA-Xエンジン
PRX-SDは従来のCベースのYARAライブラリの代わりにYARA-Xを使用します。主な利点:
| 機能 | YARA(C) | YARA-X(Rust) |
|---|---|---|
| 言語 | C | Rust(メモリセーフ) |
| パフォーマンス | 良好 | 大規模ルールセットで2〜5倍高速 |
| ルール互換性 | ベースライン | 完全な後方互換性 + 新機能 |
| スレッドセーフティ | 慎重な取り扱いが必要 | 設計によりセーフ |
| モジュールサポート | 組み込みモジュール | モジュラー、拡張可能 |
ルールソース
PRX-SDは8つのソースからルールを集約します:
| ソース | ルール数 | 内容 | プラットフォームカバレッジ |
|---|---|---|---|
| 組み込みルール | 64 | ランサムウェア、トロイの木馬、バックドア、ルートキット、マイナー、ウェブシェル | Linux + macOS + Windows |
| Yara-Rules/rules(GitHub) | ~12,400 | Emotet、TrickBot、CobaltStrike、Mirai、LockBit | クロスプラットフォーム |
| Neo23x0/signature-base | ~8,200 | APT29、Lazarus、暗号マイニング、ウェブシェル、ランサムウェア | クロスプラットフォーム |
| ReversingLabs YARA | ~9,500 | トロイの木馬、ランサムウェア、バックドア、ハックツール | Windows + Linux |
| ESET IOC | ~3,800 | Turla、Interception、高度な持続的脅威 | クロスプラットフォーム |
| InQuest | ~4,836 | OLE/DDE悪意のあるドキュメント、マクロペイロード | クロスプラットフォーム |
| JPCERT/CC | ~500以上 | アジア太平洋地域を標的とした脅威 | クロスプラットフォーム |
| カスタム/インポート | 変動 | ユーザー提供のルール | 任意 |
合計: 38,800以上のルール(重複排除後)
組み込みルール
64の組み込みルールはPRX-SDバイナリにコンパイルされており、外部ルールセットをダウンロードしなくても常に利用可能です。最も蔓延している脅威カテゴリをカバーします:
| カテゴリ | ルール数 | 例 |
|---|---|---|
| ランサムウェア | 12 | WannaCry、LockBit、Conti、REvil、BlackCat、Ryuk |
| トロイの木馬 | 10 | Emotet、TrickBot、Dridex、QakBot |
| バックドア | 8 | Cobalt Strike Beacon、Metasploit Meterpreter、リバースシェル |
| ルートキット | 6 | Reptile、Diamorphine、Jynx2(Linux) |
| 暗号マイナー | 6 | XMRig、CGMiner、隠れたマイニング設定 |
| ウェブシェル | 8 | China Chopper、WSO、B374K、PHP/ASP/JSPシェル |
| RAT | 6 | njRAT、DarkComet、AsyncRAT、Quasar |
| エクスプロイト | 4 | EternalBlue、PrintNightmare、Log4Shellペイロード |
| テストシグネチャ | 4 | EICARテストファイルバリアント |
ルールマッチングプロセス
ファイルがレイヤー2に到達すると、YARA-Xは次のように処理します:
- ルールコンパイル -- 起動時にすべてのルールが最適化された内部表現にコンパイルされます。これは一度行われ、メモリにキャッシュされます。
- アトム抽出 -- YARA-Xはルールパターンから短いバイトシーケンス(アトム)を抽出して検索インデックスを構築します。これにより高速な事前フィルタリングが可能になります。
- スキャン -- ファイル内容はアトムインデックスに対してスキャンされます。マッチングアトムを持つルールのみが完全に評価されます。
- 条件評価 -- 各候補ルールについて、完全な条件(ブールロジック、文字列カウント、ファイル構造チェック)が評価されます。
- 結果 -- マッチングルールが収集され、ファイルはレポートにルール名を含む
MALICIOUSとしてマークされます。
パフォーマンス
| 指標 | 値 |
|---|---|
| ルールコンパイル(38,800ルール) | ~2秒(起動時に1回) |
| ファイルごとのスキャン時間 | 平均~0.3ミリ秒 |
| メモリ使用量(コンパイル済みルール) | ~150 MB |
| スループット | ~3,000ファイル/秒/スレッド |
YARAルールの更新
ルールはハッシュシグネチャと一緒に更新されます:
# すべてを更新(ハッシュ + YARAルール)
sd update
# YARAルールのみ更新
sd update --source yara更新プロセス:
- 各ソースからルールアーカイブをダウンロード
- YARA-Xでルール構文を検証
- 名前とコンテンツハッシュでルールを重複排除
- 組み合わせたルールセットをコンパイル
- アクティブなルールセットをアトミックに置き換え
ゼロダウンタイム更新
ルール更新はアトミックです。新しいルールセットはアクティブなものを置き換える前にコンパイルおよび検証されます。コンパイルが失敗した場合(例:コミュニティルールの構文エラーにより)、既存のルールセットがアクティブのままです。
カスタムルール
カスタムディレクトリに.yarまたは.yaraファイルを配置することで独自のYARAルールを追加できます:
# デフォルトのカスタムルールディレクトリ
~/.config/prx-sd/rules/カスタムルールの例:
rule custom_webshell_detector {
meta:
description = "Detects custom PHP webshell variant"
author = "Security Team"
severity = "high"
strings:
$eval = "eval(base64_decode(" ascii
$system = "system($_" ascii
$exec = "exec($_" ascii
condition:
filesize < 100KB and
($eval or $system or $exec)
}カスタムルールを追加した後、ルールセットをリロード:
sd reload-rulesまたはモニターデーモンを再起動して変更を自動的に取り込みます。
ルールディレクトリ
| ディレクトリ | ソース | 更新動作 |
|---|---|---|
~/.local/share/prx-sd/rules/builtin/ | バイナリにコンパイル済み | リリースと共に更新 |
~/.local/share/prx-sd/rules/community/ | ソースからダウンロード | sd updateで更新 |
~/.config/prx-sd/rules/ | ユーザー提供のカスタムルール | 手動、上書きされない |
ルールの確認
現在ロードされているルール数とソースを確認:
sd infoYARA Rules
==========
Built-in: 64
Community: 38,736
Custom: 12
Total compiled: 38,812
Rule sources: 8
Last updated: 2026-03-21 10:00:00 UTC特定のキーワードに一致するルールを一覧表示:
sd rules list --filter "ransomware"次のステップ
- ヒューリスティック分析 -- シグネチャを回避するファイルの動作検出
- ハッシュマッチング -- 最も高速な検出レイヤー
- 検出エンジン概要 -- すべてのレイヤーが連携する仕組み
- 対応ファイルタイプ -- YARAルールがターゲットにするファイル形式