Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
vol-rs — Volatility 3 を Rust に移植。同じ出力で、はるかに高速。 | Kitploit
ツール/GitHubGitHub/daffainfo/vol-rs
メモリフォレンジック脆弱性分析フォレンジックマルウェア分析デジタルフォレンジックインシデントレスポンス
GitHubdaffainfo/vol-rs

vol-rs

Volatility 3 を Rust に移植。同じ出力で、はるかに高速。

リポジトリを見る
20071021ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

vol-rs

Volatility 3 メモリフォレンジックフレームワークを Python から Rust へ移植したものです。同じメモリイメージを読み込み、同じオプションで同じプラグインを実行し、同じ出力をバイト単位でそのまま出力しますが、かなり高速です。

ライセンス

このプロジェクトは Volatility 3 の移植版であるため、Volatility Software License 1.0 における「Addition」に該当し、同じライセンスの下で公開されています。全文は LICENSE に、またオンラインでは https://www.volatilityfoundation.org/license/vsl-v1.0 にあります。各ソースファイルには、何から派生したかを記録した通知が保持されています。

このプロジェクトは Volatility Foundation とは提携しておらず、承認も受けていません。Volatility という名称は、これが何の移植版であるかを示すためにのみ使用しています。

ビルド

Rust 1.85 以降が必要です。その後:

cargo build --release

バイナリは target/release/vol-rs に生成されます。オプションの依存関係は一切不要です。シンボルの展開、RC4、DES、AES、YARA マッチング、PNG 出力、tar アーカイブはすべて組み込まれており、Python 版では pycryptodomex、yara-python、pillow を必要とします。命令のデコードは capstone 5.0.6 によって行われ、これは Python 版が同じカラムに対して使用しているのと同じライブラリであり、別途インストールされるのではなくコンパイル時に組み込まれています。

使用方法

./target/release/vol-rs -f memory.raw windows.pslist.PsList
./target/release/vol-rs -f memory.lime linux.bash.Bash
./target/release/vol-rs -f memory.raw -r csv windows.netscan.NetScan
./target/release/vol-rs windows.malfind.Malfind --help
./target/release/vol-rs --list-plugins

Python版が受け付けるすべてのオプションは、ここでも同じ名前・同じデフォルト値で受け付けます。-o、-r、-s、-c、-e、--filters、--hide-columns、--save-config、--stackers、--single-swap-locations を含みます。各プラグイン固有のオプションも同様に一致しており、ヘルプページに示されています。197個すべてがPython版と1文字違わず同一です。

シンボル

シンボルパックは $XDG_DATA_HOME/vol-rs/symbols に置きます。この変数が設定されていない場合は ~/.local/share/vol-rs/symbols です。別の場所にあるパックは --symbol-dirs または環境変数 VOLRS_SYMBOL_PATH で指定します。どのパックにも記述されていないWindowsカーネルはMicrosoftシンボルサーバーで検索され、そこで見つかったデータベースはシンボルファイルに変換されて保存されるため、取得は一度だけ行われます。データベース自体は ~/.cache/vol-rs 以下にキャッシュされ、シンボルファイルはパックの隣に書き出されます。

検証済みの内容

両方を同じキャプチャに対して実行し、ヘッダーのフレーミングや末尾の改行も含めて差分を比較しました:

キャプチャ実行プラグイン数一致
Windows 11 24H2、ビルド26100、4.3 GBクラッシュダンプ113105
Ubuntu 22.04、カーネル6.5.0-41、4.3 GB VMwareスナップショット6961
Windows 10 19041、2.0 GBクラッシュダンプ114112
Windows XP、512 MB生キャプチャ114113
Linux 3.2、512 MB生キャプチャ6060

パターンやルールを受け取る8つのプラグインには、除外せずに両側で同一のものを与えました。その方法で見つかった差異のうち3つはこの移植版の欠陥であり、修正済みです。

その他の検証結果
抽出系プラグインが書き出したファイル24,441件を比較し、すべて一致
プラグインのヘルプページ197件中197件が同一
レンダラーcsv、json、jsonl、quick、pretty を複数のプラグインで比較し、すべて一致

命令のデコードにはPython版が使用するのと同じライブラリを組み込み、バージョン5.0.6を使用しています。これはこれらの比較で参照実装を固定したバージョンです。バージョン5.0.7ではさらに1つの命令形式がデコードされ、これによりWindows 10キャプチャにおける windows.mbrscan の行の約2パーセントの表記が変わり、それ以外は変わりません。

ここで使用したキャプチャのWindowsシンボルは、Volatility Foundationが公開しているシンボルパックから取得しており、両ツールが読み込みます。ただしWindows 11 24H2カーネルはどのパックにも記述がなく、Microsoftが公開しているデータベースから記述を構築しています。以前のWindows 10 19045キャプチャでは、この移植版が同じデータベースからその方法で構築した記述が、Python版が構築したものと16個の基本型、293個の列挙、1,653個の構造体、40,007個のシンボルすべてにわたって完全に一致しました。

速度

各キャプチャで最も差の大きい10件です。すべての数値と比較したすべてのプラグインは BENCHMARKS.md にあります。

Windows 11 24H2クラッシュダンプ、4.3 GB

プラグインRustPython倍率
windows.malfind.Malfind0.494 s392 sx793
windows.malware.suspicious_threads.SuspiciousThreads0.621 s488 sx786
windows.malware.malfind.Malfind0.569 s393 sx691
windows.suspicious_threads.SuspiciousThreads0.739 s461 sx624
windows.hollowprocesses.HollowProcesses0.646 s326 sx504
windows.malware.hollowprocesses.HollowProcesses0.661 s322 sx487
layerwriter.LayerWriter0.044 s17.4 sx395
configwriter.ConfigWriter0.046 s16.7 sx363
windows.vadinfo.VadInfo1.36 s488 sx358
windows.verinfo.VerInfo0.541 s159 sx294

