
Analisi della memoria live per rilevare IOC di malware in processi, moduli, handle, token, thread, assembly .NET, spazio degli indirizzi di memoria e variabili d'ambiente. Dumpa, rileva e disassembla hook, shellcode, regioni di memoria, moduli e processi.

WhacAMole è un programma che analizza i processi in memoria in modo integrale, rilevando e segnalando anomalie legate al malware e presentando e salvando in file tutte le informazioni rilevanti per verifica, correlazione o analisi, nonché eseguendo il dump di regioni di memoria, processi e moduli sospetti. Per raggiungere questo obiettivo, analizza non solo le anomalie delle regioni di memoria dei processi e dei moduli che caricano, ma analizza anche in profondità tutto lo spazio di memoria in uso dal processo. Al momento, WhacAMole è in grado di identificare 67 avvisi relativi a comportamenti malevoli o che possono essere dovuti solo al malware. Mostra più di 70 proprietà dei processi, della memoria e dei moduli, confrontando molti dei loro attributi letti in memoria con quelli presenti nel file corrispondente su disco, disassembla parzialmente le regioni di memoria sospette e disassembla parzialmente le funzioni esportate che sono state modificate in memoria per consentire agli analisti di condurre le proprie indagini.

A differenza di altri programmi simili, rende disponibili agli analisti tutte le informazioni rilevanti sui processi, etichettando con diversi avvisi quelle caratteristiche correlate al malware, in modo che possano condurre la propria analisi o cercare altri segni dell'esistenza di processi malevoli. Gli avvisi sono classificati, in base alla loro pericolosità e al numero di processi in cui appare lo stesso comportamento, secondo una scala di sei valori, riflessa nel documento html con una scala cromatica, dove 6 (colore nero) è un indicatore della più alta probabilità che la caratteristica rilevata sia dovuta a malware e 1 (colore grigio) indica che, sebbene il comportamento sia anomalo, ci sono molti processi di sistema in cui è stato osservato lo stesso comportamento:

Per facilitare il lavoro degli analisti, le informazioni vengono presentate a schermo, in un file HTML con un pannello di navigazione dei processi analizzati e in file csv di testo. Nel pannello laterale del documento html, viene mostrato l'albero dei processi, con il colore corrispondente all'avviso più alto rilevato in essi, con il collegamento ipertestuale alla loro posizione nel documento, e con il colore blue nel PID se è un processo a 32 bit o verde se è un processo .NET. I processi che hanno Control Flow Guard (CFG) abilitato sono mostrati in corsivo.

Le informazioni sulle sessioni RDP remote vengono visualizzate all'inizio delle informazioni sul processo:

La capacità di rete viene visualizzata in due modi: se è stata rilevata una connessione TCP, viene visualizzata con il simbolo del globo terrestre, e se è stato rilevato un socket connesso, viene visualizzato con il simbolo del globo vuoto. Simbolo aggiunto (cerchio bianco) per processi con librerie di navigazione http in memoria: wininet.dll e winhttp.dll.

Dettaglio rete:

Socket connesso:

C'è un simbolo speciale (una chiave) quando viene rilevata attività simile a Mimikatz.

Nella parte inferiore del pannello di navigazione del documento html, vengono mostrati tutti gli avvisi, con il loro colore, con i PID dei processi in cui sono stati rilevati sotto forma di collegamento ipertestuale alla posizione del documento in cui viene mostrato il processo.

Se non ci sono processi rilevati con un avviso, il loro nome viene visualizzato su sfondo bianco.
Il pannello principale mostra tutti i processi con le relative informazioni in sezioni collassabili che per impostazione predefinita sono nascoste. Tutti gli avvisi sono sempre visibili.

Le regioni di memoria salvate vengono xorizzate con la chiave 0x0E per impedire agli antivirus di eliminarle.
Analizza, confronta e presenta informazioni da:
1. Processi:
• Avvisi:
[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. Moduli:
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:
-----
• Avvisi:
[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. Handle: Vengono visualizzati tutti gli handle del processo dei tipi File, Key, Mutant, Process, Thread, Token e Section. A seconda del tipo di handle, vengono visualizzate le seguenti informazioni:








• Avvisi:
[Handle-Section Phantom DLL Hollowing TxF]
[Handle-Section Suspicious: Injection]
[Pipe Handle to another process]
[Process Handle to another process]
[ShadowMove Lateral Movement]
4. Token: Nei thread in cui viene rilevato un token, viene visualizzato quanto segue:
• Avvisi:
[Thread with TOKEN]

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

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

7. Spazio degli indirizzi di memoria. Mostra da tutte le regioni di memoria del processo i valori di:
• Avvisi:
[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]

