
Análisis de memoria en vivo detectando IOCs de malware en procesos, módulos, handles, tokens, hilos, ensamblados .NET, espacio de direcciones de memoria y variables de entorno. Vuelca, detecta y desensambla hooks, shellcode, regiones de memoria, módulos y procesos.

WhacAMole es un programa que analiza procesos en memoria de forma integral, detectando y alertando sobre anomalías relacionadas con malware y presentando y guardando en archivos toda la información relevante para verificación, correlación o análisis, así como volcando regiones de memoria, procesos y módulos sospechosos. Para lograrlo, no solo analiza las anomalías de las regiones de memoria de los procesos y los módulos que cargan, sino que también analiza en profundidad todo el espacio de memoria en uso por el proceso. En este momento, WhacAMole es capaz de identificar 67 alertas relacionadas con comportamiento malicioso o que solo pueden deberse a malware. Muestra más de 70 propiedades de los procesos, memoria y módulos, comparando muchos de sus atributos leídos en memoria con los que aparecen en el archivo correspondiente en disco, desensambla parcialmente regiones de memoria sospechosas y desensambla parcialmente funciones exportadas que han sido modificadas en memoria para que los analistas realicen sus propias investigaciones.

A diferencia de otros programas similares, pone a disposición de los analistas toda la información relevante sobre los procesos, etiquetando con diferentes alertas aquellas características que están relacionadas con malware, para que puedan realizar su propio análisis o buscar otras señales de la existencia de procesos maliciosos. Las alertas se clasifican, según su peligrosidad y el número de procesos en los que aparece el mismo comportamiento, según una escala de seis valores, reflejada en el documento html con una escala de colores, siendo 6 (color negro) un indicador de la probabilidad más alta de que la característica detectada se deba a malware y 1 (color gris) de que, aunque el comportamiento es anómalo, hay muchos procesos del sistema donde se ha observado el mismo comportamiento:

Para facilitar el trabajo de los analistas, la información se presenta en pantalla, en un archivo HTML con un panel de navegación de los procesos analizados y en archivos de texto csv. En el panel lateral del documento html, se muestra el árbol de procesos, con el color correspondiente a la alerta más alta detectada en ellos, con el hipervínculo a su ubicación en el documento, y con el color azul en su PID si es un proceso de 32 bits o verde si es un proceso .NET. Los procesos que tienen Control Flow Guard (CFG) habilitado se muestran en cursiva.

La información sobre sesiones RDP remotas se muestra al inicio de la información del proceso:

La capacidad de red se muestra de dos formas: si se ha detectado una conexión TCP se muestra con el símbolo del globo terráqueo, y si se ha detectado un socket conectado, se muestra con un símbolo de globo vacío. Se añade un símbolo (círculo blanco) para procesos con bibliotecas de navegación http en memoria: wininet.dll y winhttp.dll.

Detalle de red:

Socket conectado:

Hay un símbolo especial (una llave) cuando se detecta actividad similar a Mimikatz.

En la parte inferior del panel de navegación del documento html, se muestran todas las alertas, con su color, con los PID de los procesos en los que se han detectado en forma de hipervínculo a la posición del documento donde se muestra el proceso.

Si no hay procesos detectados con una alerta, su nombre se muestra sobre fondo blanco.
El panel principal muestra todos los procesos con su información en secciones plegables que por defecto están ocultas. Todas las alertas son visibles siempre.

Las regiones de memoria guardadas se xorean con la clave 0x0E para evitar que el antivirus las elimine.
Analiza, compara y presenta información de:
1. Procesos:
• Advertencias:
[Admin Privs]
[Alternate credentials]
[Alternate network credentials]
[Delphi 4 – Delphi 2006]
[Entry Point]
[LogonType]
[Managed code but no Assemblies detected - .NET ETW disabled]
[Mismatching Path]
[Name of the module hidden in memory]
[NTLM Authentication]
[PE anomalies]
[PEB ImageBaseAddress forgery]
[Possible .NET in memory loaded as Assembly.Load(byte[])]
[Process checkSum is 0]
[Process checkSum mismatch]
[Process Ghosting]
[Process Hollowing]
[Process Memory region hash mismatch]
[Process Memory region Protection value modified]
[Process Memory region WX]
[Process Name != Internal Name]
[PROCESS NOT SIGNED]
[Process Private memory region]
[Process Unknown executable memory region]
[Section Table]
[Shared memory subversion]
[SizeOfInitializedData is 0]
[SUSPENDED PROCESS]
[Suspicious Commandline]
[Suspicious Environment Variable]
[TimeDateStamp Inequality]
[Transaction detected: TxF/TxR]
[Unmanaged process/managed code execution detected]
[Unusual CWD]

2. Módulos:
What you would expect to see in a normal module is LMIVH:
L = InLoadOrderModuleList(PEB).
M = InMemoryOrderModuleList (PEB).
I = InInitializationOrderModuleList (PEB).
V = Detected in the virtual memory of the process.
H = Detected in the PEB hash list.
If it has been unlinked from the three PEB linked lists you would see:
---VH
If the module is loaded manually by the malware it would not appear in any of the PEB lists but it could be detected by scanning the memory,
so It would appear as:
−−−V−
With the DLL Hollowing with Moat technique (see https://github.com/forrest-orr/artifacts-kit for a POC) the result would be:
-----
• Advertencias:
[Abnormal PE Header]
[Delphi 4 – Delphi 2006]
[DLL Hiding]
[DLL Hollowing]
[Mismatching Path]
[Module checkSum is 0]
[Module checkSum mismatch]
[Module Name != OriginalFileName]
[MODULE NOT SIGNED]
[Module PE anomalies]
[Module SizeOfInitializedData is 0]
[Module TimeDateStamp Inequality]
[Name of the module hidden in memory]
[Phantom DLL Hollowing TxF]
[Private memory region]
[Section Table]
[Signed PE NOT MEM_IMAGE]
[Unsigned PE NOT MEM_IMAGE]
[Unusual module]

3. Handles: Se muestran todos los manejadores de proceso de los tipos File, Key, Mutant, Process, Thread, Token y Section. Dependiendo del tipo de manejador, se muestra la siguiente información:








• Advertencias:
[Handle-Section Phantom DLL Hollowing TxF]
[Handle-Section Suspicious: Injection]
[Pipe Handle to another process]
[Process Handle to another process]
[ShadowMove Lateral Movement]
4. Tokens: En los hilos donde se detecta un token, se muestra lo siguiente:
• Advertencias:
[Thread with TOKEN]

5. Hilos:
• Advertencias:
[Thread-Memory NOT MEM_IMAGE]
[Thread-Possible Ekko technique]
[Thread-Possible Foliage technique]
[Thread-Unknown module in Stack]

6. Ensamblados .NET
• Advertencias:
[.NET Assembly w/o ILPath]

7. Espacio de direcciones de memoria. Muestra de todas las regiones de memoria del proceso los valores de:
• Advertencias:
[Executable memory region not MEM_IMAGE]
[Hidden PE]
[Lagos Island Method]
[Mapped Image]
[Memory region hash]
[Memory region Protection value modified]
[Memory region WX]
[Memory/File values mismatch]
[Moat detected]
[MZ/PE Not Present]
[Shellcode]
[Unknown executable memory region]

