
Анализ оперативной памяти в реальном времени для обнаружения IOCs вредоносного ПО в процессах, модулях, дескрипторах, токенах, потоках, .NET сборках, адресном пространстве памяти и переменных окружения. Выполняет дамп, обнаружение и дизассемблирование хуков, шелл-кода, областей памяти, модулей и процессов.

WhacAMole — это программа, которая комплексно анализирует процессы в памяти, обнаруживая и сигнализируя об аномалиях, связанных с вредоносным ПО, а также представляет и сохраняет в файлах всю соответствующую информацию для проверки, корреляции или анализа, а также дампит области памяти, процессы и подозрительные модули. Для этого он анализирует не только аномалии областей памяти процессов и загружаемых ими модулей, но и детально исследует всё используемое процессом пространство памяти. В настоящее время WhacAMole способен выявлять 67 предупреждений, связанных с вредоносным поведением или которые могут быть вызваны только вредоносным ПО. Он отображает более 70 свойств процессов, памяти и модулей, сравнивая многие их атрибуты, считанные из памяти, с теми, что присутствуют в соответствующем файле на диске, частично дизассемблирует подозрительные области памяти и частично дизассемблирует экспортированные функции, измененные в памяти, чтобы аналитики могли проводить собственные расследования.

В отличие от других подобных программ, он предоставляет аналитикам всю соответствующую информацию о процессах, помечая характеристики, связанные с вредоносным ПО, различными предупреждениями, чтобы они могли провести собственный анализ или найти другие признаки существования вредоносных процессов. Предупреждения классифицируются по степени опасности и количеству процессов, в которых проявляется одно и то же поведение, по шестибалльной шкале, отображаемой в HTML-документе с цветовой шкалой, где 6 (черный цвет) указывает на более высокую вероятность того, что обнаруженная характеристика вызвана вредоносным ПО, а 1 (серый цвет) — на то, что, хотя поведение и аномально, такое же поведение наблюдалось во многих системных процессах:

Для облегчения работы аналитиков информация выводится на экран, в HTML-файл с панелью навигации по проанализированным процессам и в CSV-текстовые файлы. На боковой панели HTML-документа отображается дерево процессов с цветом, соответствующим самому высокому обнаруженному в них предупреждению, с гиперссылкой на его местоположение в документе, и с синим цветом PID, если это 32-битный процесс, или зеленым, если это .NET-процесс. Процессы, для которых включена Control Flow Guard (CFG), отображаются курсивом.

Информация об удаленных сеансах RDP отображается в начале информации о процессе:

Сетевая активность отображается двумя способами: если обнаружено TCP-соединение, оно отображается символом земного шара, а если обнаружен подключенный сокет, он отображается символом пустого шара. Добавлен символ (белый кружок) для процессов с библиотеками навигации HTTP в памяти: wininet.dll и winhttp.dll.

Детали сети:

Подключенный сокет:

Существует специальный символ (ключ), когда обнаружена активность, похожая на Mimikatz.

В нижней части панели навигации HTML-документа отображаются все предупреждения с их цветом и PID процессов, в которых они были обнаружены, в виде гиперссылки на позицию документа, где показан процесс.

Если процессы с предупреждением не обнаружены, их имя отображается на белом фоне.
На главной панели отображаются все процессы с их информацией в сворачиваемых разделах, которые по умолчанию скрыты. Все предупреждения всегда видны.

Сохраненные области памяти подвергаются XOR с ключом 0x0E, чтобы антивирусы не удалили их.
Анализировать, сравнивать и представлять информацию из:
1. Процессы:
• Предупреждения:
[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. Модули:
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:
-----
• Предупреждения:
[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. Дескрипторы: Отображаются все дескрипторы процесса типов File, Key, Mutant, Process, Thread, Token и Section. В зависимости от типа дескриптора отображается следующая информация:








• Предупреждения:
[Handle-Section Phantom DLL Hollowing TxF]
[Handle-Section Suspicious: Injection]
[Pipe Handle to another process]
[Process Handle to another process]
[ShadowMove Lateral Movement]
4. Токены: В потоках, где обнаружен токен, отображается следующее:
• Предупреждения:
[Thread with TOKEN]

5. Потоки:
• Предупреждения:
[Thread-Memory NOT MEM_IMAGE]
[Thread-Possible Ekko technique]
[Thread-Possible Foliage technique]
[Thread-Unknown module in Stack]

6. Сборки .NET
• Предупреждения:
[.NET Assembly w/o ILPath]

7. Адресное пространство памяти. Отображает для всех областей памяти процесса значения:
• Предупреждения:
[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]

