实时内存分析,检测进程、模块、句柄、令牌、线程、.NET程序集、内存地址空间和环境变量中的恶意软件IOCs。转储、检测并反汇编挂钩、Shellcode、内存区域、模块和进程。

WhacAMole 是一个全面分析内存中进程的程序,能够检测并告警与恶意软件相关的异常,同时将所有相关信息呈现并保存到文件中,以便进行验证、关联或分析,此外还会转储内存区域、进程和可疑模块。 为了实现这一点,它不仅分析进程内存区域及其加载模块的异常,还深入分析进程使用的所有内存空间。 目前,WhacAMole 能够识别 67 种与恶意行为相关或仅可能由恶意软件导致的告警。 它显示进程、内存和模块的 70 多种属性,将内存中读取的许多属性与磁盘上相应文件中的属性进行比较,对可疑内存区域进行部分反汇编,并对内存中被恶意软件修改过的导出函数进行部分反汇编,以便分析人员自行调查。

与其他类似程序不同,它使分析人员能够获取进程的所有相关信息,并用不同的告警标记与恶意软件相关的特征,以便分析人员自行分析或寻找其他恶意进程存在的迹象。 告警根据其危险程度以及同一行为出现的进程数量,按照六个等级的尺度进行分类,并在 HTML 文档中以颜色尺度呈现,其中 6(黑色)表示检测到的特征极有可能由恶意软件导致,而 1(灰色)表示尽管行为异常,但许多系统进程中也观察到了相同行为:

为方便分析人员工作,信息会显示在屏幕上、包含已分析进程导航面板的 HTML 文件以及 CSV 文本文件中。在 HTML 文档的侧边面板中,会显示进程树,颜色对应进程中检测到的最高告警等级,并带有超链接指向其在文档中的位置。如果是 32 位进程,其 PID 显示为蓝色;如果是 .NET 进程,则显示为绿色。启用了控制流防护(CFG)的进程以斜体显示。

远程 RDP 会话的信息会显示在进程信息开头:

网络能力以两种方式显示:如果检测到 TCP 连接,则用地球仪符号显示;如果检测到已连接的套接字,则用空心地球仪符号显示。此外,对于内存中包含 http 导航库(wininet.dll 和 winhttp.dll)的进程,会添加一个符号(白色圆圈)。

网络详情:

已连接套接字:

当检测到类似 Mimikatz 的行为时,会有一个特殊符号(一把钥匙)。

在 HTML 文档导航面板的底部,会显示所有告警,带有颜色,并在检测到该告警的进程 PID 旁提供指向文档中进程位置的超链接。

如果没有检测到任何告警的进程,则其名称显示在白色背景上。
主面板以默认隐藏的可折叠区域显示所有进程及其信息。所有告警始终可见。

保存的内存区域会使用密钥 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. 模块:
在正常模块中,您期望看到的是 LMIVH:
L = InLoadOrderModuleList(PEB)。
M = InMemoryOrderModuleList(PEB)。
I = InInitializationOrderModuleList(PEB)。
V = 在进程的虚拟内存中检测到。
H = 在 PEB 哈希列表中检测到。
如果已从三个 PEB 链表中取消链接,您将看到:
---VH
如果模块由恶意软件手动加载,则不会出现在任何 PEB 列表中,但可以通过扫描内存检测到,
因此会显示为:
---V-
使用 Moat 技术的 DLL Hollowing(参见 https://github.com/forrest-orr/artifacts-kit 中的 POC),结果将为:
-----
• 告警:
[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]

