
あらゆるメモリダンプを走査。隠されたものを見つけ出す。単一の静的RustバイナリによるLinux + Windowsカーネルフォレンジック — Pythonは不要。
Windows カーネルを自己プロファイリングするメモリフォレンジックツールキット — Volatility 3 に対してプロセス単位で相互検証されています。
mem4n6 は、一般的なすべてのダンプ形式(LiME、AVML、ELF core、Windows クラッシュダンプ、ハイバネーションファイル、VMware セーブステート、kdump、raw…)を読み取り、プロセス、スレッド、モジュール、ネットワーク接続、インジェクションされたメモリを走査します。1 つの静的バイナリ から — 一度コンパイルすればどこへでもコピーでき、Python もランタイムも事前ステージング済みシンボルカタログも不要です。Windows では独自のプロファイルを構築します。物理メモリ内の ntoskrnl を特定し、CodeView レコードから PDB GUID を読み取り、一致する Volatility-3 ISF を解決し、最新の KASLR 下でカーネルベースを復元し、シンボルテーブルから PsActiveProcessHead を再構築します — Volatility 3 と MemProcFS が使用するのと同じ自己プロファイリングチェーンを Rust で再実装したものです。
証拠ツールの基準は 正確性 であるため、プロセスウォーカーは、実際の 2 GB Windows 10 イメージ上で 独立したリファレンス実装 — Volatility 3 — と相互検証されています(リファレンスが一致することは強力な証拠であり、証明ではありません。生のバイト列が真実の基準です)。
DESKTOP-SDN1RPT.mem 上の windows.pslist | mem4n6 vs Volatility 3 |
|---|---|
| 一致したプロセス | 94 / 94 の共有 PID — PID、PPID、名前、作成時刻が完全一致 |
| 見逃し(vol3 で見つかり、mem4n6 では見つからなかったもの) | 0 |
| 誤検出(mem4n6 で見つかり、vol3 では見つからなかったもの) | 0 |
mem4n6 は Volatility 3 と 完全に一致 します — ライブ取得時のスミアによって孤立した 11 プロセスを、双方向の ActiveProcessLinks 走査で復元することも含みます。もう 1 つの独立したオラクル(MemProcFS)がクリーンなサブセットを確認しています。その 77 プロセスの process_list は mem4n6 の集合に完全に含まれており、MemProcFS のみのプロセスはゼロです(詳細)。完全な差分と再現手順については docs/validation.md を参照してください。
cargo install mem4n6 でインストールするか、最新リリース からビルド済みの 静的バイナリ を入手してください。Linux ビルドは static-PIE(musl: どこへでもコピーでき、glibc 不要)で、macOS、Windows、併せて SHA-256 の checksums.txt も用意されています。
またはソースからビルド(約 1 コマンド):```bash git clone https://github.com/SecurityRonin/memory-forensic.git cd memory-forensic && cargo build --release ./target/release/mem4n6 --help
その開発ビルドはlibcを動的にリンクします。リリース版の完全静的バイナリをローカルで再現するには、muslターゲットを追加してください: `rustup target add x86_64-unknown-linux-musl && cargo build --release --target x86_64-unknown-linux-musl`。```bash
# Inspect any dump — format, ranges, embedded metadata (no symbols needed)
mem4n6 info win10.mem
# Windows process tree. The ISF is resolved from the kernel's own PDB GUID;
# raw .mem dumps take the page-table base via --cr3 (crash dumps carry their own).
mem4n6 ps --symbols ntkrnlmp.json --cr3 0x1ad000 --tree win10.mem
# Linux process tree from a LiME capture
mem4n6 ps --symbols linux.json --tree memdump.lime
# Air-gapped lab? Never touch the network for symbols:
mem4n6 ps --symbols ntkrnlmp.json --offline win10.mem
シンボルファイルは ISF JSON です — Volatility 3 が使用するものと同じパックなので、既存のシンボルキャッシュがそのまま機能します。
mem4n6 は、私たちの知る限り、完全なダンプ → カーネルスキャン → PDB-GUID → シンボル解決 → DTB チェーンの唯一の Rust 実装です。この技術の系譜 — WinDbg のシンボルサーバー、Brendan Dolan-Gavitt の pdbparse、Rekall、Volatility 3、そして Ulf Frisk の MemProcFS — は確立されています。mem4n6 はそれをクリーンルームで再実装し、その結果をリファレンスに対して検証しています。MemNixFS は、その同じ メモリをファイルシステムとして扱う アイデアを Linux ダンプに適用します — マウントしてブラウズでき、ISF が存在しない場合はカーネル自身の BTF からシンボルを取得します。上記の n/a セルは、(Linux イメージとファイルシステム UX 対 mem4n6 の Windows 検証済み CLI ウォーカーという) スコープの違いを示すものであり、ギャップではありません。ブート low-stub / PROCESSOR_START_BLOCK アンカーは、Alex Ionescu の REcon 2017 Getting Physical に従っています。
git clone https://github.com/SecurityRonin/memory-forensic.git cd memory-forensic cargo build --release ./target/release/mem4n6 --help
---
## クイックリファレンス```bash
# Show dump format and physical memory ranges
mem4n6 info memdump.dmp
# Process tree with threads and DLLs
mem4n6 ps --symbols ntkrnlmp.json --tree --threads --dlls memdump.dmp
# Network connections (json / csv / table)
mem4n6 net --symbols ntkrnlmp.json --output json memdump.dmp
# Kernel integrity checks (SSDT, IDT, callbacks, hooks)
mem4n6 check --symbols ntkrnlmp.json --ssdt --callbacks memdump.dmp
# Linux syscall hook and malfind scan
mem4n6 check --symbols linux.json --hooks --malfind memdump.lime
# String extraction with YARA rules
mem4n6 strings --rules ./yara-rules/ --min-length 8 memdump.dmp
# Hash lookup against NSRL (known-good) and MalwareBazaar (known-bad)
mem4n6 hash --lookup memdump.dmp
# Extract framebuffer screenshot from live memory dump
mem4n6 framebuf --symbols linux.json --png screen.png memdump.dmp
# Recover files from tmpfs mounts + detect memfd fileless ELF execution
mem4n6 check --symbols linux.json --tmpfs-recovery --memfd memdump.lime
# Detect EDR bypass: direct syscalls, ETW patching, AMSI/DSE bypass
mem4n6 check --symbols ntkrnlmp.json --direct-syscalls --etw-patch --amsi-bypass memdump.dmp
# Novel kernel interface abuse: io_uring, netfilter hooks, perf_event
mem4n6 check --symbols linux.json --io-uring --netfilter --perf-event memdump.lime
# Cross-artifact ATT&CK correlation across all walkers
mem4n6 correlate --symbols ntkrnlmp.json --output json memdump.dmp
SymbolファイルはISF JSON形式で、Volatility 3シンボルパックと互換性があります。
mem4n6 check --symbols linux.json --hooks --idt --syscalls memdump.lime
コンテンツがありません。翻訳対象のMarkdownを貼り付けてください。```
[HOOK] sys_call_table[59] execve → 0xffffffffc0a2f3d0 (outside kernel text)
[HOOK] ftrace_ops[0] target: vfs_read → 0xffffffffc0a2f410 (module: libymv_ko)
[HOOK] security_inode_getattr → 0xffffffffc0a2f450 (LSM hook patched)
3つのフックタイプ — システムコールテーブル、ftrace、LSM — はすべて同じカーネルモジュールに解決される。モジュールリストを相互参照すると、それが既知の正常なセットに含まれていないことが確認できる。
名前パターンマッチングは、再コンパイルまたはリネームされたルートキットの亜種を見逃す。ELF動的シンボル解析は、名前に関係なくそれらを検出する:```bash mem4n6 check --symbols linux.json --elf-hooks memdump.lime
No input content was provided to translate.```
[ROOTKIT] /tmp/.x/libhider.so signals=[elf.hooks.process_hiding, elf.hooks.pam_credential_theft]
exports: readdir64, getdents64, pam_get_item, pam_authenticate
MITRE: T1014 (Rootkit), T1556.003 (Modify Authentication Process)
loaded in 100% of processes (23/23)
[ROOTKIT] /tmp/.x/libhider.so .rodata match: "UID:%d:" (Father PAM hook format string, weight=90)
memf-linux は、プロセスメモリにマッピングされたすべてのライブラリをスキャンして、以下を検出します:
.rodata に埋め込まれたフォーマット文字列(例: UID:%d:、silly.txt)。バイナリのストリッピングや名前変更後も残存しますmem4n6 check --symbols ntkrnlmp.json --dpapi-keys memdump.dmp
mem4n6 check --symbols ntkrnlmp.json --browser-cookies memdump.dmp
Please provide the Markdown content to translate.```
[DPAPI] GUID={A1B2C3D4-...} blob_len=680 source=lsass.exe
[COOKIE] msedge.exe domain=.github.com name=user_session value=secretvalue...
[COOKIE] chrome.exe (v10-encrypted) — key material required for decryption
Windows 資格情報ウォーカーが対象とするのは次のとおりです:
g_MasterKeyCache リンクリストを走査し、キャッシュされたマスターキーごとに GUID + 暗号化 blob を抽出しますv10/v20 + 12バイトのノンス)を探し、鍵素材が利用可能な場合は復号しますmem4n6 framebuf --symbols ntkrnlmp.json --png screen.png memdump.dmp
Extracts the framebuffer from a live or hibernation memory dump and writes it as a PNG. Works on both Linux (DRM/KMS `drm_framebuffer` walker) and Windows (session framebuffer via `win32k` pool scan). Useful for capturing the screen state at the moment of acquisition without booting the image.
---
## Recover files that never touched disk
Attackers using tmpfs or `memfd_create(2)` leave no filesystem artifacts — the binary exists only in RAM.```bash
# Recover inodes and file content from Linux tmpfs/ramfs mounts
mem4n6 check --symbols linux.json --tmpfs-recovery memdump.lime
# Detect ELF binaries running from anonymous memfd file descriptors
mem4n6 check --symbols linux.json --memfd memdump.lime
Please provide the Markdown content to be translated.``` [TMPFS] /tmp/.x (dev=tmpfs) 3 inodes recovered inode 12: ELF x86_64 size=847KB sha256=deadbeef... (no disk copy) inode 13: config.sh size=1.2KB content recovered inode 14: keys.txt size=512B content recovered
[MEMFD] pid=2341 (python3) fd=4 name="" size=3.4MB ELF x86_64 No path on disk — binary executed entirely from anonymous memory. MITRE: T1620 (Reflective Code Loading)
tmpfs リカバリはカーネルの `vfsmount` テーブルを走査し、page-cache ページから inode コンテンツを再構築します。memfd 検出は、各プロセスのオープンされたファイル記述子テーブルを走査し、`memfd_create(2)` で作成された匿名 inode にフラグを立てます。
---
## EDR回避とログ抑制の検出
現代の攻撃用ツールは、ディスクに触れずに検出を回避するため、Windows セキュリティ計測機構をメモリ内でパッチします。```bash
# Direct syscalls — Syswhispers/Hell's Gate bypass Win32 API entirely
mem4n6 check --symbols ntkrnlmp.json --direct-syscalls memdump.dmp
# ETW patching — log suppression via ret/xor at ETW write functions
mem4n6 check --symbols ntkrnlmp.json --etw-patch memdump.dmp
# AMSI bypass — script-scanning suppression via amsi.dll patch
mem4n6 check --symbols ntkrnlmp.json --amsi-bypass memdump.dmp
# DSE bypass — Driver Signature Enforcement disabled for unsigned drivers
mem4n6 check --symbols ntkrnlmp.json --dse-bypass memdump.dmp
No translatable content was provided in this chunk. The INPUT section is empty.``` [DIRECT-SYSCALL] powershell.exe (PID 4412) stub at 0x7ff800a1000 mov r10,rcx / mov eax,0x3c / syscall — NtCreateThreadEx bypassing ntdll MITRE: T1055.012 (Process Injection: Process Hollowing)
[ETW-PATCH] svchost.exe (PID 1200) EtwEventWrite → ret at offset +0 Expected: 4C 8B DC Got: C3 90 90 (patched to immediate return) MITRE: T1562.006 (Impair Defenses: Indicator Blocking)
[AMSI-BYPASS] powershell.exe (PID 4412) AmsiScanBuffer → xor eax,eax / ret MITRE: T1562.001 (Impair Defenses: Disable or Modify Tools)
[DSE-BYPASS] g_CiEnabled=0 CipInitialize patch detected MITRE: T1014 (Rootkit), T1553.006 (Subvert Trust Controls)
---
## Linuxカーネルインターフェースの新たな悪用
古典的なsyscallフックを超えて、現代のルートキットは新しいカーネルサブシステムを悪用します。`memory-forensic`はその3つすべてをカバーしています:```bash
mem4n6 check --symbols linux.json --io-uring --netfilter --perf-event memdump.lime
Please provide the markdown content to translate.``` [IO_URING] pid=3311 (malware) ring at 0x7f0000000000 ops=1024 pending SQPOLL thread pinned to cpu=0 — I/O continues without process context MITRE: T1071 (Application Layer Protocol)
[NETFILTER] NF_INET_PRE_ROUTING hook[0] → 0xffffffffc0b31240 (outside kernel text) Module not in module list — DKOM-hidden or manually unmapped MITRE: T1014 (Rootkit)
[PERF-EVENT] pid=1 (systemd) type=HARDWARE cpu=-1 overflow_handler patched → 0xffffffffc0b31500 MITRE: T1056 (Input Capture)
---
## コンテナエスケープの指標```bash
mem4n6 check --symbols linux.json --container-escape memdump.lime
入力が空です。翻訳するコンテンツが提供されていません。``` [CONTAINER-ESCAPE] pid=8801 (bash) shares host user namespace uid_map: 0 0 4294967295 (full host UID range — privileged mapping) cgroup: / (host root cgroup, not namespaced) mount ns: host (same as pid 1) MITRE: T1611 (Escape to Host)
全プロセスについて user、mount、PID、net、cgroup 名前空間をウォークし、分離されるべきでありながらホストレベルの名前空間を共有しているプロセスをフラグします。これは、達成方法に関係なくコンテナエスケープの構造的シグネチャです。
---
## アーティファクト横断的な ATT&CK 相関
`memf-correlate` は、すべてのウォーカーからの発見結果をタイムラインに結合し、深刻度ごとに異常をスコアリングし、各項目を MITRE ATT&CK テクニックにマッピングします。ウォーカーを1つずつ実行することなく:```bash
mem4n6 correlate --symbols ntkrnlmp.json --output json memdump.dmp > findings.json
入力チャンク(翻訳対象のテキスト)が提供されていません。翻訳する内容が空のため、翻訳を生成できません。```json { "technique": "T1055.012", "name": "Process Hollowing", "severity": "critical", "evidence": [ { "source": "vad", "detail": "svchost.exe VAD 0x140000–0x160000 RWX, no backing file" }, { "source": "ldrmodules","detail": "module in VAD but absent from InLoadOrderList" }, { "source": "iat_hooks", "detail": "CreateRemoteThread IAT entry patched → 0x14001a30" } ], "process": { "name": "svchost.exe", "pid": 1200, "ppid": 508 } }
プロセス、ネットワーク、モジュール、フック、および資格情報ウォーカーの結果は、スコアリング前にプロセスと時間で関連付けられ、アナリストが手動で結合する必要があるウォーカーごとの出力ではなく、ATT&CKタグ付きの検出結果を生成します。
---
## 対応メモリフォーマット
| Format | Source | Auto-detected |
|---|---|---|
| LiME (`.lime`) | Linuxカーネルモジュール | Yes |
| AVML v2 | Azure AVML | Yes |
| ELF Core | QEMU、`gcore` | Yes |
| Windows Crash Dump (`.dmp`) | DumpIt、WinDbg | Yes |
| Hiberfil.sys | Windows休止状態 / 高速スタートアップ | Yes |
| VMware State (`.vmss`, `.vmsn`) | VMware Workstation / ESXi | Yes |
| kdump / diskdump | `makedumpfile` | Yes |
| Raw / flat | 任意のフォールバック | Yes |
フォーマットはファイルヘッダーから検出されます — フラグは不要です。
---
## 何が違うのか
最も近い代替手段は、**Volatility 3**(Python、プラグインアーキテクチャ)、**MemProcFS**(C言語とRustバインディング、主にWindows)、**Rekall**(Python、メンテナンス停止)、**MemNixFS**(C++、Linuxダンプをファイルシステムとしてマウント)です。以下の比較は、各ツールの公式コアと既知のプラグインリポジトリを反映しています。MemNixFSはファイルシステムUXを備えた*Linux*イメージを対象としているため、mem4n6のページキャッシュファイルリカバリを共有しますが、WindowsセルフプロファイリングとEDRバイパスの行では`n/a`です。
### 同等性 — 成熟したツールと共有される機能
| | memory-forensic | Volatility 3 | MemProcFS | MemNixFS | Rekall |
|--|:-:|:-:|:-:|:-:|:-:|
| Linux + Windowsカーネルウォーカー | ✅ | ✅ | Windows優先 | Linuxのみ | ✅ |
| プロセス、モジュール、ネットワーク列挙 | ✅ | ✅ | ✅ | ✅ | ✅ |
| メモリインジェクションの検出 | ✅ | ✅ | ✅ | ✅ | ✅ |
| ISFシンボルパック互換 | ✅ | ✅ | — | ✅ | — |
| Linux / macOSで動作 | ✅ | ✅ | 一部 | Linux + Windows | ✅ |
| 活発にメンテナンスされている | ✅ | ✅ | ✅ | ✅ | — |
| 無料&オープンソース | ✅ | ✅ | ✅ | ライセンスなし | ✅ |
### 他ツールの公式ディストリビューションには存在しない機能
| | memory-forensic | Volatility 3 | MemProcFS | MemNixFS | Rekall |
|--|:-:|:-:|:-:|:-:|:-:|
| 単一の静的バイナリ — Python不要、ランタイム不要 | ✅ | — | — | 一部 | — |
| Rustツールに組み込むためのライブラリAPI | ✅ | — | ✅ | — | — |
| ELFビヘイビアルルートキットのフィンガープリント | ✅ | — | — | — | — |
| tmpfs / ramfsファイルリカバリ | ✅ | — | — | ✅ | — |
| memfdファイルレス実行の検出 | ✅ | — | — | — | — |
| 直接システムコール / EDRバイパス検出 | ✅ | plugin? | — | n/a | — |
| ETW / AMSI / DSEバイパス検出 | ✅ | plugin? | — | n/a | — |
| io_uring / netfilter / perf\_eventの悪用 | ✅ | — | — | — | — |
| コンテナエスケープの兆候 | ✅ | — | — | — | — |
| DPAPIキー + Chrome Cookie抽出 | ✅ | plugin? | — | n/a | — |
| メモリからのShellbagsフォルダアクセス証跡 ‡ | ✅ | — | — | n/a | — |
| フレームバッファのスクリーンショット | ✅ | plugin? | — | — | — |
| アーティファクト横断のATT&CK相関 | ✅ | — | — | — | — |
| 安全な出力 — RFC 4180、数式インジェクションガード、bidi除去 | ✅ | — | — | — | — |
> **`plugin?`** — この機能はVolatility 3コミュニティエコシステムには存在する可能性がありますが、執筆時点の公式コアおよびプラグインリポジトリには含まれていません。結論を出す前に確認してください。
>
> **‡ メモリからのShellbags** — Volatility 2はRAMからShellbagsを復元していました(コミュニティの`shellbags`プラグイン、Kovar、その後Lo)。Volatility 3では移植されなかったため、メモリのみによるShellbag復元はvol2→vol3移行で後退しました。mem4n6は、メモリ内の`UsrClass.dat`/`NTUSER.DAT`ハイブ内の`Shell\BagMRU`を直接ウォークし、RAMのみのケース(ディスク未取得)でのvol2時代の機能を復元するか、ディスク上のハイブを裏付けることができます。ディスク*が*利用可能な場合の通常の経路は、イメージをマウントしてハイブファイルに対してSBECmd / RegRipperを実行することです。メモリウォークにより、「ハイブをダンプしてから解析する」という2段階の作業を1つにまとめます。検証は**tier-2**です。`citadeldc01.mem`から抽出したハイブに対して`regipy`で導出されたグラウンドトゥルースを使用しています。Szechuanケースには公開された第三者のShellbag正解キーが存在しないため、これは自己導出のオラクル(実ツール+実イメージ)であり、第三者のキーではありません。
---
## 信頼するが検証する
**信頼できない、攻撃者が制御可能な**メモリイメージを解析するツールは、嘘をつかず、クラッシュもしないことが求められます。mem4n6はこの基準を満たすように構築されています:
- **敵対的入力に対するlintによるパニックフリー。** 解析パスは`unwrap`/`expect`/`panic!`および未チェックのインデックス指定(`clippy::unwrap_used`/`expect_used` = deny)を禁止しています。すべての長さ、オフセット、ポインタ読み取りは境界チェックされ、優雅に劣化します — スミアされたプロセスリストは見つかったものを返し、中断しません。(ビルダーAPIはプログラマーのエラー(必須フィールドの欠落)ではパニックしますが、それは設計上であり、ダンプ内容でパニックすることはありません。)
- **デフォルトでメモリ安全。** ワークスペース全体で`unsafe_code = "deny"`。唯一の`unsafe`は境界付きの`memmap2`ファイルマッピング(ダンプ、ページファイル、既知のハッシュDB)であり、それぞれ個別に正当化されています — そのため*forbidden*ではなく*bounded (mmap only)* のバッジになっています。
- **独自のフィクスチャだけでなく、独立したオラクルに対して検証済み。** Windowsプロセスウォーカーは、実際の2 GB Win10イメージ上でVolatility 3と差分比較され、共有されたすべてのプロセスで完全に一致し、誤検知ゼロです([`docs/validation.md`](https://github.com/securityronin/memory-forensic/blob/HEAD/docs/validation.md))。
- **安全な出力。** すべてのチャネル(テーブル/CSV/JSON)は、RFC 4180のクォート、スプレッドシートの数式インジェクションガード、およびバイディ/制御文字の除去を、攻撃者が制御する文字列がターミナルやパイプラインに到達する前に適用します。
---
## ライブラリの使用```rust
use mem4n6_format::open;
use mem4n6_core::vas::{TranslationMode, VirtualAddressSpace};
use mem4n6_core::object_reader::ObjectReader;
use mem4n6_symbols::isf::IsfResolver;
// Open any supported format — detected from file headers
let dump = open("memdump.dmp")?;
let symbols = IsfResolver::from_file("ntkrnlmp.json")?;
// Walk the x86_64 4-level page table
let vas = VirtualAddressSpace::new(dump.clone(), TranslationMode::X64, cr3);
let reader = ObjectReader::new(vas, Box::new(symbols));
// Walk EPROCESS list
for proc in reader.eprocess_list()? {
println!("{} (PID {})", proc.image_name()?, proc.pid()?);
}
issen — issen mem4n6 サブコマンドは、このワークスペースから直接メモリ取得とトリアージレポート作成を駆動します。
Andrew Case と Volatility Foundation — このプロジェクトは、そのISF形式とプラグインアーキテクチャとシンボル互換性を持っています。
Brendan Dolan-Gavitt — DKOM と VAD ベースのプロセス隠蔽に関する研究は、隠しプロセス検出ウォーカーに反映されています。
Ulf Frisk / MemProcFS — ファイルシステムをメモリインターフェースとして扱うモデルとフォレンジックモードの設計は、このライブラリが復元されたアーティファクトを提示する方法に影響を与えました。
jam1garner — binrw(宣言的なバイナリ形式解析により、フォーマット層を安全かつ読みやすくします)に対して。
S12 — 解説記事 Kernel Dynamic Offset Resolution Using PDB Symbols は、ダンプ内の ntoskrnl PE のスキャン、CodeView PDB GUID の抽出、実行時に msdl.microsoft.com から一致する PDB を取得する一連の流れを解説しています。この技術は、memf-symbols の AutoProfile 実装に直接影響を与えました。
Alex Ionescu — Getting Physical With USB Type-C: Windows 10 RAM Forensics and UEFI Attacks(REcon Brussels 2017)は、HAL の HalpLowStub が非公開の PROCESSOR_START_BLOCK であること、つまりカーネル CR3/DTB とカーネル仮想アドレスのヒントを保持する低物理メモリのアンカー(0x1000–0x100000 でシグネチャスキャンされる)であることを解説しています。これは memf-symbols における find_low_stub と、ヘッダーレスDTB/カーネルベース復元の基礎となっています。
Microsoft Symbol Server(msdl.microsoft.com)— すべての Windows カーネルビルド向けの公開 PDB ファイルをホストしており、プリステージされたシンボルファイルなしで実行時シンボル解決を可能にする上流リソースです。
プライバシーポリシー · 利用規約 · © 2026 Security Ronin Ltd.
| mem4n6 | Volatility 3 | MemProcFS | MemNixFS |
|---|
| デプロイ | Rust · 単一の静的バイナリ | Python · インタープリタ + 依存関係 | C(+Rust) · ライブラリ | C++ · ファイルシステムマウント |
| Windows セルフプロファイリング (スキャン → PDB GUID → シンボル) | ✅ | ✅ | ✅ | n/a — Linux ダンプ |
| ブート low stub + ページ粒度のカーネルベースによるヘッダーレス DTB | ✅ | self-ref PML4 + イメージスキャン | ✅ low stub | n/a — Linux |
| オフライン / エアギャップのシンボルモード | ✅ --offline | ISF パックまたはネットワーク | シンボル / ネットワーク | ✅ BTF-from-dump |
信頼できないダンプに対するパニックフリー (unsafe-deny; unwrap/expect は解析パスで拒否) | ✅ | — | — | — (C++) |
| Volatility 3 と相互検証済み | ✅ (docs/validation.md) | — (リファレンス) | — | — |
| クレート | 目的 |
|---|
memf-format | フォーマット検出と物理メモリプロバイダ。LiME、AVML、ELF Core、Windows クラッシュダンプ、hiberfil.sys、VMware state、kdump、raw flat イメージのパーサ。 |
memf-core | ページテーブルウォーキング(x86_64 4レベル/5レベル、AArch64、x86 PAE/non-PAE)、カーネル構造体トラバーサルのための高レベル ObjectReader、ページファイルアクセス、LZO 伸張、フレームバッファ→PNG スクリーンショットのエンコード(Linux EFI/VESA および Windows win32k フレームバッファウォーカーと組み合わせて使用)。 |
memf-linux | Linux カーネルウォーカー:task_struct プロセスリスト、ネットワーク接続、カーネルモジュール、オープンファイル、eBPF プログラム、ftrace/IDT/syscall フック検出、名前空間と cgroup の列挙、DKOM により隠蔽されたプロセスの検出、コンテナエスケープの兆候、ELF 動的シンボル解析と LD_PRELOAD ルートキットの挙動フィンガープリンティング、ライブラリのグローバル普及率検出、および約45の追加ウォーカー。 |
memf-windows | Windows NT カーネルウォーカー:EPROCESS/ETHREAD 列挙、DLL とドライバのリスト、ハンドルテーブル、ネットワークソケット、プールタグスキャン、コールバックテーブル、SSDT、ETW、クリップボード、DNS キャッシュ、Kerberos チケット、LSASS の g_MasterKeyCache からの DPAPI マスターキー抽出、Chrome v10/v20 AES-GCM 暗号化 Cookie の検出、BitLocker キー、SAM/NTLM ハッシュ、インジェクションされたメモリの検出、および約55の追加ウォーカー。 |
memf-strings | 文字列抽出(ASCII、UTF-8、UTF-16LE)と、IoC カテゴリへの正規表現分類:URL、IP アドレス、ドメイン、レジストリキー、暗号通貨ウォレットアドレス、秘密鍵、シェルコマンド。 |
memf-symbols | ISF JSON、BTF(Linux)、PDB ファイルからのシンボル解決。AutoProfile を含む — ゼロコンフィグの Windows カーネル構造体解決:ダンプ内の ntoskrnl をスキャンし、msdl.microsoft.com から正確な PDB を取得して解析し、SymbolResolver を返します。シンボルファイルは不要です。 |
memf-correlate | MITRE ATT&CK テクニックタグ付けによるアーティファクト横断の相関、プロセスのツリー再構築、異常スコアリング、タイムライン生成。 |
forensic-hashdb | Zero-FP ハッシュデータベース:NSRL/CIRCL 既知グッドルックアップ、MalwareBazaar/VirusShare 既知バッドルックアップ、および組み込みの loldrivers.io 脆弱 Windows ドライバハッシュ。 |