
Recorre cualquier volcado de memoria. Encuentra lo que está oculto. Forensia del kernel de Linux + Windows desde un único binario Rust estático — no se requiere Python.
Un kit de herramientas de análisis forense de memoria que perfila los kernels de Windows por sí mismo — y se contrasta proceso por proceso contra Volatility 3.
mem4n6 lee todos los formatos de volcado comunes (LiME, AVML, ELF core, volcados de Windows, archivos de hibernación, estados de guardado de VMware, kdump, raw…) y recorre procesos, hilos, módulos, conexiones de red y memoria inyectada — desde un único binario estático que compilas una vez y copias donde quieras, sin Python, sin runtime, sin catálogo de símbolos preparado de antemano. En Windows construye su propio perfil: localiza ntoskrnl en la memoria física, lee su GUID PDB del registro CodeView, resuelve el ISF correspondiente de Volatility 3, recupera la base del kernel bajo el KASLR moderno y reconstruye PsActiveProcessHead a partir de la tabla de símbolos — la misma cadena de autoperfilado que usan Volatility 3 y MemProcFS, reimplementada en Rust.
Dado que el listón para una herramienta de evidencia es la corrección, el enumerador de procesos se contrasta contra una implementación de referencia independiente — Volatility 3 — sobre una imagen real de Windows 10 de 2 GB (una referencia que coincide es una evidencia sólida, no una prueba; los bytes brutos son la verdad fundamental):
windows.pslist en DESKTOP-SDN1RPT.mem | mem4n6 vs Volatility 3 |
|---|---|
| Procesos coincidentes | 94 / 94 PIDs compartidos: PID, PPID, nombre y tiempo de creación exactos |
| No detectados (vol3 los encontró, mem4n6 no) | 0 |
| Falsos positivos (mem4n6 los encontró, vol3 no) | 0 |
mem4n6 coincide con Volatility 3 exactamente — incluida la recuperación de 11 procesos huérfanos por un smear de adquisición en vivo mediante un recorrido bidireccional de ActiveProcessLinks. Un segundo oráculo independiente (MemProcFS) confirma un subconjunto limpio — su process_list de 77 procesos está completamente contenido en el conjunto de mem4n6, con cero procesos exclusivos de MemProcFS (detalles). Consulta docs/validation.md para el diferencial completo y los pasos de reproducción.
Instala con cargo install mem4n6, o descarga un binario estático precompilado de la última versión — las compilaciones de Linux son static-PIE (musl: cópialo a cualquier lado, sin glibc), junto con macOS, Windows y un checksums.txt SHA-256.
O compílalo desde el código fuente (~un comando):```bash git clone https://github.com/SecurityRonin/memory-forensic.git cd memory-forensic && cargo build --release ./target/release/mem4n6 --help
Esa compilación de desarrollo enlaza libc dinámicamente; para reproducir localmente el binario totalmente estático del release, añade el objetivo 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
Symbol files are ISF JSON — los mismos paquetes que usa Volatility 3, por lo que una caché de símbolos existente funciona tal cual.
mem4n6 es, hasta donde sabemos, la única implementación en Rust de la cadena completa volcado → escaneo del kernel → GUID de PDB → resolución de símbolos → DTB. El linaje de la técnica — el servidor de símbolos de WinDbg, pdbparse de Brendan Dolan-Gavitt, Rekall, Volatility 3 y MemProcFS de Ulf Frisk — está bien establecido; mem4n6 lo reimplementa en sala limpia y valida el resultado contra la referencia. MemNixFS lleva esa misma idea de memoria como sistema de archivos a los volcados de Linux — montar y explorar, con símbolos derivados del propio BTF del kernel cuando no existe ISF; las celdas n/a de arriba marcan una diferencia de alcance (imágenes Linux y una UX de sistema de archivos, frente al recorredor CLI validado para Windows de mem4n6), no una carencia. El anclaje del stub bajo de arranque / PROCESSOR_START_BLOCK sigue la conferencia Getting Physical de Alex Ionescu en REcon 2017.
git clone https://github.com/SecurityRonin/memory-forensic.git cd memory-forensic cargo build --release ./target/release/mem4n6 --help
---
## Referencia rápida```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
Los archivos de símbolos son ISF JSON, compatibles con los paquetes de símbolos de Volatility 3.
mem4n6 check --symbols linux.json --hooks --idt --syscalls memdump.lime
Please provide the markdown content to translate.```
[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)
Tres tipos de hooks — tabla de syscalls, ftrace y LSM — todos resuelven en el mismo módulo del kernel. La comparación cruzada con la lista de módulos confirma que no está en el conjunto de confianza.
La coincidencia por patrones de nombre no detecta variantes de rootkit recompiladas o renombradas. El análisis de símbolos dinámicos ELF las detecta independientemente del nombre:```bash mem4n6 check --symbols linux.json --elf-hooks memdump.lime
Please provide the Markdown 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 escanea cada biblioteca mapeada en la memoria del proceso para detectar:
.rodata (p. ej. UID:%d:, silly.txt) que sobreviven al stripping del binario y a los cambios de nombremem4n6 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
Los rastreadores de credenciales de Windows cubren:
g_MasterKeyCache en LSASS, extrae GUID + blob cifrado para cada clave maestra en cachév10/v20 + nonce de 12 bytes); descifrados cuando el material de clave está disponiblemem4n6 framebuf --symbols ntkrnlmp.json --png screen.png memdump.dmp
Extrae el framebuffer de un volcado de memoria en vivo o de hibernación y lo escribe como PNG. Funciona tanto en Linux (walker de `drm_framebuffer` de DRM/KMS) como en Windows (framebuffer de sesión mediante escaneo del pool de `win32k`). Útil para capturar el estado de la pantalla en el momento de la adquisición sin iniciar la imagen.
---
## Recupera archivos que nunca tocaron el disco
Los atacantes que usan tmpfs o `memfd_create(2)` no dejan artefactos en el sistema de archivos — el binario existe solo en la 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
[No content provided to translate.]``` [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)
La recuperación de tmpfs recorre la tabla `vfsmount` del kernel y reconstruye el contenido de los inodos a partir de las páginas de la caché de páginas. La detección de memfd recorre la tabla de descriptores de archivos abiertos de cada proceso y marca los inodos anónimos creados con `memfd_create(2)`.
---
## Detectar la evasión de EDR y la supresión de registros
Las herramientas ofensivas modernas parchean la instrumentación de seguridad de Windows en memoria para evadir la detección sin tocar el disco.```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 se proporcionó contenido para traducir en la entrada (INPUT está vacío).``` [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)
---
## Abuso novedoso de la interfaz del kernel de Linux
Más allá de los hooks clásicos de syscall, los rootkits modernos abusan de subsistemas más nuevos del kernel. `memory-forensic` cubre los tres:```bash
mem4n6 check --symbols linux.json --io-uring --netfilter --perf-event memdump.lime
No se proporcionó contenido para traducir.``` [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)
---
## Indicadores de escape de contenedores```bash
mem4n6 check --symbols linux.json --container-escape memdump.lime
Por favor, proporciona el contenido Markdown que deseas traducir.``` [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)
Recorre los namespaces de usuario, mount, PID, net y cgroup de cada proceso y marca los procesos que deberían estar aislados pero comparten namespaces de nivel de host — la firma estructural de una escape de contenedor independientemente de cómo se haya logrado.
---
## Correlación ATT&CK entre artefactos
`memf-correlate` combina los hallazgos de todos los walkers en una línea temporal, puntúa las anomalías por severidad y asigna cada una a técnicas de MITRE ATT&CK sin ejecutar los walkers uno a la vez:```bash
mem4n6 correlate --symbols ntkrnlmp.json --output json memdump.dmp > findings.json
El contenido del chunk no fue proporcionado en la entrada (la sección INPUT está vacía). No hay texto fuente para traducir.```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 } }
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.
---
## Formatos de memoria compatibles
| Formato | Fuente | Auto-detectado |
|---|---|---|
| LiME (`.lime`) | Módulo del kernel de Linux | Sí |
| AVML v2 | Azure AVML | Sí |
| ELF Core | QEMU, `gcore` | Sí |
| Windows Crash Dump (`.dmp`) | DumpIt, WinDbg | Sí |
| Hiberfil.sys | Hibernación / inicio rápido de Windows | Sí |
| VMware State (`.vmss`, `.vmsn`) | VMware Workstation / ESXi | Sí |
| kdump / diskdump | `makedumpfile` | Sí |
| Raw / flat | Cualquier respaldo | Sí |
El formato se detecta a partir de las cabeceras de los archivos — no se requieren indicadores.
---
## En qué se diferencia
Las alternativas más cercanas son **Volatility 3** (Python, arquitectura de plugins), **MemProcFS** (C con bindings de Rust, principalmente Windows), **Rekall** (Python, sin mantenimiento) y **MemNixFS** (C++, volcados de Linux montados como sistema de archivos). La comparación a continuación refleja el núcleo oficial de cada herramienta y su repositorio de plugins conocido. MemNixFS se dirige a imágenes *Linux* con una experiencia de usuario de sistema de archivos, por lo que comparte la recuperación de archivos de caché de páginas de mem4n6, pero es `n/a` en las filas de auto-perfilado de Windows y evasión de EDR.
### Paridad — capacidades compartidas con herramientas maduras
| | memory-forensic | Volatility 3 | MemProcFS | MemNixFS | Rekall |
|--|:-:|:-:|:-:|:-:|:-:|
| Walkers de kernel Linux + Windows | ✅ | ✅ | Windows primero | Solo Linux | ✅ |
| Enumeración de procesos, módulos y red | ✅ | ✅ | ✅ | ✅ | ✅ |
| Detección de memoria inyectada | ✅ | ✅ | ✅ | ✅ | ✅ |
| Compatible con paquetes de símbolos ISF | ✅ | ✅ | — | ✅ | — |
| Se ejecuta en Linux / macOS | ✅ | ✅ | parcial | Linux + Win | ✅ |
| Con mantenimiento activo | ✅ | ✅ | ✅ | ✅ | — |
| Gratuito y de código abierto | ✅ | ✅ | ✅ | sin licencia | ✅ |
### Capacidades ausentes en las distribuciones oficiales de otras herramientas
| | memory-forensic | Volatility 3 | MemProcFS | MemNixFS | Rekall |
|--|:-:|:-:|:-:|:-:|:-:|
| Binario estático único — sin Python, sin runtime | ✅ | — | — | parcial | — |
| API de biblioteca para integración en herramientas Rust | ✅ | — | ✅ | — | — |
| Identificación de rootkits por comportamiento ELF | ✅ | — | — | — | — |
| Recuperación de archivos tmpfs / ramfs | ✅ | — | — | ✅ | — |
| Detección de ejecución fileless memfd | ✅ | — | — | — | — |
| Detección de syscalls directas / evasión de EDR | ✅ | plugin? | — | n/a | — |
| Detección de evasión de ETW / AMSI / DSE | ✅ | plugin? | — | n/a | — |
| Abuso de io_uring / netfilter / perf\_event | ✅ | — | — | — | — |
| Indicadores de escape de contenedores | ✅ | — | — | — | — |
| Extracción de claves DPAPI + cookies de Chrome | ✅ | plugin? | — | n/a | — |
| Evidencia de acceso a carpetas Shellbags desde la memoria ‡ | ✅ | — | — | n/a | — |
| Captura de pantalla de framebuffer | ✅ | plugin? | — | — | — |
| Correlación de ATT&CK entre artefactos | ✅ | — | — | — | — |
| Salida segura — RFC 4180, protección contra inyección de fórmulas, bidi-strip | ✅ | — | — | — | — |
> **`plugin?`** — La capacidad puede existir en el ecosistema de la comunidad de Volatility 3, pero está ausente del núcleo oficial y del repositorio de plugins en el momento de escribir esto. Verifícalo antes de concluir.
>
> **‡ Shellbags desde memoria** — Volatility 2 recuperaba shellbags de la RAM (el plugin `shellbags` de la comunidad, Kovar y luego Lo); Volatility 3 nunca lo reincorporó, por lo que la recuperación de shellbags solo desde memoria retrocedió en la transición vol2→vol3. mem4n6 recorre `Shell\BagMRU` directamente en el hive `UsrClass.dat`/`NTUSER.DAT` en memoria, restaurando la capacidad de la era vol2 para el caso de solo RAM (sin adquirir disco), o para corroborar el hive en disco. El camino habitual cuando el disco *sí* está disponible es montar la imagen y ejecutar SBECmd / RegRipper sobre el archivo de hive; el recorrido de memoria colapsa los dos pasos de volcar el hive y luego analizarlo en uno solo. La validación es **nivel 2**: la verdad fundamental se deriva con `regipy` sobre el hive extraído de `citadeldc01.mem`; no existe una clave de respuestas de shellbags de terceros publicada para el caso Szechuan, por lo que este es un oráculo autogenerado (herramienta real + imagen real), no una clave de terceros.
---
## Confía, pero verifica
Una herramienta que analiza imágenes de memoria **no confiables y controlables por el atacante** tiene que negarse a mentir y negarse a fallar. mem4n6 está construida para ese estándar:
- **Sin pánico gracias al lint en entradas hostiles.** Las rutas de análisis deniegan `unwrap`/`expect`/`panic!` e indexación sin comprobar (`clippy::unwrap_used`/`expect_used` = deny); cada lectura de longitud, desplazamiento y puntero se comprueba contra los límites y degrada con elegancia: una lista de procesos corrupta devuelve lo que encontró, no aborta. (Las APIs de construcción generan pánico ante un error de programación — un campo requerido faltante — por diseño, nunca ante el contenido del volcado).
- **Seguro en memoria por defecto.** `unsafe_code = "deny"` en todo el workspace; el único `unsafe` son los mapeos de archivos limitados de `memmap2` (el volcado, el archivo de página y la base de datos de hashes conocidos), cada uno justificado individualmente; de ahí la insignia *acotado (solo mmap)* en lugar de *prohibido*.
- **Validada contra un oráculo independiente, no solo contra nuestros propios fixtures.** El walker de procesos de Windows se compara con Volatility 3 en una imagen real de Windows 10 de 2 GB: acuerdo exacto en todos los procesos compartidos, cero falsos positivos ([`docs/validation.md`](https://github.com/securityronin/memory-forensic/blob/HEAD/docs/validation.md)).
- **Salida segura.** Cada canal (tabla/CSV/JSON) aplica comillas RFC 4180, una protección contra la inyección de fórmulas en hojas de cálculo y la eliminación de caracteres bidi/de control antes de que las cadenas controladas por el atacante lleguen a tu terminal o pipeline.
---
## Uso de la biblioteca```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 — el subcomando issen mem4n6 impulsa la adquisición de memoria y la generación de informes de triaje directamente desde este espacio de trabajo.
Andrew Case y la Volatility Foundation — cuyo formato ISF y arquitectura de plugins son compatibles a nivel de símbolos con este proyecto.
Brendan Dolan-Gavitt — cuya investigación sobre DKOM y la ocultación de procesos basada en VAD informó los walkers de detección de procesos ocultos.
Ulf Frisk / MemProcFS — cuyo modelo de sistema de archivos como interfaz de memoria y el diseño del modo forense influyeron en la forma en que esta librería expone los artefactos recuperados.
jam1garner por binrw — análisis declarativo de formatos binarios que hace que la capa de formato sea segura y legible.
S12 — el artículo Kernel Dynamic Offset Resolution Using PDB Symbols que documentó la cadena completa de escanear un volcado en busca del PE ntoskrnl, extraer el GUID PDB de CodeView y obtener el PDB correspondiente desde msdl.microsoft.com en tiempo de ejecución. Esta técnica inspiró directamente la implementación de AutoProfile en memf-symbols.
Alex Ionescu — Getting Physical With USB Type-C: Windows 10 RAM Forensics and UEFI Attacks (REcon Brussels 2017), que documentó que HalpLowStub del HAL es el PROCESSOR_START_BLOCK no documentado — el anclaje de memoria física baja (escaneado por firma en 0x1000–0x100000) que contiene el CR3/DTB del kernel y una pista de VA del kernel. Esta es la base para find_low_stub y la recuperación del DTB / base del kernel sin cabecera en memf-symbols.
Microsoft Symbol Server (msdl.microsoft.com) por alojar archivos PDB públicos para cada compilación del kernel de Windows, la fuente upstream que hace posible la resolución de símbolos en tiempo de ejecución sin archivos de símbolos preparados de antemano.
Política de privacidad · Términos del servicio · © 2026 Security Ronin Ltd.
| mem4n6 | Volatility 3 | MemProcFS | MemNixFS |
|---|
| Despliegue | Rust · binario estático único | Python · intérprete + dependencias | C(+Rust) · bibliotecas | C++ · montaje de sistema de archivos |
| Autoperfilado de Windows (escaneo → GUID de PDB → símbolos) | ✅ | ✅ | ✅ | n/d — volcados de Linux |
| DTB sin cabecera mediante el stub bajo de arranque + base del kernel a nivel de página | ✅ | PML4 autorreferencial + escaneo de imagen | ✅ stub bajo | n/d — Linux |
| Modo de símbolos sin conexión / aislado | ✅ --offline | paquete ISF o red | símbolos / red | ✅ BTF desde volcado |
Sin pánicos en volcados no confiables (unsafe denegado; unwrap/expect denegados en rutas de análisis) | ✅ | — | — | — (C++) |
| Verificado de forma cruzada con Volatility 3 | ✅ (docs/validation.md) | — (la referencia) | — | — |
| Crate | Propósito |
|---|
memf-format | Detección de formato y proveedores de memoria física. Analizadores para LiME, AVML, ELF Core, Windows Crash Dump, hiberfil.sys, estado de VMware, kdump e imágenes planas sin formato. |
memf-core | Recorrido de tablas de páginas (x86_64 de 4/5 niveles, AArch64, x86 PAE/no PAE), ObjectReader de alto nivel para el recorrido de estructuras del kernel, acceso a pagefiles, descompresión LZO y codificación de capturas de pantalla framebuffer→PNG (emparejado con los walkers de framebuffer EFI/VESA de Linux y win32k de Windows). |
memf-linux | Walkers del kernel de Linux: lista de procesos task_struct, conexiones de red, módulos del kernel, archivos abiertos, programas eBPF, detección de hooks en ftrace/IDT/syscall, enumeración de namespaces y cgroups, detección de procesos ocultos por DKOM, indicadores de escape de contenedores, análisis de símbolos dinámicos ELF y huellas de comportamiento de rootkits LD_PRELOAD, detección de prevalencia global de bibliotecas y aproximadamente 45 walkers adicionales. |
memf-windows | Walkers del kernel NT de Windows: enumeración de EPROCESS/ETHREAD, listas de DLL y controladores, tablas de handles, sockets de red, escaneo de pool tags, tablas de callbacks, SSDT, ETW, portapapeles, caché DNS, tickets Kerberos, extracción de claves maestras DPAPI desde g_MasterKeyCache de LSASS, detección de cookies cifradas AES-GCM Chrome v10/v20, claves BitLocker, hashes SAM/NTLM, detección de memoria inyectada y aproximadamente 55 walkers adicionales. |
memf-strings | Extracción de cadenas (ASCII, UTF-8, UTF-16LE) con clasificación mediante regex en categorías de IoC: URLs, direcciones IP, dominios, claves de registro, direcciones de carteras cripto, claves privadas y comandos de shell. |
memf-symbols | Resolución de símbolos a partir de ISF JSON, BTF (Linux) y archivos PDB. Incluye AutoProfile: resolución de estructuras del kernel de Windows con configuración cero: escanea el volcado en busca de ntoskrnl, obtiene el PDB exacto de msdl.microsoft.com, lo analiza y devuelve un SymbolResolver. No se requiere archivo de símbolos. |
memf-correlate | Correlación cruzada de artefactos con etiquetado de técnicas MITRE ATT&CK, reconstrucción del árbol de procesos, puntuación de anomalías y generación de líneas de tiempo. |
forensic-hashdb | Bases de datos de hashes con cero falsos positivos: consulta de elementos conocidos como buenos NSRL/CIRCL, consulta de elementos conocidos como malos MalwareBazaar/VirusShare y hashes integrados de controladores vulnerables de Windows de loldrivers.io. |