Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
WhacAMole — 实时内存分析,检测进程、模块、句柄、令牌、线程、.NET程序集、内存地址空间和环境变量中的恶意软件IOCs。转储、检测并反汇编挂钩、Shellcode、内存区域、模块和进程。 | Kitploit
工具/GitHubGitHub/ignacioj/whacamole
危害指标 (IOC) 管理动态分析 (沙盒)内存取证逆向工程Shellcode调试器取证分析恶意软件分析数字取证二进制分析威胁情报事件响应
45451年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
ignacioj/whacamole

WhacAMole

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

查看仓库

WhacAMole

WAM_logo

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

Modificación de función por malware

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

Color codes

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

Tree1

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

RDP

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

TreeTCPSocket

网络详情:

TCPDetail

已连接套接字:

socketDetail

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

socketDetail

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

Detections

如果没有检测到任何告警的进程,则其名称显示在白色背景上。

主面板以默认隐藏的可折叠区域显示所有进程及其信息。所有告警始终可见。

socketDetail

保存的内存区域会使用密钥 0x0E 进行异或处理,以防止杀毒软件删除它们。

分析、比较并呈现以下信息:

1. 进程:

  • 进程名称。
  • 文件大小。
  • 进程 PID。
  • 进程的 PPID。
  • TCP 和 UDP 网络连接。
  • 提示进程是否出现在四个 PEB 列表中:InLoadOrderModuleList、InMemoryOrderModuleList、InInitializationOrderModuleList 和 LdrpHashTable。
  • 提示进程在内存中是否可见(VAD)。
  • Rich Header 信息。
  • 从内存和文件中读取的导出函数。
  • 导入函数。
  • 延迟导入模块。
  • 分配给进程模块的内存保护。
  • 内存类型。
  • 读取到内存中的进程入口点。
  • 从文件中读取的进程入口点。
  • 进程的内存地址。
  • 在内存和文件中读取的 PE 节。仅当存在差异时才显示两者。
  • PE 数据节大小。
  • 可执行文件的特征(DLLCharacteristics)。
  • 映像主版本号(MajorImageVersion)。
  • 原始校验和与计算出的校验和。
  • 从 VERSIONINFO 资源(从内存和文件中读取)显示以下值:Comments、CompanyName、FileDescription、FileVersion、InternalName、LegalCopyright、LegalTrademarks、OriginalFilename、PrivateBuild、ProductName、ProductVersion、SpecialBuild。
  • 从本地安全机构(LSA)获取的进程会话 ID。
  • 进程可见的会话 ID。
  • 登录会话本地唯一标识符(LUID)。
  • 源进程登录会话的本地唯一标识符(LUID)。
  • 令牌完整性。
  • 令牌类型。
  • 登录类型。
  • 使用的身份验证包。
  • 用户和域。
  • 用户的安全标识符(SID)。
  • 本地管理员组成员身份。
  • 进程命令行。
  • 进程文件路径。如果 VAD 和 PEB 中的 FullName 不同,则显示两者。
  • 进程的当前工作目录(CWD)。
  • PE 格式:x86/x64。
  • 目标机器类型(Target Machine)。
  • 进程创建日期时间。
  • 从系统启动到进程创建所经过的时间。
  • PE 签名。
  • 在内存和文件中读取的程序数据库文件(.pdb)地址。
  • 从 IMAGE_FILE_HEADER(在内存和文件中读取)获取的日期时间。
  • 从 IMAGE_DEBUG_DIRECTORY(在内存和文件中读取)获取的日期时间。
  • 从 IMAGE_EXPORT_DIRECTORY(在内存和文件中读取)获取的日期时间。
  • 从 IMAGE_RESOURCE_DIRECTORY(在内存和文件中读取)获取的日期时间。
  • 文件的 SHA1 哈希。
  • 是否为 .NET 可执行文件以及 CLR 版本的信息。
  • 是否在进程中检测到 NTFS 或事务性记录(TxF/TxR)的信息。
  • 查找可疑的环境变量。
  • 检查线程状态。
  • 获取系统中与每个进程关联的运行任务。

• 告警:

root@kitploit:~
[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]

Processes

2. 模块:

  • 模块名称。
  • 文件大小。
  • 文件路径。如果 VAD 和 PEB 中的 FullName 不同,则显示两者。
  • 提示进程是否出现在四个 PEB 列表中:InLoadOrderModuleList、InMemoryOrderModuleList、InInitializationOrderModuleList 和 LdrpHashTable。
  • 提示进程在内存中是否可见(VAD)。
