Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
memory-forensic — Исследуйте любой дамп памяти. Найдите скрытое. Форензика ядра Linux + Windows из одного статического Rust-бинарника — Python не требуется. | Kitploit
Инструменты/GitHubGitHub/securityronin/memory-forensic
Управление индикаторами компрометации (IOC)Криминалистика памятиСетевая криминалистикаВосстановление ДанныхАнализ вредоносных программЦифровая криминалистикаАнализ Бинарных ФайловРазведка угрозРеагирование на ИнцидентыПобег из Контейнера
GitHubsecurityronin/memory-forensic
1013 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

memory-forensic

Исследуйте любой дамп памяти. Найдите скрытое. Форензика ядра Linux + Windows из одного статического Rust-бинарника — Python не требуется.

РепозиторийСайт

License: Apache-2.0 CI Rust 1.75+ Platform unsafe: bounded Sponsor

memory-forensic

Инструмент для криминалистики памяти, который сам профилирует ядро 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.memmem4n6 против 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

root@kitploit:~
Эта 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

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).


Установка```bash

git clone https://github.com/SecurityRonin/memory-forensic.git cd memory-forensic cargo build --release ./target/release/mem4n6 --help

root@kitploit:~
---

## Краткий справочник```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

Файлы символов представляют собой ISF JSON, совместимые с пакетами символов Volatility 3.


Проверка целостности ядра — хуки, невидимые для ОС```bash

SSDT, IDT, ftrace, LSM, and kernel callback checks in one pass

mem4n6 check --symbols linux.json --hooks --idt --syscalls memdump.lime

root@kitploit:~
Кроме того, инъекция шаблонов на стороне сервера может использоваться как трамплин для расширения поверхности атаки, например, путём поиска полной цепочки уязвимостей.

#### JWT-атаки

Модуль JWT-атак включает различные атаки, которые могут использоваться против реализаций JWT для обхода механизмов аутентификации и авторизации. Сюда входят следующие атаки:

- Атака с подменой алгоритма
- Атака с путаницей ключей
- Атака с использованием алгоритма None
- Манипуляция утверждениями JWT

Модуль JWT-атак содержит ряд пользовательских расширений, например для работы с распространёнными JWT-пейлоадами, используемыми [редактором JWT от PortSwigger](https://portswigger.net/burp/documentation/desktop/tools/event-listener), и автоматизации JWT-пейлоадов.

#### GraphQL

Модуль GraphQL помогает расширить поверхность атаки для реализаций GraphQL и предоставляет набор инструментов статического и динамического анализа для реализаций GraphQL. Это включает следующее:

- [GraphQL Voyager](https://github.com/APIs-guru/graphql-voyager) представляет любой GraphQL API в виде интерактивного графа.
- [GraphQL Playground](https://github.com/graphql/graphql-playground) — поддержка IDE для разработки GraphQL.
- [InQL](https://github.com/doyensec/inql) — это инструмент тестирования безопасности, который упрощает проверку безопасности технологии GraphQL;
- Опциональная интроспекция GraphQL и импорт схемы для поддоменов.

Для расширения поверхности атаки для реализаций GraphQL набор расширений Burp предоставляет возможность:

- Определять конечные точки GraphQL путём анализа всего проекта.
- Предоставлять надёжный конструктор GraphQL-запросов.

#### Дополнительные модули

- Модуль сканирования CMS включает сканеры для обнаружения конфигураций WordPress, Drupal, Joomla и возможных ошибок конфигурации в установленных плагинах.
- Модуль сканирования Log4Shell для обнаружения [уязвимости Log4Shell](https://nvd.nist.gov/vuln/detail/CVE-2021-44228).
- Модуль Test Upload Cabinet для тестирования произвольной загрузки файлов.```
[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)

Три типа хуков — таблица системных вызовов, ftrace и LSM — все разрешаются в один и тот же модуль ядра. Сопоставление со списком модулей подтверждает, что его нет в наборе известных доверенных модулей.


Поведенческий анализ руткита LD_PRELOAD

