利用LeechAgent对远程物理内存进行取证分析

LeechAgent是一个100%免费的开源端点取证解决方案,适用于对活动目录环境中的Windows端点进行远程物理内存的取证与分析。

LeechAgent提供了一种简单、高性能且安全的方式来远程访问和查询系统物理内存(RAM)。使用MemProcFS挂载远程内存时,就像通过点击方式操作普通文件一样简单,因此,它非常适合用于快速的筛选分类。此外,使用PCILeech的话,我们还可以通过网络来转储内存。通过向远程主机提交分析脚本,我们可以通过MemProcFS Python API来查询物理内存!并且,上述所有操作可以同时进行。

物理内存分析有许多优点,最主要的一点是,分析目标系统所用的API是独立的,也就是说,即使目标系统上的系统API已经受到破坏,对我们的影响也不大。

下面的视频演示了在远程计算机上安装LeechAgent服务,使用它来安装MemProcFS,转储物理内存以及通过MemProcFS API将Python分析脚本提交到远程LeechAgent的详细过程。观看视频之后,您就会知道这个过程到底有多么的轻松了。

演示视频地址: https://youtu.be/UIsNWJ5KTvQ。

LeechAgent不仅提供了必要的安全性,并且用起来也非常简单。实际上,LeechAgent的安全性是建立在Windows内建功能的基础上的,并且具体实现对用户来说是透明的。它只允许管理员用户进行连接,并且,不存在其他身份验证机制。而LeechAgent的简单性意味着,使用过程中,我们无需创建用户,配置证书或设置身份验证机制。为了确保安全性,所需的一切都已经为我们准备妥当了,无需任何配置!

LeechAgent的用法

LeechAgent允许10个客户端同时连接,远程获取物理内存,以Python分析脚本的形式执行代码,并可访问MemProcFS API。我们使用命令行PCILeech或基于文件系统的MemProcFS,从运行LeechAgent的远程计算机转储物理内存。然后,使用MemProcFS文件系统和/或API来快速分析远程计算机的内存。

然后,通过MemProcFS将远程计算机的物理内存挂载为文件系统,这样,我们就可以使用自己喜欢的工具来快速轻松地访问远程物理内存了。

从运行LeechAgent的远程计算机获取内存,即使在具有中等带宽、中等延迟的网络连接上,它也能很好地工作。如果需要的话,我们也可以直接在远程计算机上运行访问MemProcFS API的Python内存分析脚本。在这种情况下,LeechAgent会在收到脚本后自动生成嵌入式Python环境,并执行脚本。Python分析脚本永远不会“接触”目标系统上的磁盘。

这种方法有许多优点。主要优点是,我们可以在远程系统上本地访问物理内存——完全消除带宽和延迟问题,这一特点使其成为物理内存分析的理想选择,即使在低带宽和高延迟网络上也是如此。此外,由于工作负载转移到LeechAgent脚本,因此,可以在大量主机上同时运行,例如在事件响应情形中。

有关MemProcFS Python API的更多信息,请参阅MemProcFS wiki 页面 。

假设您有一个Python脚本,它通过分析物理内存来查找用户模式应用程序中的读写执行部分。这在分析某些类型的恶意软件的时候可能非常有用的。请注意,在某些情况下,rwx部分也可能存在于合法的应用程序中。

脚本检索所有进程的进程信息,然后遍历所有进程,并将通过遍历CPU页表来检索其内存映射。

示例Python脚本使用VmmPy MemProcFS API来分析内存。

用PCILeech将Python内存分析脚本提交给远程LeechAgent并等待分析结果。LeechAgent将捕获通过提交的分析脚本写入控制台的所有输出内容。

将分析脚本提交给远程LeechAgent并等待分析结果。

如果分析脚本出错,例如,如果遇到死循环,那么将在两分钟后自动中止。在极少数情况下,可以断开所有客户端与远程LeechAgent的连接并等待几分钟,这样就能清除所有有问题的作业。

安装LeechAgent

LeechAgent可以支持32位和64位Windows系统。实际上,虽然32位版本同时适用于32位和64位系统,但在受限模式下,它无法在远程主机上处理内存分析脚本。因此,我们强烈建议使用64位Leechagent!

