
Исследуйте любой дамп памяти. Найдите скрытое. Форензика ядра Linux + Windows из одного статического Rust-бинарника — Python не требуется.
Инструмент для криминалистики памяти, который сам профилирует ядро Windows — и сверяется процесс-за-процессом с Volatility 3.
mem4n6 читает все распространённые форматы дампов (LiME, AVML, ELF core, crash-дампы Windows, файлы гибернации, сохранённые состояния VMware, kdump, raw…) и обходит процессы, потоки, модули, сетевые соединения и внедрённую память — из одного статического бинарника, который вы компилируете один раз и копируете куда угодно, без Python, без рантайма, без предварительно подготовленного каталога символов. В Windows он строит собственный профиль: находит ntoskrnl в физической памяти, считывает его PDB GUID из записи CodeView, подбирает соответствующий ISF Volatility-3, восстанавливает базу ядра при современном KASLR и реконструирует PsActiveProcessHead из таблицы символов — та же цепочка само-профилирования, которую используют Volatility 3 и MemProcFS, реализованная заново на Rust.
Поскольку планка для инструмента доказательной ценности — корректность, обход процессов сверяется с независимой эталонной реализацией — Volatility 3 — на реальном образе Windows 10 объёмом 2 ГБ (согласие эталона — веское свидетельство, а не доказательство; исходные байты — истина в последней инстанции):
windows.pslist on DESKTOP-SDN1RPT.mem | mem4n6 против Volatility 3 |
|---|---|
| Процессы совпали | 94 / 94 общих PID — точные PID, PPID, имя, время создания |
| Пропущены (vol3 нашёл, mem4n6 — нет) | 0 |
| Ложные срабатывания (mem4n6 нашёл, vol3 — нет) | 0 |
mem4n6 совпадает с Volatility 3 точно — включая восстановление 11 процессов, осиротевших из-за смазывания при живой съёмке, с помощью двунаправленного обхода ActiveProcessLinks. Второй независимый оракул (MemProcFS) подтверждает чистое подмножество — его список из 77 процессов process_list полностью содержится в наборе mem4n6, при этом процессов, известных только MemProcFS, ноль (детали). См. docs/validation.md: полный дифференциальный анализ и шаги воспроизведения.
Установите с помощью cargo install mem4n6 или возьмите готовый статический бинарник из последнего релиза — сборки Linux являются static-PIE (musl: копируйте куда угодно, без glibc), рядом также есть macOS, Windows и checksums.txt с SHA-256.
Или соберите из исходников (~одна команда):```bash git clone https://github.com/SecurityRonin/memory-forensic.git cd memory-forensic && cargo build --release ./target/release/mem4n6 --help
Эта dev-сборка динамически линкует 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 | Volatility 3 | MemProcFS | MemNixFS | |
|---|---|---|---|---|
| Развёртывание | Rust · один статический бинарный файл | Python · интерпретатор + зависимости | C(+Rust) · библиотеки | C++ · монтирование файловой системы |
| Самостоятельное профилирование Windows (сканирование → PDB GUID → символы) | ✅ | ✅ | ✅ | n/a — Linux-дампы |
| DTB без заголовка через boot low stub + база ядра с гранулярностью страниц | ✅ | самоссылающаяся PML4 + сканирование образа | ✅ low stub | n/a — Linux |
| Автономный / изолированный режим символов | ✅ --offline | пакет ISF или сеть | символы / сеть | ✅ BTF-from-dump |
Без паник на недоверенных дампах (запрет unsafe; unwrap/expect запрещены на путях разбора) | ✅ | — | — | — (C++) |
| Сверено с Volatility 3 | ✅ (docs/validation.md) | — (эталон) | — | — |
mem4n6, насколько нам известно, — единственная Rust-реализация полной цепочки дамп → сканирование ядра → PDB-GUID → разрешение символов → DTB. Родословная техники — сервер символов WinDbg, pdbparse Брендана Долан-Гавитта, Rekall, Volatility 3 и MemProcFS Ульфа Фриска — хорошо известна; mem4n6 реализует её с нуля по методу clean-room и сверяет результат с эталоном. MemNixFS привносит ту же идею память-как-файловая-система в Linux-дампы — монтирование и просмотр, с символами, извлекаемыми из собственного BTF ядра, когда ISF отсутствует; ячейки n/a выше отмечают различие в охвате (образы Linux и UX файловой системы, в отличие от проверенного на Windows CLI-обходчика mem4n6), а не пробел. Якорь boot low-stub / PROCESSOR_START_BLOCK опирается на доклад Алекса Ионеску Getting Physical (REcon 2017).
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