Сопоставление по шаблону имени не обнаруживает перекомпилированные или переименованные варианты руткитов. Анализ динамических символов ELF выявляет их независимо от имени:```bash mem4n6 check --symbols linux.json --elf-hooks memdump.lime

root@kitploit:~
Error: the input chunk is empty — there is no content 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 сканирует каждую библиотеку, отображённую в памяти процесса, на предмет:

  • Сопоставление таблиц перехвата — 17 символов libc/syscall, которые, как известно, перехватываются руткитами (readdir64, getdents64, pam_get_item, write, …), классифицированных по таксономии сигналов forensicnomicon
  • Теневые экспорты libc — библиотеки, экспортирующие функцию с тем же именем, что и символ libc, перехватывают всех вызывающих на этапе компоновки
  • Строковые артефакты класса Father — форматные строки, вшитые в .rodata (например, UID:%d:, silly.txt), которые сохраняются после удаления символов и смены имён
  • Глобальная распространённость — библиотеки, загруженные в ≥90% процессов, помечаются как вероятные инъекции LD_PRELOAD

Секреты DPAPI и извлечение учётных данных```bash

Extract DPAPI master keys from LSASS g_MasterKeyCache linked list

mem4n6 check --symbols ntkrnlmp.json --dpapi-keys memdump.dmp

Detect Chrome cookies (v10/v20 encrypted blobs) from heap memory

mem4n6 check --symbols ntkrnlmp.json --browser-cookies memdump.dmp

root@kitploit:~
⚠️ Input content is missing. Please provide the Markdown text 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 охватывают:

  • мастер-ключи DPAPI — обходит связный список g_MasterKeyCache в LSASS, извлекает GUID + зашифрованный blob для каждого кэшированного мастер-ключа
  • куки Chrome v10/v20 — бинарное сканирование кучи Chromium на предмет зашифрованных AES-GCM cookie-блобов (префикс v10/v20 + 12-байтовый nonce); расшифровываются при наличии ключевого материала
  • хэши SAM/NTLM, билеты Kerberos, ключи BitLocker, секреты LSA — полный набор учётных данных

Извлечение скриншотов из фреймбуфера```bash

mem4n6 framebuf --symbols ntkrnlmp.json --png screen.png memdump.dmp

root@kitploit:~
Извлекает кадровый буфер из дампа памяти живой системы или дампа гибернации и сохраняет его в виде PNG. Работает как в Linux (обход `drm_framebuffer` в DRM/KMS), так и в Windows (кадровый буфер сеанса через сканирование пула `win32k`). Полезен для фиксации состояния экрана на момент снятия дампа без загрузки образа.

---

## Восстановление файлов, которые никогда не попадали на диск

Злоумышленники, использующие tmpfs или `memfd_create(2)`, не оставляют артефактов в файловой системе — бинарный файл существует только в ОЗУ.```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 content of chunk 25 so I can translate it into Russian.``` [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)

root@kitploit:~
восстановление tmpfs обходит таблицу ядра `vfsmount` и восстанавливает содержимое inode из страниц page-cache. Детектирование memfd проходит по таблице открытых файловых дескрипторов каждого процесса и помечает анонимные inode, созданные с помощью `memfd_create(2)`.

---

## Обнаружение обхода 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

Журнал изменений

Примечание: Будущие релизы этого инструмента не будут публиковаться на Rubygems. Для загрузки и обновлений, пожалуйста, посетите страницу релизов на GitHub.

Версия 0.5.5 - 0.5.6

  • Добавлен вывод в MongoDB
  • Обновлено 84 плагина
  • Добавлено 22 новых плагина (Chamilo, ClipBucket, Commercial Screenshot, Dedicated Media, Domoticz, EasyCoder, EvoClassifieds, Exactis, Humhub, Jamroom, LanCenter, MalwareTune, Moodle, OpenSNS, OpenWebif, Solarwinds, WebDVR, World of Warcraft, WPTouch и другие)
  • Добавлен формат вывода JSON
  • Разработка переехала на GitHub!

Версия 0.5.4

  • Добавлены опции --wait и --wait-fail для медленных соединений
  • Добавлено определение сокращённых URL и редиректов
  • Добавлены примеры плагинов
  • Добавлены PHP remote API и Javascript-интерфейс
  • Обновлено 57 плагинов``` [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)

root@kitploit:~
---

## Злоупотребление новыми интерфейсами ядра Linux

Помимо классических перехватов системных вызовов, современные руткиты злоупотребляют более новыми подсистемами ядра. `memory-forensic` охватывает все три:```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)

root@kitploit:~
---

## Индикаторы побега из контейнера```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)

root@kitploit:~
Обходит пространства имён user, mount, PID, net и cgroup для каждого процесса и помечает процессы, которые должны быть изолированы, но совместно используют пространства имён уровня хоста — структурный признак побега из контейнера, независимо от того, как он был совершён.

