技术干货 | 攻击者使用Windows后台智能传输服务

admin 2022年1月25日05:46:05评论320 views字数 4885阅读16分17秒阅读模式

https://www.fireeye.com/blog/threat-research/2021/03/attacker-use-of-windows-background-intelligent-transfer-service.html

技术干货 | 攻击者使用Windows后台智能传输服务

在本篇博文中,我们将介绍:

  • 攻击者如何利用背景智能传输服务(BITS)。

  • 用数据格式规范检测攻击者活动的取证技术。

  • BitsParser 工具的公开发布。

  • 一个持久使用BITS的恶意软件的真实案例


介绍

微软在Windows XP中引入了后台智能传输服务(Background Intelligent Transfer Service – BITS),以简化和协调大文件的下载和上传。应用程序和系统组件(最主要的是Windows Update)使用BITS来提供操作系统和应用程序更新,以便可以在最少的用户中断情况下下载这些更新。


应用程序通过创建具有一个或多个文件的作业来下载或上传,从而与后台智能传输服务交互。BITS服务在服务主机进程中运行,并可安排在任何时间进行传输。作业、文件和状态信息存储在本地数据库中。



攻击者如何使用BITS

与许多技术的情况一样,BITS既可以被合法的应用程序使用,也可以被攻击者使用。当恶意应用程序创建BITS作业时,文件会在服务主机进程的上下文中下载或上传。这对于躲避可能阻止恶意或未知进程的防火墙很有用,而且有助于掩盖哪个应用程序请求传输。BITS传输也可以被计划,允许它们在特定的时间发生,而不依赖于长期运行的进程或任务调度器。


BITS传输是异步的,这可能会导致在请求的传输完成时,创建作业的应用程序可能不在运行。为了解决这种情况,创建BITS作业时可以使用用户指定的通知命令,该命令将在作业完成后或出现错误时执行。与BITS作业相关联的通知命令可以指定任何可执行文件或命令来运行。攻击者利用这一特性作为持久维持恶意应用程序的方法。


由于BITS作业的命令数据被存储在数据库中,而不是传统的注册表位置,因此,试图识别持久化可执行文件和命令的工具或取证调查人员可能会忽略它。


BITS 作业可以使用 API 函数调用或通过 bitsadmin 命令行工具创建。请参阅图 1 和图 2,了解如何使用 BITS 作业下载文件并触发执行的例子。

技术干货 | 攻击者使用Windows后台智能传输服务

图1:使用bitsadmin创建一个下载恶意可执行文件的作业,并将其存储到c:windowsmalware.exe。

技术干货 | 攻击者使用Windows后台智能传输服务
技术干货 | 攻击者使用Windows后台智能传输服务

图2:使用bitsadmin创建一个作业,该作业将在尝试下载无效的URL后启动malware.exe。



建立BitsParser

通过我们的调查,Mandiant顾问发现了攻击者在多个活动中利用BITS的证据。为了搜索攻击者使用BITS的证据,我们需要了解BITS使用的基础架构,并创建一个可以收集相关信息的工具。


我们创建了BitsParser,它可以解析BITS数据库,并返回在终端系统上执行的作业信息。Mandiant顾问可以通过我们的终端代理在内部运行该工具,允许从企业内的许多主机上获取BITS数据。BitsParser已经成功地用于许多调查,以发现攻击者的下载、上传和持久性。


为了处理自定义数据库格式,BitsParser利用了开源的source ANSSI-FR 库。该库允许从BITS数据库文件中解析活动和删除的条目,它可以完全从作业和文件记录中提取相关信息。



QMGR数据库

BITS作业和相关的状态信息存储在本地 "队列管理器 queue manager "(QMGR)数据库文件中,在%ALLUSERSPROFILE%/Microsoft/Network/Downloader目录下。数据库被存储到名为qmgr0.dat和qmgr1.dat的文件中。两个文件的方案似乎是用于备份和同步的目的。第二个文件主要包含重复的作业和文件信息,尽管在文件中可以找到一些独特的或旧的条目。



Windows 10 Changes Windows 10的变化

