
Durchsuche jeden Speicherabbild. Finde, was verborgen ist. Linux + Windows-Kernel-Forensik aus einer einzigen statischen Rust-Binärdatei — kein Python erforderlich.
Ein Speicherforensik-Toolkit, das Windows-Kernel selbst profiliert — und Prozess für Prozess gegen Volatility 3 abgeglichen wird.
mem4n6 liest jedes gängige Dump-Format (LiME, AVML, ELF core, Windows-Crash-Dumps, Ruhezustandsdateien, VMware-Save-States, kdump, raw…) und durchläuft Prozesse, Threads, Module, Netzwerkverbindungen und injizierten Speicher — aus einer einzigen statischen Binärdatei, die man einmal kompiliert und überallhin kopieren kann, ohne Python, ohne Laufzeitumgebung, ohne vorab bereitgestellten Symbolkatalog. Unter Windows erstellt es sein eigenes Profil: den ntoskrnl im physischen Speicher lokalisieren, seine PDB-GUID aus dem CodeView-Datensatz lesen, das passende Volatility-3-ISF auflösen, die Kernel-Basis unter modernem KASLR wiederherstellen und PsActiveProcessHead aus der Symboltabelle rekonstruieren — dieselbe Self-Profiling-Kette, die auch Volatility 3 und MemProcFS verwenden, neu implementiert in Rust.
Da die Messlatte für ein Beweiswerkzeug Korrektheit ist, wird der Prozess-Walker gegen eine unabhängige Referenzimplementierung — Volatility 3 — an einem echten 2-GB-Windows-10-Image abgeglichen (eine übereinstimmende Referenz ist starke Evidenz, kein Beweis; die Rohbytes sind die Ground Truth):
windows.pslist auf DESKTOP-SDN1RPT.mem | mem4n6 vs Volatility 3 |
|---|---|
| Übereinstimmende Prozesse | 94 / 94 gemeinsame PIDs — exakte PID, PPID, Name, Erstellungszeit |
| Nicht gefunden (vol3 hat sie gefunden, mem4n6 nicht) | 0 |
| False Positives (mem4n6 hat sie gefunden, vol3 nicht) | 0 |
mem4n6 stimmt exakt mit Volatility 3 überein — einschließlich der Wiederherstellung von 11 durch einen Live-Acquisition-Smear verwaisten Prozessen über einen bidirektionalen ActiveProcessLinks-Durchlauf. Ein zweites unabhängiges Orakel (MemProcFS) bestätigt eine saubere Teilmenge — seine process_list mit 77 Prozessen ist vollständig in der Menge von mem4n6 enthalten, ohne einen einzigen MemProcFS-only-Prozess (Details). Siehe docs/validation.md für die vollständige Differenzanalyse und die Reproduktionsschritte.
Installiere mit cargo install mem4n6 oder hole dir eine vorgefertigte statische Binärdatei aus dem neuesten Release — die Linux-Builds sind static-PIE (musl: überallhin kopierbar, ohne glibc), mit macOS, Windows und einer SHA-256-checksums.txt daneben.
Oder baue aus dem Quellcode (~ein Befehl):```bash git clone https://github.com/SecurityRonin/memory-forensic.git cd memory-forensic && cargo build --release ./target/release/mem4n6 --help
Diese Dev-Build verknüpft libc dynamisch; um das vollständig statische Binary des Releases lokal zu reproduzieren, füge das musl-Target hinzu: `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
Symboldateien sind ISF JSON — die gleichen Pakete, die Volatility 3 verwendet, sodass ein vorhandener Symbol-Cache unverändert funktioniert.
| mem4n6 | Volatility 3 | MemProcFS | MemNixFS | |
|---|---|---|---|---|
| Bereitstellung | Rust · eine einzelne statische Binärdatei | Python · Interpreter + Abhängigkeiten | C(+Rust) · Bibliotheken | C++ · Dateisystem-Mount |
| Windows-Selbstprofiling (Scan → PDB-GUID → Symbole) | ✅ | ✅ | ✅ | n/a — Linux-Dumps |
| Header-loses DTB über den Boot-Low-Stub + Kernel-Basis mit Seitengranularität | ✅ | selbstreferenzierende PML4 + Image-Scan | ✅ Low-Stub | n/a — Linux |
| Offline-/Air-Gapped-Symbolmodus | ✅ --offline | ISF-Paket oder Netzwerk | Symbole / Netzwerk | ✅ BTF-from-dump |
Panikfrei bei nicht vertrauenswürdigen Dumps (unsafe verboten; unwrap/expect auf Parsing-Pfaden verboten) | ✅ | — | — | — (C++) |
| Gegen Volatility 3 geprüft | ✅ (docs/validation.md) | — (die Referenz) | — | — |
mem4n6 ist unseres Wissens die einzige Rust-Implementierung der vollständigen Kette Dump → Kernel-Scan → PDB-GUID → Symbolauflösung → DTB. Die technische Abstammungslinie — WinDbg-Symbolserver, Brendan Dolan-Gavitts pdbparse, Rekall, Volatility 3 und Ulf Frisks MemProcFS — ist gut etabliert; mem4n6 implementiert sie in einem Clean-Room neu und validiert das Ergebnis gegen die Referenz. MemNixFS bringt dieselbe Speicher-als-Dateisystem-Idee zu Linux-Dumps – einhängen und durchsuchen, mit Symbolen, die aus dem eigenen BTF des Kernels abgeleitet werden, wenn kein ISF existiert; die n/a-Zellen oben markieren einen Unterschied im Umfang (Linux-Images und eine Dateisystem-UX vs. mem4n6s Windows-validierter CLI-Walker), keine Lücke. Die Verankerung über den Boot-Low-Stub / PROCESSOR_START_BLOCK folgt Alex Ionescus REcon 2017 Getting Physical.
git clone https://github.com/SecurityRonin/memory-forensic.git cd memory-forensic cargo build --release ./target/release/mem4n6 --help
---
## Kurzreferenz```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