文章来源:安全狗投稿
前言
ATT&CK 是今年国内安全行业的一个备受瞩目的火热概念,很多组织和厂商发布了文章阐释各自对于它的理解,甚至连不少甲方单位也开始关心起 ATT&CK,不仅向安全厂商咨询其在这方面的研究成果,似乎也有意将其当做衡量厂商产品能力的一个维度——安全圈一时间颇有些 “平生不识此概念,纵做安全也枉然” 的氛围。
当然,这个现象很正常,ATT&CK 作为一项来自国外的新技术概念,安全行业理所应当对其进行研究分析。但另一方面,当前业内对于 ATT&CK 的研究分析存在很多误解和片面的地方,因此我们从自己的角度出发对 ATT&CK 进行了一些探讨,希望能够还原其本来面目、消除过度的 “神秘感”,重新审视这一技术的真正价值。当然作为一家之言,我们肯定也存在不客观的地方,是非对错,尽付公论。
ATT&CK
01. ATT&CK框架介绍
ATT&CK (Adversarial Tactics, Techniques & Common Knowledge) 是 MITRE 公司开发的、基于真实环境观察攻方战术和技术的知识库。
MITRE 是由美国政府资助的一个非盈利研发机构,向美国政府提供系统工程、研究开发和信息技术的支撑。并和美国国家标准与技术研究所 (NIST) 标准化组织合作制定相关安全标准,比如漏洞缺陷 CVE、CWE 编号规则以及威胁情报格式 STIX。
MITRE ATT&CK 框架内系统性的收集整合了整个攻击过程完整生命周期的攻击手法的知识库,并且这些攻击手法均来自于对真实安全事件的洞察。该框架把攻击者所采用的 TTP (战术Tactics、技术Techniques、过程Procedures) 系统性地组织起来。在每个战术项内又包含实现该战术目的的各种已知的攻击技术,同时在每项技术中详细描述了运用该技术的具体步骤和流程。
ATT&CK 模型是在洛克希德-马丁公司提出的 Kill Chain 模型的基础上,构建了一套更细粒度、更易共享的知识模型和框架。现在经过几年的发展,整个矩阵内容变得丰富,被拆分为 PRE-ATT&CK 和 ATT&CK for Enterprise,其中 PRE-ATT&CK 覆盖了 Kill Chain 模型的前两个阶段,包含了与攻击者尝试利用特定目标网络或系统漏洞进行相关操作有关的战术和技术。ATT&CK for Enterprise 覆盖了 Kill Chain 的后五个阶段。
ATT&CK for Enterprise 将网络安全事件划分为 12 个阶段,分别是初始访问阶段、执行阶段、持久化阶段、提权阶段、防御规避阶段、凭证访问阶段、发现阶段、横向移动阶段、采集阶段、命令与控制阶段、渗出阶段和影响阶段。
攻击手法和各阶段的映射关系如下图所示:
02. ATT&CK的能力
ATT&CK 知识库被用作在政府以及网络安全产品和安全服务中开发特定威胁模型和方法的基础。同时也可用来检测 EDR 产品是否具备侦测 APT 的能力。现在主要被应用在模拟攻击、评估和提高防御能力、威胁情报提取和建模、威胁评估和分析四大方向上。
1、模拟攻击:基于ATT&CK进行红蓝攻防演练,进行红蓝军建设 ;
2、检测分析:基于具体的 “技术”,有效增强检测能力,用于甲方安全建设;
3、威胁情报:使用 ATT&CK 框架来识别攻击组织,用于安全情报建设;
4、评估改进:将解决方案映射到 ATT&CK 威胁模型,发现并弥补差距,用于评估安全能力。
ATT&CK 框架内整合的知识库为安全行业提供了一个标准,对已知的 TTPs 进行收集,促进安全产品的优化改进。本文将从 TTPs 的检测、分析提出关于 ATT&CK 框架在提升主机 EDR 检测能力的探索和思考。
03. ATT&CK落地环境
本文将要探讨的是 ATT&CK 框架在终端安全产品的落地和应用。ATT&CK 的出现为终端安全产品的检测能力提供了一个明确的,可衡量,可落地的标准,改变防守方以往对于入侵检测常常会陷入不可知和不确定的状态中,有效的弥补自己的短板,通过检测攻击的技术,映射到 ATT&CK 的战术,清晰的了解攻击者所处攻击阶段。
另外如果能让终端安全产品具有针对 TTP 的检测能力,无疑能增强安全产品的核心检测能力,提高攻击检测的覆盖度和自动处置的精确度,避免被攻击者通过一些简单的变形绕过检测,因为针对 TTP 进行检测,意味着我们是在根据攻击者的行为进行检测。如果攻击者想要躲避检测就需要改变他们的行为,这需要研究一些新的技术和攻击手段,这意味着更高的难度和付出更大的成本。
而所有的攻击检测都是基于数据源和策略的特征匹配,我们如果需要检测某个攻击技术,首先需要获取到这项技术所对应的数据,这些数据就是当攻击者执行某项技术攻击主机或网络后,在主机或网络设备上留下的蛛丝马迹,他们所呈现的形式往往是各种日志,可能是系统或应用内置的日志,也可能是因为安全需要而特意录制的日志数据。在 MITRE ATT&CK 的每项技术描述中都有对应于该技术的数据源信息,它告诉我们可以从哪些类型的数据中找到攻击技术实施后所留下的痕迹。
04. 数据分类
通过在 STIX 2.0 GitHub 存储库中,调用与 ATT&CK 对象和属性映射的 STIX 对象和属性,对数据源进行分析统计,共有 59 种。
下图是通过对每个数据源能检测的技术数量进行统计,并获取检测数量前十的数据源排行。
05. 技术选择
除了检测数据源的获取,针对不同技术点的检测也有难易程度之分。场景复现时,有些只需要执行系统命令,公开工具,而有些是需要特制、专用工具,检测从常见命令程序监控,到深入系统内核调用,进程上下文监控。
(检测攻击技术的难易表)
以及同一个工具不同的命令、不同形式的使用,可映射不同攻击阶段的不同技术,检测的技术点也是不一样的。以下为分析mimikatz工具映射的TTP。
Sysmon
01. Sysmon介绍
Sysmon 是微软的一款免费的轻量级系统监控工具,最开始是由 Sysinternals 开发的,后来 Sysinternals 被微软收购,现在属于 Sysinternals 系列工具(带有微软代码签名)。它通过系统服务和驱动程序实现记录进程创建,网络连接以及文件创建时间更改的详细信息,并把相关的信息写入并展示在 windows 的日志事件里。经常有安全人员使用这款工具去记录并分析系统进程的活动来识别恶意或者异常活动。
Sysmon 安装后分为用户态系统服务,驱动两部分,用户态通过 ETW (Event Tracing for Windows) 实现对网络数据记录,通过 EventLog 对驱动返回的数据进行解析,驱动部分则通过进、线程,模块的回调函数收集进程相关的信息,通过 Minifilter 文件过滤驱动和注册表回调函数记录访问文件、注册表的数据。
02. 选择理由
从功能上来讲,Sysmon 一旦安装在系统上,在驻留系统期间,可以监视系统活动并将其记录到 Windows 事件日志中。与一般检测工具相比,Sysmon 可以执行系统活动深度监视,并记录高级攻击的高可信度指标,是一款优秀的 HIDS、EDR 的主机入侵检测引擎。
稳定性方面超过大部分自研的驱动,功能完善,对性能影响较小,虽然功能强大但却有很多监控盲区。若加以自研 Agent 与其配之,便可弥补自身监控盲区及非查询功能等其他需求。
接下来的针对 ATT&CK 的技术检测主要依托 Sysmon 的监控,测试从终端捕获事件数据进行分析。后面我将向您展示如何安装 Sysmon 以及如何使用自定义配置来过滤噪声并获得威胁特征。
03. 搭建环境测试
执行 Sysmon 程序进行安装,用于生成日志监测数据。
模拟攻击环境,编写批处理文件,执行minikatz恶意程序(可用于从内存获取明文密码、黄金票据和万能钥匙等)。
安装winlogbeat产品,帮助我们将Windows事件日志实时流式传输到我们的ELK存储。
打开 winlogbeat.yml 文件编辑其收集的日志类型。在-name:System后添加以一行:-name:Microsoft-windows-sysmon / operational。
进行winlogbeat的配置测试,执行.\winlogbeat.exe -c .\winlogbeat.yml -configtest -e。测试正常后,开启服务,执行start-service winlogbeat。
处理遭受攻击后捕获系统监测数据,可用于二次分析处理。
建议优先考虑您在环境中当前可能看到的内容,而不是仅选择矩阵中的任何技术。例如,如果您的环境中正在运行 Sysmon,并且正在收集 “ProcessCreate” 事件,则可以优先考虑需要将 “Process Monitoring” 或 “Process命令行参数” 作为数据源的技术。
分析过程
在本文中,主要探讨通过利用 minikatz 技术来利用获取 hash 凭证或者传递的过程,这一类技术主要是通过命令行参数检测及程序运行上下文相关调用进行监测,然后通过对其特征进行提取,分析如何有效降低数据噪声,并模拟测试命令执行建立会话进行验证,不断提升工程化实施检测的效果。
以下通过调用系统API接口实时监测系统命令行程序调用接口,通过匹配命令行参数特征,模拟检测恶意攻击。
但是单纯通过匹配命令行参数特征,虽然能够匹配一定的攻击事件,但是也存在被容易绕过的现象。
01. Sysmon工具分析
我们可以借助 Sysmonview 这类工具可以很好的将攻击者的行为,恶意程序执行过程完整呈现出来。有助于行为分析,特征提取。由下图可以分析,mimikatz 执行过程中先后加载了 cryptdll.dll、samlib.dll、hid.dll、WinSCard.dll、vaultcli.dll 等动态链接库,并访问了系统 lsass.exe 进程。
但是被调用的这些dll是不是只有 mimikatz 才会调用,是不是存在噪声,还是无法确定,可能存在某些程序也需要调用这些 dll 文件,还是需要进一步分析确认。
02. Sysmon数据平台分析
面对海量的数据日志,我们需要有个大的数据平台,进行分析,了解主机,进程、文件、网络、驱动、注册表、管道等一系列对象间的关联关系,分析比对,筛选出符合某些攻击技术的能够识别的最小唯一特征。
03. Sysmon规则分析
通过行为分析,初步提取特征后,我们可以通过 Sysmon 规则进行特征匹配。
ATT&CK 技术编号 T1003- 凭证转储可通过以下 Sysmon 规则配置,进行监测。
或者通过yaml规则,进行配置检测。
在系统日志检测,结果成功捕获 minikatz 相关运行信息。
因为使用 bat 脚本来运行 minikatz 程序,所以下图显示命中技术 T1036- 混淆攻击的检测规则。
像 Mimikatz 这样的凭证转储程序可以直接通过本地二进制程序文件执行,也可以通过 Powershell 直接加载到内存中运行,并从内存中读取其他进程的数据。分析查找这类程序时,可进一步分析提取进程请求特定的权限以读取 LSASS 进程的部分,用以检测何时发生凭证转储。辨别 Mimikatz 与其他程序使用的常见访问模式。
常见的 Mimikatz GrantedAccess 模式。
这些特征特定于Mimikatz当前版本的工作方式,因此对于Mimikatz的将来更新和非默认配置都是不可靠的。
EventCode=10
TargetImage=”C:\\WINDOWS\\system32\\lsass.exe”(GrantedAccess=0x1410 OR
GrantedAccess=0x1010 OR
GrantedAccess=0x1438 OR
GrantedAccess=0x143a OR
GrantedAccess=0x1418)CallTrace=”C:\\windows\\SYSTEM32\\ntdll.dll+*|C:\\windows\\System32\\KERNELBASE.dll+20edd|UNKNOWN(*)”
| table _time hostname user SourceImage GrantedAccess
以下是编号 T1003 凭证访问阶段战术凭证转储技术映射更细粒度多个子技术的 Sysmon 配置语句。
以下为系统检测到键盘记录器创建文件的行为,可以通过检测异常行为,提升检测攻击的能力,发现主机侧更多的安全问题。
Sysmonhunter分析
利用 Empire 工具进行模拟测试,Empire 是一款内网渗透测试利器,其跨平台的特性类似于 Metasploit,有丰富的模块和接口,用户可以自行添加模块和功能,是针对 PowerShell 利用较好的平台。
通过对终端监测的数据进行特征匹配处理,并将结果推送到 Elasticsearch 数据库,查看数据的录入情况。
通过分析查看 dll 的调用次数,分析文件是不是存在被正常程序调用的情况。
分析某些 dll 是只被某些程序调用,或是某些操作必须调用的过程,需要逐个分析,判断能够被当成特征工程的一个指标。
通过导入图数据库进行关联分析,蓝色表示程序,红色表示调用过程,黄色表示节点,绿色表示终端编号。
实际应用
结合产品进行检测,通过抽象提炼,完成了适当的分类,将攻击者的行为和具体的检测方式联系起来。通过抽象提炼,形成一个通用检测方法,让产品可以检测单项对抗行为及其目标。
01. 单点测试
- 测试框架应用
Atomic Red Team 是一个简单测试库,每个安全团队都可以执行此测试来测试安全产品的检测能力。该测试库是映射到 MITER ATT&CK 框架的小型、高度可移植的检测测试框架。每个测试旨在映射特定的策略。
以下通过该交互式测试框架,检验 EDR 的检测能力。
任何攻击者进入内网最想要的是窃取尽可能多的凭据。如果他们能用凭证登录其他系统,就没必要在通过研究其他资产尚存的漏洞,进行测试攻击,所以主机凭据获取,历来都是兵家必争之地,不管是渗透测试、红蓝对抗还是护网行动,得凭证者得天下。故以下选取相关凭证获取相关攻击的应用检测。
- 卷影副本操作
vssadmin 用于创建/删除 Windows 驱动器的卷影副本的命令。卷影副本简单理解就是备份,您可以创建卷影副本备份和完全相同的文件副本。例如,以独占方式打开的数据库以及由操作员和系统活动打开的文件都可以通过命令在创建卷影副本过程中备份。可以使用卷影副本将 SAM 文件导出,配合 SYSKEY 利用 mimikatz 等工具获得 NTLM Hash。也可以利用 VSS 卷影副本拷贝 ntds.dit,ntds.dit 是 AD(活动目录)中的数据库文件,包含有关活动目录域中所有对象的所有信息,其中包含所有域用户和计算机帐户的密码哈希值。
以下是产品依据程序 hash 及进程行为分析后的检测情况。
- Mimikatz
mimikatz 是法国人 Gentil Kiwi 编写的一款 windows 平台下的神器,它具备很多功能,其中最亮的功能是直接从 lsass.exe 进程里获取 windows 处于 active 状态账号的明文密码。mimikatz 的功能不仅如此,它还可以提升进程权限,注入进程,读取进程内存,hash 传递等等
以下是产品依据程序 hash 及进程行为分析后的检测情况。
- Procdump
Procdump 是 Windows 工具包里的一款工具,由于有微软的官方签名,所以大部分杀软不会查杀。通过 procdump 导出 lsass.exe 的内存文件,在用 mimikatz.exe 在本地读取内存文件提取密码。
以下是产品依据程序 hash 及进程行为分析后的检测情况。
- Ntdsdump
Ntdsdump 是 NTDS.dit(活动目录数据库)密码快速提取工具,可通过从域控制器上导取的 ntds.dit 文件以及 SYSTEM 文件,离线获取域控制器上所有hash的神器。
以下是产品依据程序 hash 及进程行为分析后的检测情况。
02. 场景测试
勒索检测
模拟执行勒索程序后,通过提取行为特征,hash 比对,匹配特征库,检测异常告警。
最终通过自动分析判定主机正遭受勒索病毒攻击。
持续演进
01. ATT&CK细化子攻击的粒度
虽然 ATT&CK 提供了一套系统的理论指导,但仍然不能解决具体的检测点技术问题,没有描述技术的特定实现的方法。对于某些技术描述还是比较笼统,对于检测安全产品的检测覆盖率还是不够。ATT&CK 的广度问题目前已经基本解决了,往后发展就是不断增加深度,不是一个测试用例就算覆盖一个指标了,而是一组测试用例可以验证一个指标的深度。
近期 ATT&CK 组织为了增强框架结构,开始对整个框架进行调优和重新设计,细化描述攻击技术的粒度,提出了子技术概念。子技术是一种更详细地描述技术的特定实现的方法。后期可以在技术列表中,查看可以执行技术的各种方式。例如凭据转储就是一个很好的例子。
在 “凭据转储” 的技术中,可以执行该操作的方式共计 9 个,例如 Windows SAM 和 “缓存的凭据”。尽管最终结果每次都是相似的,但很多不同的行为都集中在一种技术中。对于子技术,我们将对其进行拆分,并拥有一种顶级的凭证转储技术,其下具有九种子技术,以更详细地介绍这些变化,以了解它们如何以特定方式应用于各个平台。
子技术将从 .001 开始,并随着每个新的子技术递增。例如,访问令牌操纵仍将是 T1134,但是 “令牌操纵/盗窃” 将是 T1134.001,“使用令牌创建进程” T1134.002 等等。
对子技术所需的技术的进行深入分析,导致战术和技术之间归属位置的调整。可能会删减了一些不适合该策略核心定义的技术,例如 “ 隐藏文件” 和 “目录” 不适合 “持久性”,以及一小部分需要弃用的技术,例如 “Hypervisor”,在该系统中,我们发现没有证明的用例概念。以及技术降级到子技术的调整。例如,由于我们添加了 “Pre-OS Boot” 技术,因此将现有的 Bootkit 技术作为其子技术移至其下方。
以下是将旧技术映射到新子技术的对应表。
02. 攻防检测对抗
ATT&CK 在持续更新升级,攻击者也在不断寻找更隐蔽的方法,绕过传统安全工具的检测,因此防御者也不得不改变检测和防御方式。
就像上面我们用于入侵检测的 Sysmon 检测引擎,很多人在安装 Sysmon 的过程中直接使用默认配置,不更改文件名、服务名、驱动名,在攻击者发现主机环境装有 Sysmon 后,通过对现有规则及对环境分析,结合具体情境使用绕过及阻断方式组合技术,可轻松突破 Sysmon 日志记录。所以防御方需要对 Sysmon 进行隐藏,否则将影响对攻击者 TTP 检测,及入侵行为检测。
从战术、技术和过程(TTPs)的攻击层面分析,现在攻击者使用工具,往定制化、模块化、无文件落地发展,可绕过大部分传统的安全防护设备。例如以下工具运行不带任何参数可直接转储 lsass.exe 的内存。
这就需要依托安全厂商投入研究,研究分析得越透彻,攻击者绕过的难度就越高。尤其是针对现有的 TTPs 的研究,研究如何精确匹配攻击事件,我觉得这也是未来的趋势,往精准化检测前行,否则安全分析人员,将被淹没在各种设备海量的告警中,剪不断理还乱,当然这是个持续的过程,在攻防对抗中不断升级,不断演进。
03. 大数据智能平台分析
往更深层次上讲,如果仅仅只为了发现特定的已知攻击行为而进行的检测会是什么样场景?一个新的特征,一个新的告警,一个新签名,一个接一个!是的,这很可能是作为安全分析师在每天工作中所经历的对于威胁的检测分析处理。我们是否想过,通过由几个开源框架组成的生态系统,自研启用高级分析功能来增强威胁检测能力,通过赋能机器学习,构建大数据智能分析平台,进一步发展根据数据做出预测或建议的分析技术,解决检测已知的威胁,通过关联分析,挖掘未知的威胁,提高检测率。
小结
随着 ATT&CK 框架的不断完善和延伸,应用的方向也会更广。就目前阶段,我们认为深入分析 ATT&CK 的 TPPs 能提高主机 EDR 产品对于入侵行为的检测和分析。
ATT&CK 是一个非常庞大的框架,我们将从实战角度出发,从多维度深入研究,不断提高检测的广度和准确率,欢迎对 ATT&CK 感兴趣的安全爱好者和我们一起交流讨论。