MEMORY es una herramienta de monitoreo y detección de amenazas a nivel de kernel y memoria para sistemas Windows. Está diseñada para identificar procesos ocultos, inyecciones de código (shellcode) y comportamientos anómalos que los antivirus convencionales suelen pasar por alto.
Warning
DISCLAIMER: Esta herramienta tiene la capacidad de suspender procesos del sistema (Quarantine). Úsela bajo su propio riesgo. El autor no se hace responsable por inestabilidad del sistema o pérdida de datos.
Utiliza la API nativa de Windows (NtQuerySystemInformation) con la clase SystemExtendedHandleInformation para enumerar procesos a través de la tabla de handles del sistema. Esto permite detectar procesos que se han ocultado de la lista oficial de procesos (DKOM - Direct Kernel Object Manipulation).
Analiza los hilos de ejecución para encontrar "Floating Threads": hilos que comienzan en regiones de memoria privada (MEM_PRIVATE) sin un módulo o archivo asociado en el disco. Esta es una técnica clásica de detección de inyección de Shellcode.
Escanea el espacio de direcciones de los procesos en busca de regiones con permisos de Lectura, Escritura y Ejecución (RWX), un indicador común de desempaquetadores (unpackers) y malware polimórfico.
Implementa un sistema de puntuación de riesgo (Risk Scoring). Si un proceso es marcado como CRITICAL (ej. no está firmado, está oculto y tiene hilos inyectados), el motor invoca NtSuspendProcess para neutralizar la amenaza instantáneamente.
Incluye un pipeline de telemetría que envía eventos en formato JSON a través de UDP (Syslog style), permitiendo la integración con herramientas de monitoreo como Splunk, ELK o servidores Syslog locales.
- Lenguaje: C++
- APIs: Win32 API, NTAPI (ntdll.dll), WinTrust, IP Helper API.
- Librerías: Winsock2 para telemetría, Psapi para análisis de módulos.
- Asegúrate de incluir las siguientes librerías en el linker:
wintrust.lib,psapi.lib,ntdll.lib,ws2_32.lib,iphlpapi.lib. - Configura el proyecto para x64.
- Ejecuta como Administrador.
Si usas MinGW, ejecuta el siguiente comando para generar un ejecutable estático que no dependa de DLLs externas:
g++ -O2 detector_apex_hardened.cpp -o Memory.exe -static -static-libgcc -static-libstdc++ -lwintrust -lpsapi -lntdll -ladvapi32 -lws2_32 -liphlpapi -luser32El sistema asigna puntos basados en:
- [HIDDEN]: +45 puntos.
- [SHELLCODE_THREAD]: +80 puntos.
- [SUSPICIOUS_RWX]: +40 puntos.
- [NET_ACTIVA]: +40 puntos (si el proceso no está firmado).
Desarrollado para investigación de seguridad y análisis forense.