后台智能传输服务自推出以来基本没有变化。然而,Windows 10对该服务进行了重大更改,包括全新的数据库格式。在Windows 10上,QMGR数据库使用可扩展存储引擎(ESE)格式存储。ESE数据库已经在许多其他微软产品中使用,包括Exchange、Active Directory和Internet Explorer。


Windows 10将QMGR数据库存储在一个名为qmgr.db的单一文件中。单独的事务日志文件保存在同一目录中。最近的事务日志存储到一个名为edb.log的文件中,通常会有三个带有数字后缀的旧事务日志。



解析ESE数据库

为了支持Windows 10系统上的调查,我们更新了BitsParser工具,以支持新的QMGR数据库格式。为了实现这一目标,我们需要一个基于Python的ESE数据库解析器。通过研究,我们找到了 libesedb,它是一个用 C 语言编写的完整的 ESE 数据库实现,并带有一个 Python 封装器。由于没有其他Python选项,我们最初在BitsParser中使用libesedb来解析Windows 10 QMGR数据库。然而,我们寻求一种不依赖于本地可执行文件的解决方案,并且在大规模部署时能够更加紧凑地提高效率。


我们发现的唯一一个纯Python ESE数据库实现是Impacket网络工具集的一部分。尽管该源代码可以执行基本的数据库枚举,但它缺乏关键特性,包括处理长值的能力。由于QMGR数据库包含的条目大到需要长值,因此需要修改Impacket的实现。我们对Impacket ESE数据库解析代码进行了修改,使其更加健壮,并支持解析QMGR数据库所需的所有功能。完整的Python解决方案允许在一个更小的包中进行数据库解析,而没有本地代码的风险和限制。



数据库结构

Windows 10 QMGR数据库包含两个表: 作业和文件 (Jobs and Files)。这两个表都有两列。Id和Blob。Id包含一个GUID来识别条目,Blob包含定义作业或文件的二进制数据。幸运的是,作业和文件的结构与以前的数据库格式基本没有变化。


作业数据以控制结构开始:

技术干货 | 攻击者使用Windows后台智能传输服务

在控制结构之后是一个由XFER GUID,{7756DA36-516F-435A-ACAC-44A248FFF34D}分隔的文件列表。该列表以一个4字节的文件计数开始,后面是一个GUID列表,对应于Files表中的Id值。

文件数据使用以下结构:

技术干货 | 攻击者使用Windows后台智能传输服务

通过枚举(enumerating) Jobs表中的条目,解析每个作业数据,找到相关的文件,并解析Files表中的相应记录,对数据库进行处理。这样,BitsParser就可以将相关的信息结合起来,输出作业及其相关的文件,包括相关的元数据。



恢复已删除的记录

活动中的作业在 "作业 "和 "文件 "表中有条目。在作业完成或取消时,记录会被删除。与其他文件系统和数据格式一样,删除的条目不会立即被覆盖,通常可以在删除后的一段时间内恢复。

以下算法用于恢复Windows 10 QMGR数据库中已删除的作业和文件:

1. 通过搜索文件标识符GUID,{519ECFE4-D946-4397-B73E-268513051AB2}来查找文件记录。尝试将以下数据作为正常的文件记录进行解析。

2. 通过搜索工作标识符GUID来查找工作记录。试图将以下数据作为正常的作业记录进行解析。只解析控制结构来处理不完整的作业记录,如果需要,可手动定位相关文件。
在 QMGR 数据库中观察到以下作业 GUID:

  • 1. {E10956A1-AF43-42C9-92E6-6F9856EBA7F6}

  • 2. {4CD4959F-7064-4BF2-84D7-476A7E62699F}

  • 3. {A92619F1-0332-4CBF-9427-898818958831}

  • 4. {DDBC33C1-5AFB-4DAF-B8A1-2268B39D01AD}

  • 5. {8F5657D0-012C-4E3E-AD2C-F4A5D7656FAF}

  • 6. {94416750-0357-461D-A4CC-5DD9990706E4}

3. 将刻好的文件记录与刻好的工作联系起来。处理所有剩余的无法与正在进行或已删除的工作相关联的雕刻文件记录。


