
Zero-Abhängigkeits-Windows-EDR-Dienstprogramm, das unbefugten LSASS-Speicherzugriff, Handle-Duplizierung und LOLBin-Credential-Dumping in Echtzeit erkennt und abwehrt.
Ein leichtgewichtiges, abhängigkeitsfreies Windows-EDR-Dienstprogramm, das unbefugten LSASS-Speicherzugriff, Handle-Duplizierung und LOLBin-Credential-Dumping-Versuche in Echtzeit erkennt und abwehrt.
In Windows-Unternehmensumgebungen speichert der Local Security Authority Subsystem Service () aktive Benutzeranmeldeinformationen, Kerberos-Ticket-Granting-Tickets (TGT) und NTLM-Passwort-Hashes in seinem virtuellen Speicher.
lsass.exeDa LSASS die Schlüssel zum gesamten Domänenbereich verwahrt, wird es von Angreifern und Red Teams routinemäßig ins Visier genommen mittels:
PROCESS_VM_READ (0x0010) oder PROCESS_ALL_ACCESS (0x1FFFFF) öffnen.rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <lsass_pid> <dump_path> full oder procdump.exe -ma lsass.exe.Kommerzielle Endpoint Detection and Response (EDR)-Plattformen wie CrowdStrike Falcon oder SentinelOne verlangen Tausende von Dollar an Unternehmensabonnements, um genau diese Technik abzuwehren (MITRE ATT&CK T1003.001).
MemGuard bietet eine vollständig kostenlose, quelloffene und transparente Python-Implementierung unter Verwendung nativer Windows-Win32- und NT-Kernelstrukturen mit null Drittanbieter-Abhängigkeiten.
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
endFragt NtQuerySystemInformation mit SystemExtendedHandleInformation (Klasse 64) ab, um jedes offene Handle im gesamten Betriebssystem zu enumerieren. Es dupliziert Prozess-Handles und überprüft, ob deren Ziel sich zum aktiven lsass.exe-PID auflöst.
Analysiert die 32-Bit-GrantedAccess-Bitmaske jedes Handle-Inhabers:
PROCESS_VM_READ (0x0010): KRITISCH (Prozessspeicher lesen — Voraussetzung für Credential Dumping)PROCESS_VM_WRITE (0x0020): HOCH (Speicherinjektion / Shellcode)PROCESS_VM_OPERATION (0x0008): HOCH (VirtualAllocEx / Änderung des Seitenschutzes)PROCESS_CREATE_THREAD (0x0002): HOCH (Remote-Thread-Erstellung)PROCESS_ALL_ACCESS (0x1FFFFF): KRITISCH (Uneingeschränkte Kontrolle)Bekannte legitime Windows-Systemprozesse (services.exe, csrss.exe, wininit.exe, Windows Defender MsMpEng.exe) werden auf die Whitelist gesetzt, während nicht verifizierte Drittanbieterprozesse mit dump-fähigen Handles sofort markiert werden.
Untersucht laufende Prozesse durch direktes Lesen des Process Environment Block (PEB) aus dem virtuellen Speicher über NtQueryInformationProcess(ProcessBasicInformation) und ReadProcessMemory:
PEB -> ProcessParameters -> CommandLine (UNICODE_STRING).comsvcs.dll, #24, MiniDumpWriteDump, procdump -ma).NtSuspendProcess)Wenn mit dem --suspend-Flag ausgeführt, friert MemGuard die Threads des fehlerhaften Prozesses an Ort und Stelle mittels nativem ntdll.NtSuspendProcess ein, wodurch die Speicherextraktion verhindert wird, während der Angreiferprozess für die Live-Forensik-Analyse im RAM erhalten bleibt.
Keine pip-Installation erforderlich! Direkt klonen und mit Python 3.8+ ausführen:
git clone https://github.com/prox0959/MemGuard.git
cd MemGuard
python memguard.py --scan
# Monitor system every 3 seconds
python memguard.py --monitor --interval 3
# Monitor with automatic active mitigation (freeze dumper processes)
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
Entwickelt von Çınar (@prox0959)
Gymnasiast mit Forschungsschwerpunkt auf Low-Level-Betriebssysteminterna, defensiver Sicherheit und Windows-Speicherforensik.
Vertrieben unter der MIT License.