
Live-Speicheranalyse zur Erkennung von Malware-IOCs in Prozessen, Modulen, Handles, Tokens, Threads, .NET-Assemblys, Speicheradressraum und Umgebungsvariablen. Erstellt Dumps, erkennt und disassembliert Hooks, Shellcode, Speicherregionen, Module und Prozesse.

WhacAMole ist ein Programm, das Prozesse im Arbeitsspeicher umfassend analysiert, Anomalien im Zusammenhang mit Malware erkennt und meldet und alle relevanten Informationen zur Überprüfung, Korrelation oder Analyse in Dateien speichert sowie Speicherbereiche, Prozesse und verdächtige Module dumpen kann. Um dies zu erreichen, analysiert es nicht nur die Anomalien der Speicherregionen der Prozesse und der von ihnen geladenen Module, sondern auch den gesamten vom Prozess genutzten Speicherplatz eingehend. Derzeit ist WhacAMole in der Lage, 67 Warnungen im Zusammenhang mit bösartigem Verhalten zu identifizieren, die nur auf Malware zurückzuführen sein können. Es zeigt mehr als 70 Eigenschaften der Prozesse, des Speichers und der Module an, vergleicht viele ihrer im Speicher gelesenen Attribute mit denen, die in der entsprechenden Datei auf der Festplatte erscheinen, zerlegt verdächtige Speicherbereiche teilweise und zerlegt exportierte Funktionen, die im Speicher modifiziert wurden, teilweise, damit Analysten ihre eigenen Untersuchungen durchführen können.

Im Gegensatz zu anderen ähnlichen Programmen stellt es Analysten alle relevanten Informationen zu den Prozessen zur Verfügung und kennzeichnet diejenigen Merkmale, die mit Malware in Verbindung stehen, mit verschiedenen Warnungen, sodass sie ihre eigene Analyse durchführen oder nach anderen Anzeichen für die Existenz bösartiger Prozesse suchen können. Die Warnungen werden nach ihrer Gefährlichkeit und der Anzahl der Prozesse, in denen dasselbe Verhalten auftritt, auf einer Skala von sechs Werten klassifiziert, die im HTML-Dokument mit einer Farbskala dargestellt wird. Dabei ist 6 (schwarze Farbe) ein Indikator für die höhere Wahrscheinlichkeit, dass das erkannte Merkmal auf Malware zurückzuführen ist, und 1 (graue Farbe) bedeutet, dass das Verhalten zwar abnormal ist, aber viele Systemprozesse dasselbe Verhalten aufweisen:

Um die Arbeit der Analysten zu erleichtern, werden die Informationen auf dem Bildschirm, in einer HTML-Datei mit einem Navigationsbereich der analysierten Prozesse und in CSV-Textdateien dargestellt. Im Seitenbereich des HTML-Dokuments wird der Prozessbaum angezeigt, mit der Farbe, die der höchsten in ihnen erkannten Warnung entspricht, mit dem Hyperlink zu seiner Position im Dokument, und mit der blauen Farbe in seiner PID, wenn es sich um einen 32-Bit-Prozess handelt, oder grün, wenn es sich um einen .NET-Prozess handelt. Prozesse, die Control Flow Guard (CFG) aktiviert haben, werden kursiv dargestellt.

Informationen über Remote-RDP-Sitzungen werden am Anfang der Prozessinformationen angezeigt:

Die Netzwerkfähigkeit wird auf zwei Arten angezeigt: Wenn eine TCP-Verbindung erkannt wurde, wird sie mit dem Erdglobus-Symbol angezeigt, und wenn ein verbundener Socket erkannt wurde, wird sie mit einem leeren Globus-Symbol angezeigt. Hinzugefügtes Symbol (weißer Kreis) für Prozesse mit HTTP-Navigationsbibliotheken im Speicher: wininet.dll und winhttp.dll.

Netzwerkdetail:

Verbundener Socket:

Es gibt ein spezielles Symbol (einen Schlüssel), wenn eine Mimikatz-ähnliche Aktivität erkannt wird.

Am unteren Rand des Navigationsbereichs des HTML-Dokuments werden alle Warnungen mit ihrer Farbe und den PIDs der Prozesse, in denen sie erkannt wurden, als Hyperlink zur Position des Dokuments, in dem der Prozess angezeigt wird, dargestellt.

Wenn keine Prozesse mit einer Warnung erkannt wurden, wird ihr Name auf weißem Hintergrund angezeigt.
Das Hauptpanel zeigt alle Prozesse mit ihren Informationen in einklappbaren Abschnitten, die standardmäßig ausgeblendet sind. Alle Warnungen sind immer sichtbar.

Gespeicherte Speicherbereiche werden mit dem Schlüssel 0x0E xoriert, um zu verhindern, dass Antivirenprogramme sie löschen.
Analysiert, vergleicht und präsentiert Informationen von:
1. Prozesse:
• Warnungen:
[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. Module:
Was Sie in einem normalen Modul erwarten würden, ist LMIVH:
L = InLoadOrderModuleList(PEB).
M = InMemoryOrderModuleList (PEB).
I = InInitializationOrderModuleList (PEB).
V = Im virtuellen Speicher des Prozesses erkannt.
H = In der PEB-Hashliste erkannt.
Wenn es aus den drei PEB-verknüpften Listen entfernt wurde, würden Sie sehen:
---VH
Wenn das Modul manuell von der Malware geladen wird, würde es in keiner der PEB-Listen erscheinen, könnte aber durch Scannen des Speichers erkannt werden,
es würde also erscheinen als:
−−−V−
Mit der DLL Hollowing mit Moat-Technik (siehe https://github.com/forrest-orr/artifacts-kit für einen POC) wäre das Ergebnis:
-----
• Warnungen:
[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: Alle Prozesshandles der Typen File, Key, Mutant, Process, Thread, Token und Section werden angezeigt. Je nach Handle-Typ werden die folgenden Informationen angezeigt:








• Warnungen:
[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: In Threads, in denen ein Token erkannt wird, wird Folgendes angezeigt:
• Warnungen:
[Thread with TOKEN]

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

6. .NET-Assemblies
• Warnungen:
[.NET Assembly w/o ILPath]

7. Speicheradressraum Zeigt von allen Speicherregionen des Prozesses die Werte von:
• Warnungen:
[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]

