
Utilitário EDR para Windows sem dependências que deteta e mitiga acessos não autorizados à memória do LSASS, duplicação de handles e dumping de credenciais via LOLBin em tempo real.
Um utilitário EDR leve e sem dependências para Windows que detecta e mitiga acesso não autorizado à memória do LSASS, duplicação de handles e tentativas de dumping de credenciais via LOLBin em tempo real.
Em ambientes corporativos Windows, o Local Security Authority Subsystem Service () armazena credenciais de usuários ativos, tickets de concessão de tickets Kerberos (TGT) e hashes de senha NTLM em sua memória virtual.
lsass.exeComo o LSASS detém as chaves de todo o domínio, adversários e red teams rotineiramente o atacam usando:
PROCESS_VM_READ (0x0010) ou PROCESS_ALL_ACCESS (0x1FFFFF).rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <lsass_pid> <dump_path> full ou procdump.exe -ma lsass.exe.Plataformas comerciais de Endpoint Detection and Response (EDR) como CrowdStrike Falcon ou SentinelOne cobram milhares de dólares em assinaturas corporativas para proteger contra exatamente essa técnica (MITRE ATT&CK T1003.001).
O MemGuard oferece uma implementação em Python completamente gratuita, de código aberto e transparente, usando estruturas nativas do kernel Win32 e NT do Windows com zero dependências de terceiros.
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 com SystemExtendedHandleInformation (classe 64) para enumerar todos os handles abertos em todo o sistema operacional. Ele duplica handles de processos e verifica se seu destino resolve para o PID ativo do lsass.exe.
Analisa a máscara de bits GrantedAccess de 32 bits de cada detentor de handle:
PROCESS_VM_READ (0x0010): CRÍTICO (Leitura da memória do processo — pré-requisito para dumping de credenciais)PROCESS_VM_WRITE (0x0020): ALTO (Injeção de memória / shellcode)PROCESS_VM_OPERATION (0x0008): ALTO (VirtualAllocEx / modificação de proteção de página)PROCESS_CREATE_THREAD (0x0002): ALTO (Criação de thread remota)PROCESS_ALL_ACCESS (0x1FFFFF): CRÍTICO (Controle irrestrito)Processos legítimos conhecidos do sistema Windows (services.exe, csrss.exe, wininit.exe, Windows Defender MsMpEng.exe) estão na lista de permissões, enquanto processos de terceiros não verificados que detêm handles capazes de dumping são imediatamente sinalizados.
Inspeciona processos em execução lendo o Process Environment Block (PEB) diretamente da memória virtual via NtQueryInformationProcess(ProcessBasicInformation) e ReadProcessMemory:
PEB -> ProcessParameters -> CommandLine (UNICODE_STRING).comsvcs.dll, #24, MiniDumpWriteDump, procdump -ma).NtSuspendProcess)Quando executado com a flag --suspend, o MemGuard congela as threads do processo infrator no local usando ntdll.NtSuspendProcess nativo, impedindo a extração de memória enquanto preserva o processo do atacante na RAM para análise forense ao vivo.
Nenhuma instalação via pip é necessária! Clone e execute diretamente com Python 3.8+:
git clone https://github.com/prox0959/MemGuard.git
cd MemGuard
python memguard.py --scan
# Monitorar o sistema a cada 3 segundos
python memguard.py --monitor --interval 3
# Monitorar com mitigação ativa automática (congelar processos de dumping)
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
Desenvolvido por Çınar (@prox0959)
Estudante do ensino médio pesquisando internals de baixo nível de sistemas operacionais, segurança defensiva e forense de memória do Windows.
Distribuído sob a Licença MIT.