
Utilidad EDR de Windows sin dependencias que detecta y mitiga en tiempo real el acceso no autorizado a la memoria de LSASS, la duplicación de identificadores y el volcado de credenciales mediante LOLBin.
Una utilidad EDR ligera y sin dependencias para Windows que detecta y mitiga el acceso no autorizado a la memoria de LSASS, la duplicación de handles y los intentos de volcado de credenciales mediante LOLBin en tiempo real.
En entornos empresariales de Windows, el Servicio de Subsistema de Autoridad de Seguridad Local () almacena credenciales de usuario activas, tickets de concesión de tickets Kerberos (TGT) y hashes de contraseñas NTLM en su memoria virtual.
lsass.exeDebido a que LSASS posee las llaves de todo el dominio, los adversarios y equipos rojos lo atacan rutinariamente mediante:
PROCESS_VM_READ (0x0010) o PROCESS_ALL_ACCESS (0x1FFFFF).rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <lsass_pid> <dump_path> full o procdump.exe -ma lsass.exe.Las plataformas comerciales de Detección y Respuesta en Endpoints (EDR) como CrowdStrike Falcon o SentinelOne cobran miles de dólares en suscripciones empresariales para protegerse contra esta técnica exacta (MITRE ATT&CK T1003.001).
MemGuard proporciona una implementación en Python completamente gratuita, de código abierto y transparente, utilizando estructuras nativas del kernel Win32 y NT de Windows con cero dependencias de terceros.
flowchart TD
subgraph Host ["Windows 11 / 10 Endpoint"]
Adversary["Attacker / LOLBin / Mimikatz / ProcDump"] -- OpenProcess (PROCESS_VM_READ) --> LSASS["lsass.exe (PID: 1744)"]
subgraph MemGuard ["MemGuard Defensive Engine"]
HScan["NtQuerySystemInformation\n(SystemExtendedHandleInformation)"] --> CheckMask{"Access Mask\nAnalysis"}
CheckMask -- "VM_READ / ALL_ACCESS" --> Alert1["🚨 Critical Alert:\nUnauthorized Handle"]
PEBScan["Process PEB Reader\n(NtQueryInformationProcess)"] --> LOLBinCheck{"CommandLine\nRegex Engine"}
LOLBinCheck -- "comsvcs.dll / procdump" --> Alert2["🚨 Critical Alert:\nLOLBin Dump Attempt"]
DumpWatch["Triage Directory\nArtifact Scanner"] --> MDMPCheck{"MDMP Header\nValidation"}
MDMPCheck -- "Valid LSASS .dmp" --> Alert3["🚨 Alert:\nRogue Dump File"]
Alert1 & Alert2 --> Mitigation["Active Mitigation:\nNtSuspendProcess (Freeze)"]
end
endConsulta NtQuerySystemInformation con SystemExtendedHandleInformation (clase 64) para enumerar cada handle abierto en todo el sistema operativo. Duplica los handles de proceso y verifica si su objetivo se resuelve al PID activo de lsass.exe.
Analiza la máscara de bits GrantedAccess de 32 bits de cada poseedor de handle:
PROCESS_VM_READ (0x0010): CRÍTICO (Lectura de memoria del proceso — requisito previo para el volcado de credenciales)PROCESS_VM_WRITE (0x0020): ALTO (Inyección de memoria / shellcode)PROCESS_VM_OPERATION (0x0008): ALTO (VirtualAllocEx / modificación de protección de páginas)PROCESS_CREATE_THREAD (0x0002): ALTO (Creación de hilos remotos)PROCESS_ALL_ACCESS (0x1FFFFF): CRÍTICO (Control sin restricciones)Los procesos legítimos conocidos del sistema Windows (services.exe, csrss.exe, wininit.exe, Windows Defender MsMpEng.exe) están en la lista blanca, mientras que los procesos de terceros no verificados que poseen handles con capacidad de volcado se marcan inmediatamente.
Inspecciona los procesos en ejecución leyendo el Bloque de Entorno del Proceso (PEB) directamente desde la memoria virtual mediante NtQueryInformationProcess(ProcessBasicInformation) y ReadProcessMemory:
PEB -> ProcessParameters -> CommandLine (UNICODE_STRING).comsvcs.dll, #24, MiniDumpWriteDump, procdump -ma).NtSuspendProcess)Cuando se ejecuta con el flag --suspend, MemGuard congela los hilos del proceso infractor en su lugar usando ntdll.NtSuspendProcess nativo, evitando la extracción de memoria mientras preserva el proceso atacante en RAM para análisis forense en vivo.
¡No se necesita instalación con pip! Clona y ejecuta directamente con Python 3.8+:
git clone https://github.com/prox0959/MemGuard.git
cd MemGuard
python memguard.py --scan
# Monitorizar el sistema cada 3 segundos
python memguard.py --monitor --interval 3
# Monitorizar con mitigación activa automática (congelar procesos de volcado)
python memguard.py --monitor --interval 2 --suspend
python memguard.py --scan --json incident_report.json
python memguard.py --scan --lang tr
███╗ ███╗███████╗███╗ ███╗ ██████╗ ██╗ ██╗ █████╗ ██████╗ ██████╗
████╗ ████║██╔════╝████╗ ████║██╔════╝ ██║ ██║██╔══██╗██╔══██╗██╔══██╗
██╔████╔██║█████╗ ██╔████╔██║██║ ███╗██║ ██║███████║██████╔╝██║ ██║
██║╚██╔╝██║██╔══╝ ██║╚██╔╝██║██║ ██║██║ ██║██╔══██║██╔══██╗██║ ██║
██║ ╚═╝ ██║███████╗██║ ╚═╝ ██║╚██████╔╝╚██████╔╝██║ ██║██║ ██║██████╔╝
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝
Zero-Dependency LSASS Memory Dump Shield & EDR Hook Detector | Pure Python
► MITRE ATT&CK: T1003.001 (OS Credential Dumping: LSASS Memory)
[*] Privilege Level: Elevated (Administrator) - Full Kernel Handle Access
[*] SeDebugPrivilege Status: Enabled Successfully
[*] Target Security Process Found: lsass.exe (PID: 1744) | Path: C:\Windows\System32\lsass.exe
--- LSASS Handle Table Audit (NtQuerySystemInformation) ---
✓ No unauthorized or suspicious handles targeting LSASS detected.
--- Process Heuristics & LOLBin CommandLine Inspection ---
✓ No credential dumping processes or LOLBin signatures found.
--- Dump File Artifacts & Honeypot Tripwire ---
✓ No rogue memory dump (.dmp) files identified in triage directories.
Audit Summary: 0 handle threats, 0 process threats, 0 dump artifacts.
MemGuard/
├── memguard.py # Main CLI entry point & real-time monitoring loop
├── core/
│ ├── __init__.py
│ ├── win_api.py # Native Win32/NT kernel ctypes prototypes & PEB reader
│ ├── handle_scanner.py # NtQuerySystemInformation handle table & access mask auditor
│ ├── process_auditor.py # Heuristic LOLBin cmdline inspection & parent verification
│ └── honey_dmp.py # MiniDump (.dmp) artifact validator
├── LICENSE # MIT License
├── README.md # Technical Documentation
└── requirements.txt # Zero dependencies notice
Desarrollado por Çınar (@prox0959)
Estudiante de secundaria investigando las interioridades de bajo nivel del sistema operativo, seguridad defensiva y forense de memoria de Windows.
Distribuido bajo la Licencia MIT.