---

## Межартефактная корреляция ATT&CK

`memf-correlate` объединяет результаты всех обходчиков во временную шкалу, оценивает аномалии по степени серьёзности и сопоставляет каждую из них с техниками MITRE ATT&CK, не запуская обходчики по одному:```bash
mem4n6 correlate --symbols ntkrnlmp.json --output json memdump.dmp > findings.json

Please provide the Markdown content to translate.```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 } }

root@kitploit:~
Process, network, module, hook, and credential walker results are correlated by process and time before scoring — producing ATT&CK-tagged findings rather than per-walker output that an analyst must join manually.

---

## Поддерживаемые форматы памяти

| Формат | Источник | Автоопределение |
|---|---|---|
| LiME (`.lime`) | Модуль ядра Linux | Да |
| AVML v2 | Azure AVML | Да |
| ELF Core | QEMU, `gcore` | Да |
| Аварийный дамп Windows (`.dmp`) | DumpIt, WinDbg | Да |
| Hiberfil.sys | Гибернация / быстрый запуск Windows | Да |
| VMware State (`.vmss`, `.vmsn`) | VMware Workstation / ESXi | Да |
| kdump / diskdump | `makedumpfile` | Да |
| Raw / flat | Любой запасной вариант | Да |

Формат определяется по заголовкам файлов — флаги не требуются.

---

## Что отличается

Ближайшие альтернативы — **Volatility 3** (Python, плагинная архитектура), **MemProcFS** (C с привязками Rust, в первую очередь Windows), **Rekall** (Python, не поддерживается) и **MemNixFS** (C++, дампы Linux, монтируемые как файловая система). Приведённое ниже сравнение отражает официальное ядро и известный репозиторий плагинов каждого инструмента. MemNixFS нацелен на образы *Linux* с пользовательским интерфейсом файловой системы, поэтому он разделяет с mem4n6 восстановление файлов из page-cache, но имеет `n/a` в строках о самопрофилировании Windows и обходе EDR.

### Паритет — возможности, общие со зрелыми инструментами

| | memory-forensic | Volatility 3 | MemProcFS | MemNixFS | Rekall |
|--|:-:|:-:|:-:|:-:|:-:|
| Обходчики ядра Linux и Windows | ✅ | ✅ | Windows-first | Linux-only | ✅ |
| Перечисление процессов, модулей, сети | ✅ | ✅ | ✅ | ✅ | ✅ |
| Обнаружение внедрённой памяти | ✅ | ✅ | ✅ | ✅ | ✅ |
| Совместимость с пакетами символов ISF | ✅ | ✅ | — | ✅ | — |
| Работает на Linux / macOS | ✅ | ✅ | Частично | Linux + Win | ✅ |
| Активно поддерживается | ✅ | ✅ | ✅ | ✅ | — |
| Свободный и открытый | ✅ | ✅ | ✅ | без лицензии | ✅ |

### Возможности, отсутствующие в официальных дистрибутивах других инструментов

| | memory-forensic | Volatility 3 | MemProcFS | MemNixFS | Rekall |
|--|:-:|:-:|:-:|:-:|:-:|
| Единый статический бинарник — без Python, без рантайма | ✅ | — | — | частично | — |
| Библиотечный API для встраивания в инструменты на Rust | ✅ | — | ✅ | — | — |
| Поведенческая идентификация руткитов в ELF | ✅ | — | — | — | — |
| Восстановление файлов из tmpfs / ramfs | ✅ | — | — | ✅ | — |
| Обнаружение бесфайлового выполнения через memfd | ✅ | — | — | — | — |
| Обнаружение прямых системных вызовов / обхода EDR | ✅ | plugin? | — | n/a | — |
| Обнаружение обхода ETW / AMSI / DSE | ✅ | plugin? | — | n/a | — |
| Злоупотребление io_uring / netfilter / perf\_event | ✅ | — | — | — | — |
| Индикаторы побега из контейнера | ✅ | — | — | — | — |
| Извлечение ключей DPAPI и cookie Chrome | ✅ | plugin? | — | n/a | — |
| Доказательства доступа к папкам из shellbags в памяти ‡ | ✅ | — | — | n/a | — |
| Скриншот фреймбуфера | ✅ | plugin? | — | — | — |
| Межартефактная корреляция ATT&CK | ✅ | — | — | — | — |
| Безопасный вывод — RFC 4180, защита от внедрения формул, очистка bidi | ✅ | — | — | — | — |

