
Утилита EDR для Windows без зависимостей, которая в реальном времени обнаруживает и предотвращает несанкционированный доступ к памяти LSASS, дублирование дескрипторов и дампинг учётных данных через LOLBin.
Легковесная утилита EDR для Windows без зависимостей, которая в реальном времени обнаруживает и предотвращает несанкционированный доступ к памяти LSASS, дублирование дескрипторов и попытки дампа учётных данных через LOLBin.
В корпоративных средах Windows Local Security Authority Subsystem Service (lsass.exe) хранит учётные данные активных пользователей, билеты Kerberos (TGT) и хэши паролей NTLM в своей виртуальной памяти.
Поскольку LSASS хранит ключи ко всему домену, злоумышленники и red team регулярно атакуют его, используя:
PROCESS_VM_READ (0x0010) или PROCESS_ALL_ACCESS (0x1FFFFF).rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <lsass_pid> <dump_path> full или procdump.exe -ma lsass.exe.Коммерческие платформы Endpoint Detection and Response (EDR), такие как CrowdStrike Falcon или SentinelOne, берут тысячи долларов за корпоративные подписки для защиты именно от этой техники (MITRE ATT&CK T1003.001).
MemGuard предоставляет полностью бесплатную, открытую и прозрачную реализацию на Python, использующую нативные структуры ядра Win32 и NT Windows с нулевыми сторонними зависимостями.
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
endЗапрашивает NtQuerySystemInformation с SystemExtendedHandleInformation (класс 64) для перечисления всех открытых дескрипторов во всей операционной системе. Дублирует дескрипторы процессов и проверяет, указывают ли их цели на активный PID lsass.exe.
Анализирует 32-битную битовую маску GrantedAccess каждого держателя дескриптора:
PROCESS_VM_READ (0x0010): КРИТИЧНО (чтение памяти процесса — предпосылка для дампа учётных данных)PROCESS_VM_WRITE (0x0020): ВЫСОКИЙ (инъекция в память / шелл-код)PROCESS_VM_OPERATION (0x0008): ВЫСОКИЙ (VirtualAllocEx / изменение защиты страниц)PROCESS_CREATE_THREAD (0x0002): ВЫСОКИЙ (создание удалённого потока)PROCESS_ALL_ACCESS (0x1FFFFF): КРИТИЧНО (неограниченный контроль)Известные легитимные системные процессы Windows (services.exe, csrss.exe, wininit.exe, Windows Defender MsMpEng.exe) внесены в белый список, тогда как непроверенные сторонние процессы, удерживающие дескрипторы с возможностью дампа, немедленно помечаются.
Проверяет запущенные процессы, читая Process Environment Block (PEB) напрямую из виртуальной памяти через NtQueryInformationProcess(ProcessBasicInformation) и ReadProcessMemory:
PEB -> ProcessParameters -> CommandLine (UNICODE_STRING).comsvcs.dll, #24, MiniDumpWriteDump, procdump -ma).NtSuspendProcess)При запуске с флагом --suspend MemGuard замораживает потоки нарушающего процесса на месте с помощью нативного ntdll.NtSuspendProcess, предотвращая извлечение памяти, сохраняя при этом процесс атакующего в RAM для живого криминалистического анализа.
Установка через pip не требуется! Клонируйте и запускайте напрямую с Python 3.8+:
git clone https://github.com/prox0959/MemGuard.git
cd MemGuard
python memguard.py --scan
# Мониторинг системы каждые 3 секунды
python memguard.py --monitor --interval 3
# Мониторинг с автоматическим активным противодействием (заморозка процессов-дамперов)
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
Разработано Çınar (@prox0959)
Ученик старшей школы, исследующий низкоуровневые внутренности операционных систем, защитную безопасность и криминалистику памяти Windows.
Распространяется под MIT License.