対応ファイルタイプ
PRX-SDはファイル拡張子に依存するのではなく、マジックナンバー検出(ファイルの先頭バイトを検査)を使用してファイルタイプを識別します。これにより、ファイル名が変更されたり拡張子が欠けていたりしても正確な識別が保証されます。
ファイルタイプマトリックス
以下の表はすべての対応ファイルタイプと各タイプに適用される検出レイヤーを示します:
| ファイルタイプ | 拡張子 | マジックバイト | ハッシュ | YARA | ヒューリスティック | アーカイブ再帰 |
|---|---|---|---|---|---|---|
| PE(Windows) | .exe, .dll, .sys, .scr, .ocx | 4D 5A(MZ) | あり | あり | あり | -- |
| ELF(Linux) | .so, .o, (拡張子なし) | 7F 45 4C 46 | あり | あり | あり | -- |
| Mach-O(macOS) | .dylib, .bundle, (拡張子なし) | FE ED FA CE/CFまたはCE FA ED FE/CF | あり | あり | あり | -- |
| ユニバーサルバイナリ | (拡張子なし) | CA FE BA BE | あり | あり | あり | -- |
25 50 44 46(%PDF) | あり | あり | あり | -- | ||
| Office(OLE) | .doc, .xls, .ppt | D0 CF 11 E0 | あり | あり | あり | -- |
| Office(OOXML) | .docx, .xlsx, .pptx | 50 4B 03 04(ZIP)+ [Content_Types].xml | あり | あり | あり | 解凍 |
| ZIP | .zip | 50 4B 03 04 | あり | あり | 限定的 | 再帰的 |
| 7-Zip | .7z | 37 7A BC AF 27 1C | あり | あり | 限定的 | 再帰的 |
| tar | .tar | オフセット257の75 73 74 61 72 | あり | あり | 限定的 | 再帰的 |
| gzip | .gz, .tgz | 1F 8B | あり | あり | 限定的 | 再帰的 |
| bzip2 | .bz2 | 42 5A 68(BZh) | あり | あり | 限定的 | 再帰的 |
| xz | .xz | FD 37 7A 58 5A 00 | あり | あり | 限定的 | 再帰的 |
| RAR | .rar | 52 61 72 21(Rar!) | あり | あり | 限定的 | 再帰的 |
| CAB | .cab | 4D 53 43 46(MSCF) | あり | あり | 限定的 | 再帰的 |
| ISO | .iso | オフセット32769の43 44 30 30 31 | あり | あり | 限定的 | 再帰的 |
| シェルスクリプト | .sh, .bash | 23 21(#!) | あり | あり | パターン | -- |
| Python | .py, .pyc | テキスト / 42 0D 0D 0A | あり | あり | パターン | -- |
| JavaScript | .js, .mjs | テキスト検出 | あり | あり | パターン | -- |
| PowerShell | .ps1, .psm1 | テキスト検出 | あり | あり | パターン | -- |
| VBScript | .vbs, .vbe | テキスト検出 | あり | あり | パターン | -- |
| バッチ | .bat, .cmd | テキスト検出 | あり | あり | パターン | -- |
| Java | .class, .jar | CA FE BA BE / ZIP | あり | あり | 限定的 | .jar再帰的 |
| WebAssembly | .wasm | 00 61 73 6D | あり | あり | 限定的 | -- |
| DEX(Android) | .dex | 64 65 78 0A(dex\n) | あり | あり | 限定的 | -- |
| APK(Android) | .apk | ZIP + AndroidManifest.xml | あり | あり | 限定的 | 再帰的 |
検出レイヤーの凡例
| レイヤー | 意味 |
|---|---|
| ハッシュ | シグネチャデータベースに対してSHA-256/MD5ハッシュをチェック |
| YARA | ファイル内容に完全なYARAルールセットを適用 |
| ヒューリスティック: あり | 完全なファイルタイプ固有のヒューリスティック分析(ヒューリスティック参照) |
| ヒューリスティック: 限定的 | 基本的なエントロピーと構造チェックのみ |
| ヒューリスティック: パターン | 疑わしいコマンドと難読化のためのテキストベースのパターンマッチング |
| アーカイブ再帰 | 内容を解凍し、各ファイルを個別にスキャン |
マジックナンバー検出
PRX-SDはファイルタイプを判定するためにファイルの最初の8192バイトを読み込みます。このアプローチは拡張子ベースの検出よりも信頼性が高いです:
ファイル: invoice.pdf.exe
拡張子の示唆: PDF
マジックバイト: 4D 5A → PEバイナリ
PRX-SDが識別: PE(正確)拡張子の不一致
ファイル拡張子が検出されたマジックナンバーと一致しない場合、PRX-SDはスキャンレポートにメモを追加します。拡張子の不一致はよくあるソーシャルエンジニアリングの技術です(例:photo.jpg.exe)。
マジック検出の優先順位
複数のシグネチャが一致する可能性がある場合(例:.zipと.docxの両方のZIPマジック)、PRX-SDはより深い検査を使用します:
- オフセット0でマジックバイトを読み込む
- 曖昧な場合(例:ZIP)、内部構造を検査
- ZIPベースの形式の場合、
[Content_Types].xml(OOXML)、META-INF/MANIFEST.MF(JAR)、AndroidManifest.xml(APK)を確認 - 汎用コンテナタイプにフォールバック
アーカイブ再帰スキャン
PRX-SDがアーカイブ(ZIP、7z、tar、gzip、RARなど)を検出すると、内容を一時ディレクトリに解凍し、各ファイルを完全な検出パイプラインで個別にスキャンします。
再帰深度
| 設定 | デフォルト | 説明 |
|---|---|---|
max_archive_depth | 5 | アーカイブ内のアーカイブの最大ネストレベル |
max_archive_files | 10,000 | 単一アーカイブから解凍する最大ファイル数 |
max_archive_size_mb | 500 | 停止前の最大合計解凍サイズ |
これらの制限はZIPボムや深くネストされたアーカイブによるリソース枯渇を防ぎます。
# ~/.config/prx-sd/config.toml
[scanning]
max_archive_depth = 5
max_archive_files = 10000
max_archive_size_mb = 500ZIPボム
PRX-SDはZIPボム(極端な圧縮率のアーカイブ)を検出し、過剰なディスク容量やメモリを消費する前に解凍を停止します。ZIPボムの検出はスキャン結果でSUSPICIOUSとして報告されます。
パスワード保護されたアーカイブ
PRX-SDはパスワード保護されたアーカイブを解凍できません。これらはスキャン結果で暗号化に関するメモとともにskippedとして報告されます。アーカイブファイル自体はハッシュとYARAデータベースに対してチェックされます。
スクリプト検出
テキストベースのスクリプトファイル(シェル、Python、JavaScript、PowerShell、VBScript、バッチ)に対して、PRX-SDはパターンベースのヒューリスティックを適用します:
| パターン | ポイント | 説明 |
|---|---|---|
| 難読化された文字列 | 10〜20 | Base64エンコードされたコマンド、過剰な文字列連結 |
| ダウンロードして実行 | 15〜25 | curl/wgetをbash/shにパイプ、Invoke-WebRequest + Invoke-Expression |
| リバースシェル | 20〜30 | 既知のリバースシェルパターン(/dev/tcp、nc -e、bash -i) |
| 認証情報アクセス | 10〜15 | /etc/shadowの読み込み、ブラウザ認証情報ストア、キーチェーン |
| 永続化メカニズム | 10〜15 | cronジョブ、systemdサービス、レジストリキーの追加 |
未対応ファイル
既知のマジックナンバーと一致しないファイルでも、ハッシュとYARAデータベースに対してチェックされます。不明なファイルタイプにはヒューリスティック分析は適用されません。一般的な例:
- 生のバイナリデータ
- 公開されているマジックナンバーのない独自の形式
- 暗号化されたファイル(コンテナ形式が認識される場合を除く)
これらのファイルはスキャンレポートでtype: unknownとして表示され、ハッシュとYARAスキャンのみを受けます。
次のステップ
- ヒューリスティック分析 -- ファイルタイプ別の詳細なヒューリスティックチェック
- YARAルール -- 特定のファイル形式構造をターゲットにするルール
- ファイル&ディレクトリスキャン -- 実際のファイルスキャン
- 検出エンジン概要 -- すべてのレイヤーが連携する仕組み