安装LeechAgent时,可以从Github上的LeechCore 存储库 下载相应的安装包。其中,LeechAgent的64位版本位于 LeechCore/file/agent/x64 中。需要注意的是,LeechAgent的分析脚本依赖于Python,内存转储依赖于WinPMEM。如果在交互(非服务)模式下运行,DumpIt也可以用于内存转储。

依赖项:

·Python:从 python.org 下载Windows x86-64可嵌入的 zip文件,并将其内容解压缩到LeechAgent\Python子目录中。

· WinPMem:从 Github 下载签名的64位 驱动程序 ,并将其放到leechagent.exe所在的LeechAgent文件夹中。

目标系统要求:

· Windows 7或更高版本。

· 位数要求——无法在32位系统上安装64位版本的LeechAgent。

· 活动目录环境:当作为服务安装时,才有该要求。(在实验室环境中,可以在未经身份验证的不安全模式下执行LeechAgent,该模式不依赖于活动目录进行身份验证)。

· 管理员访问权限:运行LeechAgent安装包的用户必须具有远程计算机的管理员权限。如果在localhost上安装,则用户必须是高级管理员。

· 文件共享——安装时:需要访问C$管理文件共享。

· 防火墙开放——安装时:只需安装即可访问服务控制管理器(SCM)和文件共享。

· 防火墙开放——使用时:需要访问LeechAgent或tcp/28473。

推荐为远程LeechAgent安装使用的Windows防火墙规则。

LeechAgent终端的Windows防火墙规则–tcp/28473。

安装方法

安装过程非常简单,只需运行以下命令即可:

LeechAgent.exe -remoteinstall <remote_computer_name>

LeechAgent及其依赖项将被复制到远程主机的Program Files\LeechAgent目录中。如果想要卸载的话,可以使用-remoteuninstall命令。

安全和身份验证

LeechAgent的主要设计目标是兼顾简单性和安全性。

LeechAgent完全依赖于Windows内置的Kerberos身份验证功能对连接客户端进行相应的验证。并且,只允许具有运行LeechAgent的计算机上得管理权限的远程用户进行连接。除此之外,在默认情况下,还需要连接客户端提供运行LeechAgent的用户的Kerberos SPN来验证LeechAgent的真实性。这通常就是活动目录中的计算机帐户。

连接客户端时,在远程LeechAgent用户和客户端之间进行相互验证,有助于进一步提高其安全性。

客户端和远程LeechAgent之间的RPC连接,不仅借助相互的Kerberos认证来提供保护,同时,用于加密的Windows内置功能也是基于Kerberos系统的。如果客户端和服务器都运行在Windows 10上的话,则连接也进行相应的压缩处理。

连接客户端时,这一事件将被记录到运行LeechAgent的计算机上的应用程序事件日志中。

连接用户[email protected]时,该事件将被LeechAgent记录到应用程序事件日志中。

需要注意的是,LeechAgent不仅允许经过身份验证的远程管理员访问物理内存,还允许其以SYSTEM权限在运行LeechAgent的计算机上执行任意代码。实际上,这么做是故意而为之的,因为只允许管理员连接,所以,这不会构成一个安全问题。

还需要注意的是,在交互模式下运行LeechAgent,无需任何形式的身份验证。我们并不推荐这种做法,这仅仅适用于在安全的实验室环境中使用。

未来展望

对于LeechAgent来说,我们的主要的设计目标就是兼顾安全性与易用性。因此,在不久的将来,不太可能添加更多的身份验证机制或支持更多的操作系统。就目前而言,基于Kerberos的内置Windows身份验证就够用了。

对于MemProcFS Python API,虽然它的速度很快,功能也很强大,但仍然存在许多局限性。所以,我们不仅要继续开发新的API功能,同时,还要扩展原来的API功能。

此外,我们还会对内存转储做进一步优化。

尽管MemProcFS Python API的速度已经很快,只主要得益于底层的多线程本机C分析库的运行速度,但仍有改进的空间,所以,我们将继续对其性能做进一步的优化。

猜你喜欢

转载自blog.csdn.net/c710473510/article/details/89378657