root@kitploit:~
在正常模块中,您期望看到的是 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),结果将为:
    -----
  • Rich Header 信息。
  • 从内存和文件中读取的导出函数。
  • 分配给模块的内存保护。
  • 内存类型。
  • 读取到内存中的进程入口点。
  • 从文件中读取的进程入口点。
  • 进程的内存地址。
  • 在内存和文件中读取的 PE 节。仅当存在差异时才显示两者。
  • PE 数据节大小。
  • 可执行文件的特征(DLLCharacteristics)。
  • 映像主版本号(MajorImageVersion)。
  • 原始校验和与计算出的校验和。
  • PE 格式:x86/x64。
  • 目标机器类型(Target Machine)。
  • 模块在内存中加载的日期时间。
  • 从 VERSIONINFO 资源(从内存和文件中读取)显示以下值:Comments、CompanyName、FileDescription、FileVersion、InternalName、LegalCopyright、LegalTrademarks、OriginalFilename、PrivateBuild、ProductName、ProductVersion、SpecialBuild。
  • PE 签名。
  • 在内存和文件中读取的程序数据库文件(.pdb)地址。
  • 从 IMAGE_FILE_HEADER(在内存和文件中读取)获取的日期时间。
  • 从 IMAGE_DEBUG_DIRECTORY(在内存和文件中读取)获取的日期时间。
  • 从 IMAGE_EXPORT_DIRECTORY(在内存和文件中读取)获取的日期时间。
  • 从 IMAGE_RESOURCE_DIRECTORY(在内存和文件中读取)获取的日期时间。
  • 文件的 SHA1 哈希。
  • 是否为 .NET 可执行文件以及 CLR 版本的信息。

• 告警:

root@kitploit:~
[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]

Modules

3. 句柄: 显示所有 File、Key、Mutant、Process、Thread、Token 和 Section 类型的进程句柄。根据句柄类型,显示以下信息:

File:文件的完整地址。

Handle File

NamedPipe:客户端进程、服务端进程、授予的访问权限、内核对象地址。

Named pipe

Key:所访问键的完整地址。

Handle Key

Mutant:互斥体名称。

Mutant

Process:进程 ID、进程名称、授予的访问权限、内核对象地址。

Handle Process

Thread:进程名称、进程 ID、线程 ID、授予的访问权限、内核对象地址。

Handle Thread

Token:用户的安全标识符(SID)、用户和域、登录会话的本地唯一标识符(LUID)、令牌类型。

Handle Token

Section:对象名称、句柄 ID、内存地址、大小、内存分配属性、模块入口点(如果适用)、允许的访问权限、内核对象地址。

Handle Section

• 告警:

root@kitploit:~
[Handle-Section Phantom DLL Hollowing TxF]
[Handle-Section Suspicious: Injection]
[Pipe Handle to another process]
[Process Handle to another process]
[ShadowMove Lateral Movement]

4. 令牌: 在检测到令牌的线程中,显示以下信息:

  • 线程 ID。
  • 线程状态。
  • 用户和域。
  • 登录会话的本地唯一标识符(LUID)。
  • 来源登录会话的本地唯一标识符(LUID)。
  • 令牌类型。
  • 令牌完整性。

• 告警:

root@kitploit:~
[Thread with TOKEN]

Tokens

5. 线程:

  • 线程 ID。
  • 线程起始地址。
  • 模块的完整地址。
  • 状态。
  • 调用堆栈。

• 告警:

root@kitploit:~
[Thread-Memory NOT MEM_IMAGE]
[Thread-Possible Ekko technique]
[Thread-Possible Foliage technique]
[Thread-Unknown module in Stack]

Threads

6. .NET 程序集:

  • 应用程序域。
  • 文件的完整地址。

• 告警:

root@kitploit:~
[.NET Assembly w/o ILPath]

NET

7. 内存地址空间。 显示进程所有内存区域的以下值:

  • 内存地址。
  • 保护。
  • 状态。
  • 类型。
  • 从 VAD 读取的文件名称。
  • 区域大小。
  • 其所属分配的基础地址。
  • 初始内存分配保护。

• 告警:

root@kitploit:~
[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]

Memory

Memory

下载工具