Ubuntu 22.04 VMwareスナップショット、4.3 GB

プラグインRustPython高速化倍率
linux.sockstat.Sockstat6.36 s2030 sx319
timeliner.Timeliner9.56 s1070 sx112
linux.lsmod.Lsmod0.282 s29.0 sx103
linux.psscan.PsScan1.09 s111 sx102
linux.mountinfo.MountInfo0.697 s70.3 sx101
yarascan.YaraScan0.909 s79.6 sx88
linux.malware.netfilter.Netfilter0.6 s49.9 sx83
linux.ptrace.Ptrace0.253 s20.4 sx81
linux.pstree.PsTree0.213 s16.2 sx76
linux.ip.Link0.22 s16.4 sx74

Windows 10 19041 クラッシュダンプ、2.0 GB

プラグインRustPython高速化倍率
windows.malware.suspicious_threads.SuspiciousThreads0.677 s346 sx511
windows.suspicious_threads.SuspiciousThreads0.677 s343 sx507
windows.malfind.Malfind0.734 s320 sx436
windows.hollowprocesses.HollowProcesses0.565 s244 sx432
windows.malware.malfind.Malfind0.73 s313 sx429
windows.vadinfo.VadInfo0.983 s412 sx419
windows.malware.hollowprocesses.HollowProcesses0.648 s240 sx370
configwriter.ConfigWriter0.043 s14.5 sx337
layerwriter.LayerWriter0.039 s11.9 sx304
windows.registry.hivelist.HiveList0.038 s7.54 sx198

Windows XP 生キャプチャ、512 MB

プラグインRustPython高速化倍率
windows.suspicious_threads.SuspiciousThreads0.184 s34.5 sx188
windows.malware.suspicious_threads.SuspiciousThreads0.2 s33.2 sx166
windows.malware.hollowprocesses.HollowProcesses0.209 s31.0 sx148
windows.vadinfo.VadInfo0.263 s38.5 sx146
windows.hollowprocesses.HollowProcesses0.207 s28.1 sx136
windows.mftscan.ResidentData0.205 s27.6 sx135
windows.malfind.Malfind0.203 s26.3 sx130
windows.mftscan.MFTScan0.393 s48.2 sx123
windows.malware.malfind.Malfind0.24 s28.2 sx118
windows.verinfo.VerInfo0.215 s25.1 sx117

Linux 3.2 生キャプチャ、512 MB

プラグインRustPython高速化倍率
linux.library_list.LibraryList0.525 s917 sx1747
linux.pscallstack.PsCallStack0.31 s98.8 sx319
linux.lsmod.Lsmod0.059 s9.58 sx162
linux.malware.check_idt.Check_idt0.11 s15.2 sx138
linux.check_idt.Check_idt0.115 s15.1 sx131
linux.tty_check.tty_check0.114 s14.3 sx125
linux.malware.tty_check.Tty_Check0.129 s15.0 sx116
linux.malware.check_modules.Check_modules0.055 s5.74 sx104
linux.kallsyms.Kallsyms0.278 s28.9 sx104
linux.capabilities.Capabilities0.056 s5.82 sx104

既知の差異

これらは意図的なものであり、変更されることはありません:

  • --save-config と timeliner --record-config は、イメージを記述するすべての設定を記録しますが、Python 版が行う「インポートされたコンポーネントが十分に新しいか」というチェックは記録しません。このポートにはそのようなチェックを記録する機能がないためです。
  • frameworkinfo と isfinfo はイメージではなくツール自体を記述するため、このポート自身のレイヤー、プラグイン、シンボルファイルを報告します。
  • --help 内でキャッシュディレクトリを示す行は、このポート自身のキャッシュを指します。
  • windows.callbacks は、解析できないシャットダウン通知を省略します。64 ビットイメージでは Python 版はそれらに対して一切チェックを行わないため、Windows 11 のキャプチャで 2 件のエントリを報告しますが、これはコールバックではなく ntoskrnl 自身の命令バイトであり、未解析としてマークされます。

再現不可能なもの

ここにあるものは一致しません。なぜなら、同じツールであっても出力が 2 回同じになることはないからです:

  • linux.pagecache.RecoverFs は、書き出す tarball 内のすべてのファイルにプラグインが実行された瞬間のタイムスタンプを付けるため、2 回の実行で一致することはなく、Python での 2 回の実行でも一致しません。テーブルも展開後のツリーも一致します。
  • linux.mountinfo --mount-format は Python の set を結合するため、2 回の Python 実行間で列の順序が変わります。この移植版では、マウントオプションを先に、ファイルシステムオプションを後に、カーネルが保持している順序で一覧表示します。
  • フィルタなしの timeliner は、各プラグインの後にタイムラインを再度追加します。また、プラグインが実行される順序は os.walk がプラグインディレクトリを返した順序であり、これはリリースではなくインストール環境に依存する性質です。同じバージョンの Python を 2 つインストールすると、同じイメージに対して異なる合計を報告します。この移植版は固定のリストを実行し、ext4 上の標準インストールが生成する順序に従います。
  • より大きなキャプチャに対する windows.memmap.Memmap は、途中で out of memory killer によって強制終了されます。どこで停止するかはその時点の空きメモリに依存するため、2 回の Python 実行も互いに一致しません。Windows XP のキャプチャでは両方とも完了し、出力は一致します。

Python 版が最初に停止する箇所

これらが異なるのは、Python 版が途中で終了し、この移植版は終了しないためです。Python 版が停止する前に書き込んだすべての行は正確に再現され、残りは Python 版が到達しなかった部分です:

ツールをダウンロード