你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

利用macOS Dock实现攻击持久化

发布时间:2024-06-15

浏览次数:0

sublime text 3 函数追踪_追踪函数如何使用_跟踪函数

sublime text 3 函数追踪_跟踪函数_追踪函数如何使用

1. 背景

追踪函数如何使用_跟踪函数_sublime text 3 函数追踪

最近,我一直在关注 macOS 持久性领域,特别是选择那些可以被低级用户修改并可能影响用户交互的文件。我发现最终用户经常与之交互的一个位置是 Dock。

通过我的研究,我发现有一个 plist 可以控制 Apple Dock 中应用程序的视觉呈现。这里没有太多开创性的东西,因为这个 plist 经常被最终用户通过图形用户界面 (GUI) 修改。在查看了 plist 中的值后sublime text 3 函数追踪,我想探索是否可以更改这些值,以将合法应用程序替换为运行自定义代码的恶意应用程序。

这项研究的突破之一是 .js,我将其整合到我的项目中。在我的实现中,我将 或 替换为恶意应用程序。我专注于 和 ,因为它们很可能出现在用户的 Dock 中。然而,该理论实际上适用于任何应用程序。一旦最终用户单击 或 图标,我们的恶意应用程序就会运行。这种持久性类似于 macOS 中的快捷方式 (.LNK) 文件持久性,因为 Dock 图标通常是实际应用程序的快捷方式。

这种持久性方法需要将我们的恶意应用程序上传到目标机器。我更喜欢使用代理中的上传功能将应用程序保存在目标上。

修改 plist 后,我​​们可以立即重新加载 Dock。但是,这会导致最终用户的屏幕出现短暂闪烁。或者,我们可以等待用户重新启动,然后再让虚假应用程序出现在 Dock 中,因为修改后的 plist 将在重新启动后持续存在。

sublime text 3 函数追踪_跟踪函数_追踪函数如何使用

2.攻击方法

2.1 部署

如前所述,这种持久性方法需要将恶意应用程序上传到目标。在此过程中,有多种方法可以绕过保护,使我们能够将恶意应用程序上传到目标。这些方法包括:

1、将应用程序包压缩,在代理(或)中使用上传命令,然后在目标机中解压。

2.将应用程序包压缩,托管在某处,使用curl下载到目标,然后在目标机器上解压。

3、将应用程序包压缩,并进行编码,解码后保存在目标上,然后在目标电脑上解压。

作为概念验证 (PoC),我简单地在“自动化”中创建了一个应用程序 ()。PoC 应用程序将打开浏览器,以便最终用户不会意识到这一点。然后,它将运行我们的

在 PoC 应用程序中,JXA 打开并执行:

追踪函数如何使用_跟踪函数_sublime text 3 函数追踪

为了向最终用户隐藏它,我用浏览器替换了默认的 图标。当然,您可以使用 Xcode 创建更复杂的应用程序。

带有浏览器图标的PoC应用程序,我们将其命名为:

追踪函数如何使用_跟踪函数_sublime text 3 函数追踪

接下来,我将应用程序包压缩并上传到目标。将其解压到 /Users// 后,如果满足先决条件,我们就可以专注于调用持久性方法。

注意:由于 plist 的二进制格式,自动实现要求虚假应用程序命名为“”或“”,并位于 /Users//。我们可以修改 变量来更改此位置。

2.2 呼叫持久性

将脚本导入代理:

跟踪函数_sublime text 3 函数追踪_追踪函数如何使用

调用该函数。该函数接受三个参数:应用程序名称(或)、ID 以及立即重新加载 Dock 的选项。

注意:ID在Info.plist中,可以使用以下命令获取:

/usr// -c ‘打印’ ~//.app//Info.plist

调用代理中的函数,指定ID以及是否重新加载Dock的选项:

sublime text 3 函数追踪_跟踪函数_追踪函数如何使用

3.检测方法

它是一款快速捕获主机事件的绝佳工具。它可以用作 macOS 的实时事件查看器。它的一个突出特点是利用了 Apple 的 (ESF)。ESF 可以监视系统事件以发现潜在的恶意活动。它实际上是系统扩展框架中的一个 API。相比之下,它可以理解为 macOS 上功能有限的事件跟踪 (ETW)。

有了它,我们可以轻松查看持久执行创建的文件和进程事件。