> **`plugin?`** — Возможность может существовать в экосистеме сообщества Volatility 3, но отсутствует в официальном ядре и репозитории плагинов на момент написания. Проверьте, прежде чем делать выводы.
>
> **‡ Shellbags из памяти** — Volatility 2 извлекал shellbags из ОЗУ (общественный плагин `shellbags`, сначала Kovar, затем Lo); Volatility 3 так и не перенёс его, поэтому восстановление shellbags только из памяти ухудшилось при переходе vol2→vol3. mem4n6 напрямую обходит `Shell\BagMRU` в кусте `UsrClass.dat`/`NTUSER.DAT`, размещённом в памяти, — восстанавливая возможность эпохи vol2 для случая, когда доступна только RAM (диск не снимался), или для подтверждения куста на диске. Обычный путь, когда диск *доступен*, — смонтировать образ и запустить SBECmd / RegRipper на файле куста; обход памяти сворачивает двухшаговый процесс «выгрузить куст, затем разобрать» в один. Валидация — **tier-2**: эталонная истина получена с помощью `regipy` на кусте, извлечённом из `citadeldc01.mem` — для случая Szechuan не существует опубликованного стороннего эталонного набора shellbag, так что это самостоятельно выведенный оракул (реальный инструмент + реальный образ), а не сторонний ключ.

---

## Доверяй, но проверяй

Инструмент, разбирающий **недоверенные, контролируемые атакующим** образы памяти, обязан не лгать и не падать. mem4n6 создан под эту планку:

