part1
点击上方蓝字关注我们
1.摘要
攻击者利用交换文件系统进行持久性攻击的技术是一种高级持续性威胁(Advanced Persistent Threat,APT)。这种方法通过将恶意软件的备份版本隐藏在系统中,并在每次清理或重启时重新感染目标系统,来确保其持久性。
2.交换文件系统基础知识
交换文件系统(Swap file system)是操作系统管理内存的一种机制。它通过在硬盘上创建一个特殊文件(交换文件)或分区(交换分区),用于存储临时不需要驻留在物理内存中的数据。当系统内存(RAM)不足时,操作系统会将一些数据从内存移到交换文件中,以腾出内存空间给其他进程使用。
Windows的NTFS文件系统有一项特性,允许将多个数据流附加到一个文件。这些额外的数据流是隐藏的,在普通的文件浏览中看不到,需要使用特殊的命令才能查看和访问。
APT攻击者可以利用交换文件系统的特点,实现隐蔽和持久的恶意代码植入。以下是一些具体方式:
-
利用交换文件存储恶意代码:攻击者可以将恶意代码隐藏在交换文件中,避免被传统的文件扫描工具检测到。交换文件通常不在用户的直接视野中,且内容看似合法,不易引起怀疑。例如: 将恶意脚本或可执行文件隐藏在图片、文档等普通文件的交换文件中,用户打开正常文件时会触发恶意代码执行。
-
利用交换文件实现持久性:恶意代码可以设计成在系统启动时或特定事件触发时,从交换文件中恢复并重新加载。这使得即使系统重启或部分清理,恶意代码依然能够重新感染系统,确保其持久性。例如:将恶意DLL隐藏在合法程序的交换文件中,利用DLL劫持等技术实现持久化控制。
-
利用交换文件实现数据窃取:攻击者将数据渗透工具隐藏在交换文件中,供攻击者远程下载执行,窃取数据。
-
绕过常规检测:交换文件的内容在存储和读取时通常被视为合法的系统数据,普通的安全软件和系统监控工具很难检测到其中隐藏的恶意代码。攻击者将攻击痕迹、C2配置等信息隐藏在交换文件中,可以增加溯源难度。
3.利用交换文件窃取敏感数据案例
3.1.检查恶意软件
以下案例是恶意软件利用文件交换技术, 实现了对一个商务网站目标进行持久化信用卡信息窃取, 这种巧妙的策略使恶意软件能够在多次清理过程中幸存下来。
在该商务网站受感染的结账页面中, 可以看到一个隐藏在页面源码中被混淆过的可疑代码:
该脚本具有恶意软件的所有常见指标,例如 Base64 编码变量和十六进制编码字符串。但一旦解码,便可以看到一些明显的迹象,表明脚本正在监视信用卡详细信息。
3.2.恶意结账页面行为
将该段代码解码后, 可以看到以下代码片段:
该代码片段启用结账按钮, 并将自定义绑定添加到被感染结账页面上的正常点击功能。
当单击结账按钮后, 脚本将通过querySelectorAll
函数捕获输入信用卡表单的数据,如下图:
脚本中其他地方的几个函数变体捕获了敏感信息,如姓名、地址、卡号和攻击者需要利用被盗卡详细信息所需的其他数据。这里还可以看到一个域名 amazon-analytic[.]com,攻击者用它来获取被盗的信用卡详细信息。如图:
该 amazon-analytic[.]com 域名于 2024 年 2 月注册,之前也曾在其他信用卡盗窃案件中使用过。注意品牌名称的使用;这种利用域名中流行产品和服务的策略经常被不良行为者用来逃避检测。
3.3.源码文件bootstrap.php追踪
解码结账页面后, 便可以找到源头。进一步分析发现app/bootstrap.php
文件已经被完全替换,与官方版本不同。如图:
解码上图中的base64编码揭示了在结账页面源代码中发现的精确恶意脚本。除此之外, 还定位到了攻击者用来将被盗数据传输到他们外部域名的 curl
函数。
ob_filter_callback 函数用于将 skimmer 脚本添加到网页,如图:
4.恶意软件删除过程
像这种程度的技术, 删除恶意软件应该会很简单,只需用正确版本替换 app/bootstrap.php
,然后清除缓存就行了,因为已经知道那里的内容就是在结账页面看到的内容。然而, 在这个案例中并非如此。
按照正常操作, 用正确的内容替换文件,但脚本仍然正常在结账页面加载。文件被快速重新感染并非不可能,所以用恶意软件清理工具再次查看了 bootstrap.php
,发现恶意软件又回来了。
特别奇怪的是,当直接通过 SSH 查看服务器上的文件时,它完全是干净的。如图:
但当使用清理工具在文件系统中搜索恶意软件的迹象时,恶意软件仍然出现。如图:
为进一步的测试,这里将明显受感染的 bootstrap.php 文件复制到一个新文件名 – bootstrap.php.clean – 并使用恶意软件清理工具查看该文件。文件内容显示正确。
这里陷入了深思, 不知什么原因, 该文件似乎同时是干净的和受感染的。
这种情况并不常见,但偶尔恶意软件会滞留在内存中,并可能挂钩文件会话数据。没办法, 先重启了Apache和PHP服务,最终重启了整个服务器,试图清除这个问题。令人惊讶的是,恶意软件仍然存在,各种迹象显示: 好像遗漏了什么线索。
5.遗留的线索:交换文件
继续回去分析恶意软件脚本和脚本来源的文件, 在文件最底部发现了一些线索,如图:
搜索一下, 发现服务器上并没有任何具有该名称的文件,如图:
文件名中的 swapme
部分提示可能存在一些遗留的交换文件。当通过ssh直接编辑文件时,服务器会创建一个临时的”交换”版本,以防编辑器崩溃,这可以防止整个内容丢失。
虽然无法使用 ls 命令看到任何 ~swapme 文件,但在 bootstrap.php-swapme 上运行 vi 命令直接编辑交换文件表明该文件确实存在,并且包含与受感染文件bootstrap.php完全相同的内容。
这里很明显, 攻击者正在利用交换文件将恶意软件保留在服务器上并逃避正常的检测方法。尝试删除了该交换文件,再次清除了缓存,然后很快结帐页面源终于干净了。
6.防御措施
攻击者对交换文件系统的滥用凸显了安全措施的重要性,而不仅仅是表面级扫描和清理。在这种情况下,很明显攻击者能够通过 SSH 或某些终端会话获得访问权限,否则上面将无法找到编辑文件时创建的交换文件。
交换文件系统作为操作系统管理内存的一种机制,可以被APT攻击者利用,实现隐蔽和持久的恶意代码植入和执行。通过理解这种机制并采取相应的防御措施,可以有效降低APT攻击的风险。
-
高级威胁检测:使用具备高级检测能力的安全工具,如端点检测与响应(EDR)系统,监控和分析内存和交换文件的活动,识别异常行为。
-
定期系统审计:定期审计系统配置、启动脚本和定时任务,发现和清除可疑的修改和配置。
-
内存和文件完整性保护:使用内存和文件完整性保护工具,防止未经授权的内存修改和文件操作。
-
行为分析和启发式检测: 通过行为分析和启发式检测,识别和阻止异常的系统行为和恶意活动。
另外, 作为管理员,为了降低此类持续性电子商务恶意软件感染的风险, 可以紧急采取一些临时措施,例如: 限制 sFTP、SSH、FTP、CPanel 和任何其他管理员对受信任 IP 的访问。
案例参考网址:https://blog.sucuri.net/2024/07/attackers-abuse-swap-file-to-steal-credit-cards.html
点个在看你最好看
原文始发于微信公众号(二进制空间安全):一种新型利用交换文件系统实现持久性感染技术