ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ATTCK框架入门:从攻击行为描述到安全运营实战拆解

ATTCK框架入门:从攻击行为描述到安全运营实战拆解 聊聊我为什么劝每个安全人都要啃下ATTCK先说个真实感受。我最早接触MITRE ATTCK那会儿说实话是有点抵触的。市面上讲威胁检测的书那么多什么Cyber Kill Chain、钻石模型我自问都还能说上几句。ATTCK这东西打开官网满屏的表格、战术、技术、子技术密密麻麻一层套一层第一眼真的让人头大。但后来被一个甲方朋友拉着做了几次红蓝对抗的复盘我才真正意识到如果早一点把ATTCK吃透之前很多“凭感觉”做的检测规则、日志收集其实都可以做得更有章法。所以这篇文章我写给三类人一类是刚入行、想系统了解ATTCK但不知道怎么下手的一类是做安全运营或蓝队、天天写告警规则但总觉得差点意思的还有一类是管理层或者售前需要快速搞明白ATTCK为什么是现在业界的“通用语言”好在方案和汇报里用得上。这是“超详细学习笔记”系列的第一篇重点放在背景、术语和一个完整的攻击案例拆解上——先把地基打牢后面聊矩阵逐项分析和落地检测才有意义。1. 背景ATTCK到底是怎么从一份表格变成行业标准的1.1 它解决了我最头疼的问题攻击行为“没法好好描述”在没有ATTCK的那几年做安全的人最难受的一点就是“各说各话”。我和一个同事同时看一个安全事件我习惯说“被人打了”他可能说“中了远控”厂商的报告里又写“检测到可疑PowerShell活动”。同一件事三种说法谁都没错但你想把历史事件归类、想看某个攻击者是不是用了同一招根本无从下手。更麻烦的是检测规则也好、日志字段也好每个平台都有自己的命名方式跨平台对齐基本靠吼。MITRE ATTCK做的事情说白了就是建立了一张“攻击行为字典”。它的全称是Adversarial Tactics, Techniques, and Common Knowledge——注意最后这个词Common Knowledge它从一开始就不是凭空捏造的一套理论而是从真实的、公开的攻击事件和红队报告中抽象出来的经验知识。攻击者做了什么、怎么做的、在哪个阶段做的全部被拆成标准化的条目放进一张不断更新的表里。我个人的理解这就像给“感冒”“发烧”“咳嗽”这些症状起了标准的医学名词。大家看病时说的症状可能五花八门但一旦对应到标准术语医生之间、医院之间沟通就顺畅了历史病例也能用来做研究了。ATTCK在安全圈扮演的就是这个角色。1.2 从2013年的一个内部项目到14个战术的巨型知识库ATTCK不是一步到位的。它最早可以追溯到2013年MITRE内部的一个研究项目主要目标是梳理APT攻击中那些“既常见又容易检测失败”的技术手法。到2015年第一版ATTCK正式对外发布当时内容还很“朴素”主要聚焦Windows环境战术就是我们现在熟悉的初始访问、执行、持久化、权限提升、防御绕过、凭据访问、横向移动、收集、外带、命令与控制这几个。后来的演进基本是跟着攻防实战走的。2017年左右加入了macOS和Linux因为大家发现攻击者早就跨平台了光看Windows会有大片盲区2018年发布了ATTCK for Enterprise的更新版本同时把移动端的框架也独立出来再后来2020年前后增加了ICS工业控制系统框架专门覆盖工控环境里的攻击行为。版本号也从v1一路升到v14、v15现在矩阵里已经有14个战术、几百项技术和上千条子技术。我觉得这里面最值得学习的不是某个具体技术条目而是MITRE维护这个框架的方法论它从不闭门造车每一条技术和子技术的背后都挂着真实的APT组织案例和软件工具参考。打开某一条技术你能看到“这是谁用的、有没有公开报告佐证”。这种“从实战中来到实战中去”的循环才是ATTCK真正值钱的地方。1.3 为什么Cyber Kill Chain推不倒ATTCK很多初学者会有个疑问Lockheed Martin的Cyber Kill Chain不是更早吗为什么现在讨论热度明显被ATTCK盖过了我举个例子你就明白了。Cyber Kill Chain更像一条流水线侦察—武器化—投递—利用—安装—指挥—达成目标。它给你的是“攻击分了七个阶段”的宏观视角挺好用但问题是颗粒度太粗。你在“安装”这个阶段到底做了什么是写注册表、创建计划任务还是替换服务Kill Chain不关心它只告诉你在哪个阶段。ATTCK的思路不一样它在战术之上加了一层技术把“攻击者在某个阶段可能采用的具体方法”也列了出来。战术是“为什么做这件事”技术是“具体怎么操作”子技术是“这个手法的某种变体”。有了这层颗粒度你写检测规则的时候才知道到底该盯什么日志、匹配什么特征。我自己的体验是Kill Chain适合做汇报的框架但真要落到规则和告警上还是得靠ATTCK说话。顺带说一句ATTCK和Kill Chain也不是互斥关系。很多人会把它们叠在一起用用Kill Chain讲攻击故事的宏观推进用ATTCK矩阵标注每个阶段具体的技术点汇报效果非常加分。2. 核心术语把战术、技术、子技术、程序集一次讲透2.1 战术、技术、子技术不是同一层的东西千万别混着用ATTCK矩阵最上面一行是14个战术按攻击者的目标任务来划分侦察Reconnaissance、资源开发Resource Development、初始访问Initial Access、执行Execution、持久化Persistence、权限提升Privilege Escalation、防御绕过Defense Evasion、凭据访问Credential Access、发现Discovery、横向移动Lateral Movement、收集Collection、命令与控制Command and Control、数据外带Exfiltration、影响Impact。我强烈建议所有初学者先把这14个词的英文原文记下来不要只看中文翻译。原因很简单业内交流、查阅资料、看英文报告99%都是直接说英文术语。你自己心里建一个“战术地图”看到任何一个攻击行为第一反应问自己对方做这件事是为了达到哪个战术目的是为了拿到凭据还是为了横向移动还是为了数据外带技术Technique与子技术Sub-technique的区别我用一个生活化的类比来解释。战术是“我想偷一辆车”技术是“我可以撬锁、砸窗、或者偷钥匙”子技术就是“撬锁的时候我是用卡片开还是用铁丝勾”。每种技术都有自己的编号格式是四位数字加字母比如T1059是“命令与脚本解释器”它下面又分出T1059.001PowerShell、T1059.002AppleScript、T1059.003Windows Command Shell等子技术。这里我踩过一个坑很多时候厂商说自己“覆盖了ATTCK T1059”粗看好像很全面但你仔细对着子技术去看可能只覆盖了PowerShell对Bash和cmd的检测基本没有。所以做评估或者选型的时候一定要问清覆盖到子技术级还是只到技术级差距很大。2.2 程序集、攻击组织、活动从“手法”到“人”的桥梁矩阵里除了技术和战术还有两个经常被一起提起的概念软件Software和攻击组织Groups。软件包括攻击者使用的工具、恶意软件和公开的系统工具ATTCK给很多知名恶意软件都编了号比如Mimikatz是S0002Cobalt Strike是S0154。攻击组织则是被安全厂商追踪的APT团体每个也有编号比如APT29是G0016。软件、组织和前面说的技术是什么关系一句话组织在攻击活动中使用软件软件实现了某种技术技术服务于某个战术。这三者之间是多对多的关系——同一款Mimikatz可以被几十个组织使用同一个组织也会用好几种不同的工具。真正让我觉得这套模型厉害的是你把它们串起来以后就能做出“攻击者画像”。比如有次一个客户让我分析一个未知样本我提取出它的行为和某个已知组织惯用的技术组合高度重合再一看它调用的C2域名和某个历史报告里的基础设施有关联基本就敢给结论了。这种“由技到人、由人到组织”的溯源逻辑全靠ATTCK这套标准体系撑着。2.3 数据源、缓解措施、检测规则蓝队也能用它“对齐颗粒度”很多人以为ATTCK只给红队用的这误会大了。矩阵里每一技术条目下面都挂着数据源Data Sources、检测建议Detection、缓解措施Mitigations这几类信息。我把它理解成“红蓝通用说明书”红队看的是“可以怎么做”蓝队看的是“该从哪里发现、用什么手段阻断”。数据源这个概念这几年越来越受重视因为现代检测越来越依赖日志和遥测。ATTCK对每个技术都标了可能产生告警的数据位置比如进程命令行参数、Windows事件日志的特定ID、网络流量的元数据。我自己的习惯是写SIEM告警规则之前先查一遍ATTCK对应技术页面的Data Sources确认自己采集的日志覆盖了哪些能发现该行为的数据源再决定这个规则到底能不能写得出来。没有数据源支撑的检测规则就像戴着口罩说话对方听不清你说了什么你也不知道自己说得糊不糊。2.4 Navigator矩阵视图一张图看懂攻防覆盖面讲完术语必须提一个实用工具——ATTCK Navigator这是个开源的Web应用可以把矩阵变成一张可以随意标色、注释、导出的热力图。蓝队可以用它标注“当前已有的检测覆盖到了哪些技术”一眼就能看出哪里是盲区红队可以用它标注“本次模拟覆盖了哪些路径”展示攻击链的完整度。我第一次用Navigator的时候是有点震撼的。把几百个技术格子按覆盖情况标完色整个矩阵五颜六色的哪里覆盖得好、哪里是一片灰视觉冲击力极强。这份图拿去做汇报比写十页PPT都有说服力。后面有机会我会单独写一篇Navigator的具体用法这里先记住这个名字就行。3. 真实案例拆解一次经典攻击链路在ATTCK眼里长什么样3.1 案例背景假设你是一家公司的安全运营人员光讲概念不落地等于白看。我虚构一个典型的企业内网攻击场景尽量贴近真实事件然后我们一步一个脚印把整个攻击链路翻译成ATTCK语言。这件事网上有很多公开报告做过我这边的写法完全是根据常见的公开攻防案例归纳出来的。假设目标是一家有2000名员工的中型互联网公司办公环境是Windows域环境有基本的EDR和防火墙但没有很成熟的安全运营团队。攻击者的最终目标很俗套也很真实搞到财务部的数据卖钱。时间线大概是三天的样子从第一封钓鱼邮件到数据打包外传。3.2 第一步钓鱼邮件进内网对应战术“初始访问”攻击者选择的方式是鱼叉式钓鱼附件T1566.001附件是一份伪装成发票的Word文档。员工点开后文档里内嵌的恶意宏被启用T1204.002用户执行—恶意文件随后通过PowerShell下载了后续的木马。用ATTCK的语言翻译一下战术是Initial Access技术是T1566 Phishing子技术是T1566.001 Spearphishing Attachment。这里还有第二个技术点利用宏执行代码对应T1204.002 User Execution: Malicious File。值得强调的是初始访问这个战术经常是最难防御的因为它利用的是“人”这个最不可控的环节。我在实际做防护的时候从来没指望靠邮件网关100%拦截钓鱼更有效的思路往往是默认封禁Office宏、限制终端PowerShell的执行策略、对下载文件的进程做行为监控。这些动作分别对应ATTCK里的缓解措施条目你能在对应技术页面里直接查到。3.3 第二步落地、提权、做持久化三个战术几乎同步发生恶意宏执行的PowerShell脚本落地了一个基于Cobalt Strike的木马这里对应T1059.001和S0154。木马跑起来之后攻击者第一件事是提权常见的路子是利用某个已知的Windows本地提权漏洞或者干脆找错误配置的服务。假设他用的是烂大街但依然有效的“打印后台服务漏洞”思路对应T1068 Exploitation for Privilege Escalation。提权同时他也会快速布持久化。最常见的三个手法注册表Run键写入启动项T1547.001、创建计划任务T1053.005、替换或新增自启动服务T1543.003。每个手法在ATTCK里都能查到对应的检测建议比如注册表Run键的写入可以通过Sysmon事件ID 13或Windows事件ID 4657来发现。我在这里想多说一句真实攻防里提权和持久化往往不是等木马进场以后才开始做很多攻击者会把它写进同一个自动化脚本里几秒钟内全部完成。所以你做检测时不要只盯着某一个瞬间的异常而要关注“短时间内一串行为是否有组合意义”。ATTCK的杀伤力恰恰在于单个技术点可能都被安全设备放过了但你把时间轴上连续几个技术点连起来看异常就很明显了。3.4 第三步内网侦察与横向移动ATTCK的“高速公路”阶段拿到一台域内机器的权限之后攻击者进入典型的“内网漫游”剧本。他先用系统内置工具做侦察——查当前用户权限、查网络共享、查域管理员会话对应T1087 Account Discovery、T1135 Network Share Discovery、T1049 System Network Connections Discovery等条目全是“发现”Discovery战术里的常见操作。然后他开始横向移动。最常见的路径是拿到本地管理员密码哈希用Pass-the-HashT1550.002技术去访问其他机器或者用PsExec远程执行命令T1021.002。如果域管密码被复用他甚至有可能直接跳到域控服务器上那就彻底Game Over了。横向移动阶段是我个人认为ATTCK框架价值最大的地方。因为这里的行为辨识度极高——一台普通员工电脑突然向几十台服务器发起SMB连接这在正常业务里几乎不会出现。只要当时把Windows事件ID 4624登录类型3、4688进程创建、5140网络共享访问的日志收全完全可以写出一条有效告警。3.5 第四步凭据访问、数据收集和外带链路终点的三连击最后两步同样经典。攻击者在域控上运行Mimikatz抓取内存中的明文密码和票据对应T1003.001 LSASS Memory。这一步往往会产生非常明显的痕迹——LSASS进程被异常访问、可疑的调试权限请求等老牌EDR基本都能捕到。但麻烦的是很多攻击者会在拿到域控之前就提前通过计划任务把Mimikatz跑完检测窗口极短这也是为什么“预防为主、前置采集日志”特别重要。数据收集阶段他把财务共享服务器上的文件批量打包成压缩文件对应T1560.001 Archive via Utility。外带则通过HTTP/HTTPS通道分片传输避免触发大流量告警对应T1041 Exfiltration Over C2 Channel。到这里整个攻击链路走完用ATTCK去复盘我们得到了一个非常完整的技术组合阶段战术技术/子技术编号关键手法进入内网初始访问T1566.001鱼叉式钓鱼附件执行代码执行T1204.002 / T1059.001恶意宏 / PowerShell提权权限提升T1068漏洞利用提权维持访问持久化T1547.001 / T1053.005Run键 / 计划任务凭据获取凭据访问T1003.001Mimikatz抓LSASS渗透扩大横向移动T1550.002 / T1021.002Pass-the-Hash / PsExec打包装载收集T1560.001压缩打包数据窃取外带T1041C2通道外传这张表就是典型的“攻击路径图”在攻防演练报告中基本是必出现的。3.6 这个案例能给我们什么启发拆完这个案例你再看ATTCK它就不再是一张冰冷的表了。它是一个“攻击行为坐标系”——你有任何一条告警日志都能丢到这个坐标系里找位置你有任何一段攻击描述也都能翻译成这个坐标系里的技术点。我特别想强调的一点是在真实攻防里没有任何攻击者是按矩阵顺序一路走完的他会跳着来会同时做几件事甚至会在某一步失败了重新走一遍。所以ATTCK不是“攻击流程说明书”而是“攻击行为透镜”。你透过它看日志、看告警、看情报能看到以前看不到的层次感。4. 怎么学才能不跑偏给新手的路径和常见误区4.1 我的学习路径建议先宏观、再微观、最后实战很多人打开ATTCK官网第一反应是想把所有技术背下来我可以直接告诉你这既不可能也没必要。我的建议是分三步走。第一步先看宏观。花两三个小时把14个战术的名称、含义、前后关系理清楚。你要能不看任何资料就说出攻击者从初始访问到数据外带大致会经过哪几个阶段。这一步的关键是建立“攻击生命周期”的直觉。第二步再看微观。挑你负责的平台和环境把对应的常用技术挨个点进去看。比如你是Windows蓝队重点看T1059、T1003、T1021、T1547这几个高频主线下挂的子技术和检测建议每天搞定一两个。不需要求全先覆盖“最常见的前20个技术”安全运营的体感就能上一个台阶。第三步就是实战了。用ATTCK Navigator做一份自己环境的覆盖度热力图对照现有日志和规则做差距分析或者参加开源的攻防模拟项目看别人是怎么用ATTCK设计演练场景的。我自己的经验是这个阶段学到的东西比前两步加起来都多因为你会真切地感受到“某条技术没有日志支撑根本检测不了”。4.2 三个新手最容易踩的坑说一下我自己和身边同事都踩过的坑。第一个坑是把ATTCK当漏洞库用。ATTCK里没有CVE编号那种“具体漏洞”它是攻击行为的知识库。你问它“这个系统有什么漏洞”是问不出来的你得问“攻击者在拿到权限后通常会做什么”。想通这一点就不会用错方向。第二个坑是生搬硬套技术编号。我见过有人写检测报告把同一个告警挂了三四个技术编号理由是多写几个显得“覆盖广”。这是很坏的习惯会让后续的统计分析和优先级排序全部失真。一个行为如果确实对应多个技术你要区分是“战术上的多个目的”还是“手法上的多个变体”准确标注比多标注有价值得多。第三个坑是忽视日志采集和标准化。ATTCK里每条检测建议都依赖具体的数据源你日志都没收检测规则写得再漂亮也是纸上谈兵。我强烈建议在写任何规则之前先梳理一遍自己的日志资产用什么工具或系统在采集、保存多久、字段是否完整。这一环不补上ATTCK对你的实际帮助会打对折。4.3 每日精进把框架吃进日常工作的两个方法我自己的一个习惯是每天上班打开威胁情报或安全新闻看到任何一起事件的描述试着用ATTCK语言给它重新“标注”一遍。今天这个组织用了什么钓鱼手法、落的是什么恶意软件、走的什么C2协议对应T几不用翻资料凭自己的记忆先写晚上再看官方报告核对。一个月下来你对技术编号的敏感度会明显提高。另一个方法是和同事一起做“攻击路径演练”。每周花30分钟假想一个攻击目标用ATTCK设计一条攻击链然后互相审对方设计的路径是否合理、检测点在哪里。这种“逼着自己用框架思考”的训练比读十篇分析文章都有用。5. 写在最后ATTCK不是终点而是安全运营的共同语言这篇是系列的第一篇我把最核心的背景、术语和案例拆解都讲了一遍。说句实在话很多人学了ATTCK之后会有一个困惑知道了很多技术但还是不知道该从哪里开始建设。我的答案始终是先别贪多从自己负责的环境里最高频的十个技术做起把日志补齐、把规则写好把热力图上的灰色区域一点点涂上颜色。我个人的体会是ATTCK最打动我的不是它对攻击手法的枚举有多全而是它让安全圈终于有了一种可以冷静对话的通用语言。红队和蓝队可以基于同一张图讨论甲乙方可以用同一套编号对齐需求新人可以通过它快速建立对攻防全貌的认知。这种“语言的统一”才是它从知识库升华为行业标准的根本原因。下一篇文章我计划把ATTCK矩阵的14个战术全部过一遍每个战术挑几个最经典的技术做实战级解读顺带分享几个我压箱底的检测规则写法。如果你有什么特别想了解的战术或技术也欢迎留言告诉我我会优先安排。
返回列表