- **Отсутствие паник благодаря линту на враждебном вводе.** Пути разбора запрещают `unwrap`/`expect`/`panic!` и непроверенное индексирование (`clippy::unwrap_used`/`expect_used` = deny); каждое чтение длины, смещения и указателя проверяется на выход за границы и корректно деградирует — размазанный список процессов возвращает то, что удалось найти, а не прерывается. (API построителей паникуют при ошибке программиста — отсутствующем обязательном поле — по построению, но никогда из-за содержимого дампа.)
- **Безопасность памяти по умолчанию.** `unsafe_code = "deny"` для всего workspace; единственный `unsafe` — ограниченные файловые отображения `memmap2` (дамп, pagefile и база корректных хэшей), каждое из которых отдельно обосновано — отсюда бейдж *ограниченный (только mmap)*, а не *запрещённый*.
- **Проверено на независимом оракуле, а не только на наших собственных фикстурах.** Обходчик процессов Windows сверяется с Volatility 3 на реальном образе Win10 объёмом 2 ГБ — полное совпадение по каждому общему процессу, ноль ложных срабатываний ([`docs/validation.md`](https://github.com/securityronin/memory-forensic/blob/HEAD/docs/validation.md)).
- **Безопасный вывод.** Каждый канал (таблица/CSV/JSON) применяет экранирование по RFC 4180, защиту от внедрения формул в электронные таблицы и удаление bidi/управляющих символов, прежде чем контролируемые атакующим строки попадут в ваш терминал или конвейер.

---

## Использование библиотеки```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()?);
}

Структура крейтов

Показать структуру крейтов
```toml # Use individual crates in your own tooling [dependencies] memf-core = "0.1" memf-linux = "0.1" memf-windows = "0.1" ``` ---

Используется

issen — подкоманда issen mem4n6 управляет сбором памяти и формированием отчётов по триажу непосредственно из этого рабочего пространства.


Благодарности

Эндрю Кейс и Volatility Foundation, с чьим форматом ISF и архитектурой плагинов этот проект совместим на уровне символов.

Брендан Долан-Гэвитт, чьи исследования DKOM и сокрытия процессов на основе VAD легли в основу обходчиков обнаружения скрытых процессов.

Ульф Фриск / MemProcFS, чья модель «файловая система как интерфейс к памяти» и дизайн криминалистического режима повлияли на то, как эта библиотека предоставляет восстановленные артефакты.

jam1garner за binrw — декларативный разбор бинарных форматов, который делает слой форматов безопасным и читаемым.

S12 — статья Kernel Dynamic Offset Resolution Using PDB Symbols, в которой описана полная цепочка: сканирование дампа в поисках PE-образа ntoskrnl, извлечение GUID CodeView PDB и получение соответствующего PDB с msdl.microsoft.com в рантайме. Эта техника напрямую вдохновила реализацию AutoProfile в memf-symbols.

Алекс Ионеску — Getting Physical With USB Type-C: Windows 10 RAM Forensics and UEFI Attacks (REcon Brussels 2017), в которой задокументировано, что HalpLowStub из HAL — это недокументированный PROCESSOR_START_BLOCK — якорь в нижней области физической памяти (обнаруживается сканированием по сигнатуре в диапазоне 0x1000–0x100000), содержащий CR3/DTB ядра и подсказку о виртуальном адресе ядра (kernel-VA). Это основа для find_low_stub и восстановления DTB и базового адреса ядра без заголовков в memf-symbols.

Microsoft Symbol Server (msdl.microsoft.com) за размещение публичных PDB-файлов для каждой сборки ядра Windows — апстрим, который делает возможным разрешение символов в рантайме без заранее подготовленных файлов символов.


Политика конфиденциальности · Условия использования · © 2026 Security Ronin Ltd.

Скачать инструмент
mem4n6Volatility 3MemProcFSMemNixFS
РазвёртываниеRust · один статический бинарный файлPython · интерпретатор + зависимостиC(+Rust) · библиотекиC++ · монтирование файловой системы
Самостоятельное профилирование Windows (сканирование → PDB GUID → символы)✅✅✅n/a — Linux-дампы
DTB без заголовка через boot low stub + база ядра с гранулярностью страниц✅самоссылающаяся PML4 + сканирование образа✅ low stubn/a — Linux
Автономный / изолированный режим символов✅ --offlineпакет ISF или сетьсимволы / сеть✅ BTF-from-dump
Без паник на недоверенных дампах (запрет unsafe; unwrap/expect запрещены на путях разбора)✅——— (C++)
Сверено с Volatility 3✅ (docs/validation.md)— (эталон)——
CratePurpose
memf-formatОпределение формата и провайдеры физической памяти. Парсеры для LiME, AVML, ELF Core, Windows Crash Dump, hiberfil.sys, VMware state, kdump и необработанных плоских образов.
memf-coreОбход таблиц страниц (x86_64 4-level/5-level, AArch64, x86 PAE/non-PAE), высокоуровневый ObjectReader для обхода структур ядра, доступ к файлу подкачки, декомпрессия LZO и кодирование скриншотов из фреймбуфера в PNG (в паре с обходчиками фреймбуфера Linux EFI/VESA и Windows win32k).
memf-linuxОбходчики ядра Linux: список процессов task_struct, сетевые соединения, модули ядра, открытые файлы, программы eBPF, обнаружение хуков ftrace/IDT/syscall, перечисление namespace и cgroup, обнаружение процессов, скрытых DKOM, индикаторы побега из контейнера, анализ динамических символов ELF и поведенческое профилирование руткитов LD_PRELOAD, обнаружение глобальной распространённости библиотек и ещё ~45 обходчиков.
memf-windowsОбходчики ядра Windows NT: перечисление EPROCESS/ETHREAD, списки DLL и драйверов, таблицы дескрипторов, сетевые сокеты, сканирование тегов пула, таблицы обратных вызовов, SSDT, ETW, буфер обмена, кэш DNS, билеты Kerberos, извлечение мастер-ключей DPAPI из LSASS g_MasterKeyCache, обнаружение зашифрованных AES-GCM cookie Chrome v10/v20, ключи BitLocker, хэши SAM/NTLM, обнаружение внедрённой памяти и ещё ~55 обходчиков.
memf-stringsИзвлечение строк (ASCII, UTF-8, UTF-16LE) с классификацией по регулярным выражениям на категории IoC: URL-адреса, IP-адреса, домены, ключи реестра, адреса криптокошельков, приватные ключи, команды оболочки.
memf-symbolsРазрешение символов из ISF JSON, BTF (Linux) и PDB-файлов. Включает AutoProfile — разрешение структур ядра Windows без конфигурации: сканирует дамп на наличие ntoskrnl, загружает точный PDB с msdl.microsoft.com, разбирает его и возвращает SymbolResolver. Файл символов не требуется.
memf-correlateПерекрёстная корреляция артефактов с тегированием техник MITRE ATT&CK, реконструкцией дерева процессов, оценкой аномалий и построением временной шкалы.
forensic-hashdbБазы хэшей с нулевым количеством ложных срабатываний: поиск заведомо известных хороших файлов по NSRL/CIRCL, поиск заведомо известных вредоносных файлов по MalwareBazaar/VirusShare и встроенные хэши уязвимых драйверов Windows из loldrivers.io.