一、引言
在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问战术理论知识及实战研究,本期我们为大家介绍ATT&CK 14项战术中的执行战术前6项技术内容,下期介绍执行战术后6项技术内容,敬请关注。
二、ATT&CK v10简介
MITRE ATT&CK 是一个全球可访问的基于现实世界观察的对手战术和技术知识库。ATT&CK 知识库被用作在私营部门、政府以及网络安全产品和服务社区中开发特定威胁模型和方法的基础。
ATT&CK v10更新了适用于企业、移动设备和 ICS(工业控制系统)框架的技术、组和软件。最大的变化是在企业 ATT&CK 中增加了一组新的数据源和数据组件对象,这是对 ATT&CK v9 中发布的 ATT&CK 数据源名称更改的补充。在 ATT&CK v10 中更新的内容汇总了有关数据源的这些信息,同时将它们构建为新的 ATT&CK 数据源对象。
ATT&CK v10 for Enterprise包含14个战术、188个技术、379个子技术、129个组织、638个软件,一共包括38类数据源。数据源对象具有数据源的名称以及关键细节和元数据,包括 ID、定义、可以收集它的位置(收集层)、可以在什么平台上找到它,突出显示构成数据源的相关值/属性的组件。ATT&CK v10 中的数据组件分析每个亮点映射到各种(子)技术,这些技术可以用该特定数据检测到。在个别(子)技术上,数据源和组件已从页面顶部的元数据框重新定位,以与检测内容并置。这些数据源可用于 Enterprise ATT&CK 的所有平台,包括最新添加的涵盖映射到 PRE 平台技术的开源情报 (OSINT) 相关数据源。
ATT&CK战术全景图(红框为执行战术)
三、执行战术
3.1 概述
执行战术是指攻击者控制的恶意代码在本地或远程系统上运行的技术,通常与其他技术结合使用,例如扫描网络或窃取数据,使用远程访问工具来运行PowerShell 脚本等。
执行包括12种技术,本期为大家逐一介绍前6项技术。下期为大家介绍后6项技术。
3.2 利用命令和脚本解释器(T1059)
攻击者可能利用命令和脚本解释器来执行命令、脚本或二进制文件。这些接口和语言提供了与计算机系统交互的方式,大多数系统都带有一些内置的命令行界面和脚本功能,例如,macOS 和 Linux 发行版包括一些 Unix Shell,而 Windows 安装包括 Windows Command Shell 和 PowerShell。
有跨平台解释器(例如 Python),与客户端应用程序相关的解释器(例如 JavaScript 和 Visual Basic解释器)。
利用合适的技术,攻击者能以各种方式执行命令。命令和脚本可以嵌入初始访问的攻击载荷中,向受害者发送诱饵文档或通过现有C2服务器下载攻击载荷。攻击者也可以通过交互式终端的shell执行命令。
利用命令和脚本解释器技术包含8个子技术,如下:
3.2.1 PowerShell(T1059.001)
攻击者可以利用PowerShell命令和脚本获取执行权限。PowerShell是Windows操作系统中一个功能强大的交互式命令行界面和脚本环境。攻击者可以使用PowerShell执行许多操作,包括信息发现和恶意代码执行。
PowerShell 可用于从 Internet 下载和运行可执行文件,这些可执行文件可以从磁盘或内存中执行。
有许多基于 PowerShell 的攻击性测试工具可用,包括 Empire、PowerSploit、PoshC2 和 PSAttack。
PowerShell 命令和脚本可以不通过底层DLL接口直接调用 powershell.exe 二进制文件执行。
3.2.2 AppleScript(T1059.002)
攻击者可以利用 AppleScript 获取执行权限。AppleScript 是macOS 脚本语言,通过AppleEvents 的应用程序间消息来控制应用程序和部分操作系统。这些 AppleEvent 消息可以单独发送,也可以使用 AppleScript 编写脚本。这些事件可以定位打开的窗口,并与本地或远程打开的应用程序进行交互。
脚本可以通过命令行、邮件规则、纯文本 shell 脚本等方式执行。
攻击者可利用 AppleScript 来执行各种行为,例如与开放的 SSH 连接进行交互、移动到远程机器,向用户展示虚假对话框,与应用程序交互等。在 macOS 10.10 Yosemite 及更高版本上,AppleScript 能够执行本机 API,否则需要以 mach-O 二进制文件格式编译和执行。
3.2.3 Windows Command Shell(T1059.003)
攻击者可利用 Windows Command shell 获取执行权限。Windows Command Shell是 Windows 系统的主要命令提示符。Windows 命令提示符可用于控制系统的几乎所有组件,不同的命令子集需要不同的权限级别。可以通过远程服务(如 SSH)远程调用命令提示符。
批处理文件(例如:.bat 或 .cmd)还为 shell 提供了一系列要运行的顺序命令,以及正常的脚本操作,例如条件和循环。批处理文件的常见用途包括长时间或重复性任务,或者需要在多个系统上运行相同的命令集。
攻击者可能会利用 cmd 来执行各种命令和有效负载。包括 cmd 执行单个命令,或以交互方式利用 cmd 通过C2通道转发输入和输出。
3.2.4 Unix Shell(T1059.004)
攻击者可利用Unix shell 命令和脚本来获取执行权限。Unix shell 是 Linux 和 macOS 系统上的主要命令提示符。Unix shell 可以控制系统的各个方面,其中某些命令需要提升权限。
攻击者可利用Unix shell 来执行各种命令或有效负载。交互式 shell 可以通过C2通道或在横向移动期间访问,向受害者传递和执行多个命令。
3.2.5 Visual Basic(T1059.005)
攻击者可能会利用 Visual Basic (VB) 来获取执行权限。VB 是微软创建的一种编程语言,通过 Windows API 与许多 Windows 技术(如组件对象模型和 Native API)具有互操作性。
VB 的衍生语言包括Visual Basic for Applications (VBA) 和 VBScript。VBA 是一种内置于 Microsoft Office 以及多个第三方应用程序中的事件驱动编程语言。VBA 使文档能够包含可在主机上自动执行任务和其他功能的宏。VBScript 是 Windows 主机上的默认脚本语言,也可以在提供给 Internet Explorer 的 HTML 应用程序 (HTA) 网页上代替 JavaScript 使用。
攻击者可能会使用 VB 有效负载来执行恶意命令。常见的恶意使用包括使用 VBScript 自动执行行为或将 VBA 内容嵌入到鱼叉式钓鱼附件有效负载中。
3.2.6 Python(T1059.006)
攻击者可利用 Python 命令和脚本来获取执行权限。Python 可以从命令行(通过 python.exe 解释器)或通过编写和分发到不同系统的脚本 (.py) 以交互方式执行。Python 代码也可以编译成二进制可执行文件。
Python 自带很多内置的包和底层系统交互,比如文件操作和设备 I/O。攻击者可以使用这些库来下载和执行命令或脚本以及执行各种恶意行为。
3.2.7 JavaScript(T1059.007)
攻击者可利用 JavaScript 来获取执行权限。JavaScript (JS) 是一种独立于平台的脚本语言(在运行时即时编译),通常与网页中的脚本相关联。
JS通过 Windows 脚本引擎进行解释,因此与 Windows 的许多组件集成,例如组件对象模型和 Internet Explorer HTML 应用程序 (HTA) 页面。
攻击者利用 JavaScript在网站上托管恶意脚本,或下载和执行这些脚本文件作为攻击载荷。由于攻击载荷是基于文本的,因此攻击者经常将其内容混淆为文件或信息的一部分。
3.2.8 Network Device CLI(T1059.008)
攻击者可利用网络设备上的脚本或内置命令行解释器 (CLI) 来执行恶意命令。CLI 是用户和管理员与设备交互以查看系统信息、修改设备操作或执行诊断和管理功能的主要方式。CLI 通常包含不同命令所需的各种权限级别。
脚本解释器自动执行任务并将功能扩展到网络操作系统中包含的命令集之外。CLI 和脚本解释器可通过直接控制台连接或远程方式(如 telnet 或 SSH)访问。
攻击者可以使用网络 CLI 来更改网络设备的行为和操作方式。CLI 可用于操纵流量以拦截或操纵数据,修改启动配置参数以加载恶意系统软件,禁用安全功能或日志记录以绕过检测。