对于不熟悉 ESF 的读者sublime text 3 函数追踪,您需要知道将同步以下事件:

XEC = ::exec

_EXIT = ::退出

= 文件::

= :kext::加载

= 文件::挂载

= 文件::

= 文件::

= ::

_FORK = ::fork

虽然它目前无法捕获 _MMAP 和 _EXEC,但它捕获了足够的事件以用于这种持久性方法。如果你想检测其他恶意活动,我强烈建议你使用它。

下面重点讨论持久化方法的执行,不同攻击者使用的具体方法不同,实际恶意应用对应的事件可能会有所不同。

首先,将 Dock plist 转换为 XML。XML 格式更易于使用。

将当前的com.apple.dock.plist转换为XML格式:

随后,记录文件创建和进程创建。

.js 在 //tmp/ 中创建一个随机命名的文件。此脚本会修改 plist 的 XML 版本,并使用随机文件名保存。在本例中,恶意 plist 是 XML 格式,因此我们使用正确加载 Dock 所需的二进制格式版本覆盖此文件。

将修改后的 plist 转换回二进制格式:

接下来,.js 删除 ~///com.apple.dock.plist 中现有的 plist。

删除当前的com.apple.dock.plist:

ESF 捕获此操作并将新的恶意 plist 以二进制格式保存到 ~///com.apple.dock.plist。

保存修改后的com.apple.dock.plist:

最后,由于我们在函数调用中指定重新加载Dock,因此这个函数会被调用。

重新加载 Dock:

这些事件是我们构建检测的起点。这里的关键是检测是否存在。此外,文件创建、删除和修改事件也可用于检测。在攻击者持续存在之前,还可以检测到将恶意应用程序上传到目标计算机的行为。

3.1 正常执行

你可能有一个疑问,现在我们了解了 ESF 如何捕获已知的恶意行为,那么 ESF 如何区分正常执行呢?

在正常执行下,(核心)将在 com.apple.dock.plist 上触发 file:: 事件(文件覆盖)。当用户通过 GUI 手动更改 Dock 时,也会触发这些事件。

com.apple.dock.plist的正常修改:

3.2 试图逃避检测

攻击者可以在另一台主机上修改 plist,然后将修改后的 plist 上传到目标机器,这将减少潜在指标的数量。但是,这仍然会触发 file:: 事件,而进程在正常执行中不会使用该事件。因此,识别对 plist 的非进程修改可能是检测恶意行为的良好标准。

在代理覆盖的帮助下替换 com.apple.dock.plist:

3.3 可视化指标

如果执行 PoC 应用程序,将导致 Dock 中出现两个实例。

恶意应用程序与合法应用程序:

追踪函数如何使用_sublime text 3 函数追踪_跟踪函数

第一个是恶意应用程序,位于 plist 的“-apps”部分,而第二个是真实应用程序,位于 plist 的“-apps”部分。

sublime text 3 函数追踪_跟踪函数_追踪函数如何使用

四、其他指标

查看 ESF 日志后,我注意到其中包含一些写入数据库的内容。如果攻击者利用了这一点,需要注意的一点是,在 ~///com.apple./Cache.db 处有一个缓存数据库。

注意:上述缓存数据库创建仅适用于攻击者使用二进制文件的情况。此外,我还深入研究了使用替代方案的情况。为了进行测试,我使用 Text 加载了 JXA dylib。与缓存数据库位置不同,本例中的 C2 条目记录在 ~///com..3/Cache.db 中。

使用相应的数据库浏览器查看数据库后,我注意到该表包含服务器的 IP 地址以及用于命令和控制 (C2) 通信的 GET 请求的简短日志。此缓存内容为紧急调查提供了宝贵的来源。

使用数据库浏览器,我们可以在数据库中看到C2通信的证据:

还可以使用命令行工具查看这些条目:

sublime text 3 函数追踪_跟踪函数_追踪函数如何使用

五、结论

在这篇文章中,我们演示了一种类似于 macOS 中 .LNK 文件的持久性攻击方法。更重要的是,我希望本文分析的持久性指标可以为正在开发检测方法的研究人员提供帮助。如果您发现这种持久性方法的其他检测指标,请随时与我讨论。

sublime text 3 函数追踪_跟踪函数_追踪函数如何使用

6. 参考资源

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

如有侵权请联系删除!

13262879759

微信二维码