历史记录也可以在事务日志文件中找到。虽然我们不对事务日志结构进行解析,但同样的算法可以通过搜索适当的GUID在日志中找到作业和文件记录。虽然相同的记录可能出现在多个文件中,但可以抑制重复的记录,以防止输出冗余信息。



BitsParser工具发布

在撰写本文时,我们还没有发现任何可用的开源工具来解析 BITS 数据库,并提取对事件响应和法医调查有用的数据。为了帮助解决这个问题并促进进一步的研究,FireEye 决定发布一个独立版本的 BitsParser。这个命令行实用程序可以处理所有版本的BITS数据库,并执行雕刻以恢复已删除的作业和文件信息。


BitsParser的源代码可以在我们的GitHub页面找到。


需要注意的是,在Windows 10上,QMGR数据库文件是由BITS服务打开的,不需要共享,从而防止其他程序直接打开它们。当BitsParser通过FireEye终端代理部署时,它可以在不能直接读取的情况下直接解析本地文件系统和原始读取文件。独立的BitsParser不具备这种能力。在运行BitsParser之前,应停止BITS服务,否则可能会利用第三方工具复制锁定的文件。



BITS 在野外的持久性 

(BITS Persistence in the Wild)

在2020年,Mandiant应对了许多涉及Ryuk勒索软件运营商利用定制后门和加载器积极针对医院和其他医疗支持中心的事件(请参阅我们的博客文章Unhappy Hour Special: KEGTAP and SINGLEMALT With a Ransomware Chaser) 通过大量的参与,Mandiant能够描述攻击者的工具技术和程序(TTPs),并确定在加密之前利用的各种后门和加载器的独特方面。在其中一个项目中,Mandiant顾问绘制了从最初利用到加密企业资源和勒索需求的绝大部分攻击时间线。通过客户内部终端检测解决方案提供的日志分析和遥测,在终端用户工作站上发现了一个KEGTAP后门。Mandiant能够识别出勒索软件操作者使用的特定电子邮件和诱惑,包括下载和执行启动KEGTAP的文件mail.exe。然而,Mandiant在其他任务中观察到的持久性机制都没有出现在这个终端上。


对持久性机制的充分理解将使Mandiant能够在整个环境和其他约定中寻找攻击者活动的其他证据。随着关注度的加强,Mandiant顾问发现有证据表明,BITS服务启动了KEGTAP后门。分析人员在Microsoft-Windows-Bits-Client操作事件日志中发现了与BITS服务活动有关的文件mail.exe的条目。

技术干货 | 攻击者使用Windows后台智能传输服务

图3:事件日志条目显示创建了一个BITS作业以实现持久化。

Mandiant顾问通过与主机互动和检查QMGR数据库,确认了BITS作业的细节。恶意的BITS作业被设置为试图从本地主机传输一个不存在的文件的HTTP传输。由于这个文件永远不会存在,BITS会触发错误状态,并启动通知命令,在这种情况下是KEGTAP。


不幸的是,虽然这成功地识别了与该威胁组相关的以前未知的持久性机制,但手动QMGR数据库分析将无法在多个系统或环境中扩展。改编现有的BitsParser来解析Windows 10版本的QMGR数据库,使得Mandiant的顾问能够在多个环境中有效识别更多的受感染系统。

技术干货 | 攻击者使用Windows后台智能传输服务

图4:BitsParser输出显示恶意BITS作业启动mail.exe。



Conclusion 结论

背景智能传输服务继续为应用程序和攻击者提供效用。BITS QMGR数据库可以在调查或捕猎行动中提供有用的数据来源。BitsParser 可与其他取证工具一起使用,以开发攻击者活动的详细视图。


技术干货 | 攻击者使用Windows后台智能传输服务


本文始发于微信公众号(安世加):技术干货 | 攻击者使用Windows后台智能传输服务

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月25日05:46:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   技术干货 | 攻击者使用Windows后台智能传输服务https://cn-sec.com/archives/515474.html

发表评论

匿名网友 填写信息