0x00 前言
近年来Red Team越来越收到国内外企业的关注,恰逢笔者正在一家大型互联网公司从事Red Team相关的工作和实践,故以此文来简单阐述一下笔者对于Red Team从0到1的一些实践和思考。正所谓“一千个人眼中有一千个哈姆雷特”,此文中仅探讨笔者亲历的Red Team建设工作以及体系思考,观点谨代表个人,读者需酌情参考。
0x01 Red Team是什么
Red Team的概念最早来源于20世纪60年代的美国军方,原文定义如下:
An independent group that challenges an organization to improve its effectiveness by assuming an adversarial role.
翻译过来的大致意思是:一个通过承担对抗性角色来挑战组织以提高其有效性的独立的团体叫做Red Team。
后来,由于信息安全行业与军方的一些相似性,这个概念被引入到了安全行业,现在国际上一般以如下比较通用的定义来描述信息安全行业中的Red Team:
基于情报和目标导向来模拟攻击者对企业实施入侵的专门的安全团队。
由于Red Team和传统的渗透测试在一些攻击手法上有一些类似,二者很容易引起大家的混淆,很多人甚至干脆把他们混为一谈。我们可以从以下几个方面谈谈二者之间的主要区别:
- 方法:前者主要来源于威胁情报,后者则是利用黑客的思维来发起攻击;
- 目标:前者侧重于检测防御能力的弱点以及评估潜在的业务影响(下一节会详细介绍),后者则是在有限的时间内尽可能地发现更多的漏洞;
- 计划:前者比较灵活且无固定时间限制,后者则需要指定目标范围和测试时间;
- 过程:前者注重测试的隐蔽性,尽可能的绕过现有的防御系统,后者一般会提前告知防御团队且设置白名单例外,无需隐藏测试行为。
0x02 Red Team的目标
既然已经知道了Red Team的定义,就需要进一步了解一下Red Team的目标,要知道Red Team并不是为了攻击而攻击。我们经常会看到一种比较常见的观点是认为Red Team的目标是站在攻击者的角度来模拟真实入侵者攻击企业从而识别企业的防御弱点。笔者认为这个观点并不完整,也因太过笼统不足以清晰地表述Red Team的目标。其实可以结合前一节中的定义,来细化Red Team目标,具体包含下面几个部分:
- 学习和利用已知真实攻击者的TTPs来用于攻击:因为Red Team是以情报和目标为导向的,因此我们需要通过威胁情报来了解已知真实攻击者的攻击目标和意图,以及通过ATT&CK和APT组织的分析报告来学习真实攻击者攻击不同行业的TTPs,这样有利于我们有针对性地模拟真实攻击者来攻击目标企业;
- 评估现有防御能力的有效性以及识别防御体系的弱点并提出具体的应对方案:这是Red Team最为人所知的目标之一,让Blue Team通过已发现的不足来强化防御能力和改进流程,并最终提高真实攻击者的攻击成本;
- 利用真实有效的模拟攻击来评估因为安全问题所造成的潜在的业务影响:这一点通常很容易被忽略,通过Red Team我们可以为企业管理者提供有效的数据来量化和衡量安全投入的ROI。
0x03 谁需要Red Team
Red Team听起来似乎价值很大,那么是不是所有企业都需要Red Team呢?答案是否定的。事实上,Red Team是建构在有相对健全或者成熟的防御体系之上的,这一点从上一节谈到的目标中有很好地体现。一般来说,一个企业只有拥有了基本的防御和检测的能力,并需要持续检验和改进这种能力时,Red Team才是一个非常不错的选择。如果一个企业连基本的入侵检测能力都没有健全,这种时候搞Red Team就好比空中楼阁,也没有实际的价值和好处。
0x04 Red Team如何工作
本节我将尝试从基本构成,工作流程,协作配合几个角度来谈谈Red Team如何在企业落地实现。
基本构成
在开始组建Red Team时,以下几个部分是不可或缺的基本构成,有了这些基础我们才能开展后续的Red Team工作。
知识储备
为了更好地模拟已知真实攻击者来实施攻击,一般情况下,我们可以通过威胁情报报告,ATT&CK, APT组织分析报告等来积累和学习这些真实攻击者的TTPs。其中一种流行的方法是,以ATT&CK Matrix和APT组织为参考,对具体的攻击技术细节进行分析和总结。
- ATT&CK APT组织TTPs总结:https://attack.mitre.org/groups/
- ATT&CK全平台攻击技术总结:https://attack.mitre.org/matrices/enterprise/
- 真实APT组织分析报告汇总:https://github.com/CyberMonitor/APT_CyberCriminal_Campagin_Collections
基础架构
工欲善其事,必先利其器。一次成功的Red Team活动是离不开强有力的基础架构的支持的,我们一般按照Red Team的攻击流程至少需要以下几类系统或工具:
- 信息收集工具:如OSINT(Maltego,Shodan,Censys,Google Dorks,Github,SNS等),企业邮箱和域名采集工具(The Harvester等),漏洞扫描器等;
- Payload生成工具:如Cobalt Strike,Metasploit,Empire,DotNetToJScript,SharpShooter,CACTUSTORCH,macro_pack等等;
- C2架构:包括钓鱼与payload分发系统,基于各种协议(DNS,HTTP,ICMP)或者外部系统(Domain Fronting,Github,SNS等)的short-haul和long-haul C2,如:
- https://github.com/bluscreenofjeff/Red-Team-Infrastructure-Wiki
- https://github.com/0x09AL/DropboxC2C
- https://github.com/PaulSec/twittor
- https://github.com/maldevel/gdog
- https://github.com/byt3bl33d3r/gcat
- https://github.com/Arno0x/DBC2
- https://github.com/iagox86/dnscat2
- https://github.com/Ne0nd0g/merlin
- 密码破解系统:包括各种常见弱口令,密码字典,密码规则,密码破解工具(如:HashCat,John the Ripper等):
技术研究能力
技术研究能力是Red Team的核心能力,Red Team成员需要具备对已知攻击技术的运用能力,以及新型攻击技术的研究能力。这种能力的培养,可以参照本文后面章节(Red Team的成长与提高)的内容。
工作流程
Red Team的每次攻击都需要有严密的计划,这是发起一次成功的Red Team活动的强力保证。一般我们会按照不同目的将Red Team工作流程分为:
- 全阶段攻击模拟
- 分阶段攻击模拟
全阶段攻击模拟主要是模拟一个完整的入侵过程(包括如下)。
- 侦查范围
- 定位目标
- 设计攻击方案
- 实施攻击
- 达成目的
这类活动,通常是模拟真实的入侵者所采取的所有步骤(如:APT29, APT32等),目的是为了检测当前防御体系是否具有针对某一些特定攻击组织的入侵检测能力,比如APT32就运用了下列技术手段:
- T1193 – APT32 sends emails to victims with a malicious executable disguised as a document or spreadsheet displaying a fake icon. (Spearphishing Attachment)
- T1086 – APT32 has used PowerShell-based tools and shellcode loaders for execution. (PowerShell)
- T1094 – APT32 uses Cobalt Strike’s malleable C2 functionality to blend in with network traffic. (Custom Command and Control Protocol)
- T1068 – APT32 has used CVE-2016-7255 to escalate privileges. (Exploitation for Privilege Escalation)
- T1050 – APT32 creates a Windows service to establish persistence. (New Service)
- T1053 – APT32 has used scheduled tasks to persist on victim systems. (Scheduled Task)
- T1078 – APT32 has used legitimate local admin account credentials. (Valid Accounts)
有了这些TTPs,我们就可以设计具体的攻击方案(包括如下部分),接着实施攻击。
- 目标:在有限的范围内模拟APT32组织的攻击,偷取目标数据
- 成功标准:所有以上选择的APT32组织使用的TTPs可以在目标机器上正常执行,目标数据被顺利偷取
- 关联团队:威胁情报,威胁分析,Blue Team
- 攻击计划:每一个被选择的TTP对应的具体实施步骤和时间线
- 报告:生成攻击报告以及相应的检测方案
分阶段攻击模拟主要是模拟某个攻击组织所使用的某一个或者某几个具体的TTPs,目的是为了检验当前防御体系能否检测或者阻断某一种或者几种特定的攻击技术,比如检测利用T1075 – Pass the Hash的横向移动技术等。这类活动,通常其工作流程不会像前者那么复杂,一般只需要在特点的目标上做特定的测试,可以设计一个类似的简单工作方案:
- 目标:测试T1075 – Pass the Hash的横向移动技术
- 成功标准:所选择的TTPs可以在目标机器上正常执行
- 关联团队:威胁情报,威胁分析,Blue Team
- 攻击计划:每一个被选择的TTP对应的具体实施步骤和时间线
- 报告:生成攻击报告以及相应的检测方案
协作配合
Red Team所有的攻击结果,都需要以报告的形式输出给其他团队(如:威胁情报,威胁分析,应急响应,漏洞管理,安全风险,业务团队等)从而帮助Blue Team强化防御能力和改进流程,帮助业务团队理解因为安全问题所造成的潜在的业务影响,帮助管理团队量化和衡量安全投入。更多相关内容,可参考笔者之前的文章《谈一谈如何建设体系化的安全运营中心(SOC)》。
0x05 Red Team的量化和考核
已知TTPs的覆盖率
在前面章节中我们提到过Red Team的知识储备,可以分阶段对现有的已知TTPs (威胁情报, APT groups, ATT&CK)做一个整体梳理,比如按照APT组织和行业威胁指数来确定当前已知TTPs的优先级。打个比方,当前公司所在的行业为金融行业,分析当前有哪些APT组织的目标是金融行业,这些APT组织使用了哪些TTPs,将其整理出来,按照自然年,季度,月来制定覆盖率,再按照相应的时间区间来考核当前的覆盖率是否达标。
检测率/检测时间/检测阶段
按照已制定的覆盖率计算出自然年,季度,月需要进行的Red Team的次数,并制定出相应的指标:
- 检测率 (被Blue Team检测到的次数/相应时间区间总的Red Team活动的次数,比率越低越好)
- 检测时间 (单次Red Team活动从开始实施攻击到被Blue Team检测到当前行为的时间,时间越长越好)
- 检测阶段 (单次Red Team活动从开始实施攻击到被Blue Team检测到当前行为的阶段,比如:持久化阶段或者横向移动阶段,阶段越靠后越好)
阻断率/阻断时间/阻断阶段
与检测率/检测时间/检测阶段类似,制定出相应的指标:
- 阻断率 (被Blue Team阻断的次数/相应时间区间总的Red Team活动的次数,比率越低越好)
- 阻断时间 (单次Red Team活动从开始实施攻击到被Blue Team阻断当前行为的时间,时间越长越好)
- 阻断阶段 (单次Red Team活动从开始实施攻击到被Blue Team阻断当前行为的阶段,比如:持久化阶段或者横向移动阶段,阶段越靠后越好)