一、背景
随着数据泄露、勒索病毒等事件的频繁发生,企业管理者们逐渐意识到,仅靠渗透测试或者漏洞扫描工具是没办法保证网络安全的,更不具备评价安全防护、安全运营以及安全响应水平的能力。越来越多的中大型企业选择成立蓝军团队(或红队)作为网络安全部门的常规配置。通过定期或不定期的对抗模拟来发现安全防护盲区,评价自身网络安全防护水平,测试和锻炼安全运营队伍,以及通过制造“事件”来以攻促防。
然而,笔者通过调研与访谈发现,有不少的蓝军队伍并不知道该如何进行蓝军团队的搭建,以及科学地开展蓝军工作。更多的套路还是招具备渗透测试技能人员(如果有些HW经验更佳),然后就是“干就完了”,最终交付些漏洞或权限就算完事,颇有种乱拳打死老师傅的感觉。由于篇幅原因,蓝军的组建暂且不谈,本文我们主要从实战攻防演习、红蓝对抗演练、科学有效开展复盘、量化评估体系建设等4个方面来概要性谈谈蓝军要如何来开展工作,以及如何对攻防双方的工作、能力和产出进行客观评价。
二、实战攻防演习
实战攻防演习起初是一个军事词汇,最早出现在军事领域,是在想定情况下进行的作战指挥和行动的演练,是部队在完成理论学习和基础训练之后实施的,近似实战的综合性训练,是军事训练的高级阶段。网络安全中的敌我实战模拟式的攻防试练借用了军事领域中的词汇,被称作网络实战攻防演习。在网络实战攻防演习过程中,活动的组织方(有时也被称为紫方)会将安全人员分成攻方与防方两种队伍,通过实战化的方式来进行系统的安全评估测试。攻方队伍负责扮演黑客来对目标网络开展进攻,力争获取重要或指定系统权限及数据。而守方则利用现有的网络安全设备以及自身建设起来的安全能力进行防护,力争第一时间发现攻击者,开展阻断、溯源、修复、止损等工作。而组织方同时充当裁判员的角色,通过一系列规则对攻方和守方的工作成果进行打分和排名。在大规模实战攻防演习中,攻击方与防守方可能各自由多支队伍组成,工作目标侧重于衡量被攻击方的整体安全防护、监控和响应能力水平。
我们能从定义上看出,实战攻防演习是建立在企业已建设安全防护能力、落实了安全防护措施、组建了安全运营团队、配置了安全监控手段、制定了应急响应流程基础上的。企业安全防护的方法论永远是“假设建设落实了相关的安全能力,则可以防护或阻止对应的安全风险隐患”,所以蓝军的工作目标总是对防护进行挑战,发现安全能力的不足、制度或流程的缺失、策略落地的不到位等问题,最终通过“以攻促防”,补齐防护盲区和短板,以便提升整体的安全水位。开展企业内部实战攻防演习大体上分为以下几个步骤:
1、确定工作目标
任何蓝军团队的负责人需要明确地知悉一点:蓝军开展工作的目的或目标绝对不是为了体现蓝军有多么厉害,而是能够帮助企业提前黑客发现多少的问题,消除多少的风险隐患。因此,在每次开展实战攻防演习之前,一定要设定好合适的工作目标,绝对不是“干就完了”。
目标的设定可以围绕几个方面:发现安全防护不足以便补齐安全短板提升水位、锻炼安全运营威胁监控与应急响应能力水平、促进安全在业务侧的能力落地和措施执行。不同的工作目标决定了演习方向的不同。譬如笔者所在团队就将演习分成:身份安全、数据安全、应用安全、计算安全、办公网安全、基础设施安全、员工安全意识等不同方向。针对不同方向,在攻防过程中会有所侧重或设定不同的靶标。
2、制定工作计划和排期
在确定完工作目标后,下一步便是制定工作计划和排期。实战攻防演习不单单是攻与防的事情,更多情况下需要业务的配合和参与。
我们参考@aprilwright的信息安全色轮能发现,涉及安全的角色划分达到7个之多。除了我们熟知的“攻”(红色)与“防”(蓝色),还有紫色团队负责攻防演习的组织;黄色团队也就是业务方,负责安全策略和措施的落实,有很多业务团队还有自己的安全官;处于红黄之间的橙色团队,负责促织安全互动和培训教育;处于黄蓝之间的绿色团队,负责通过提升设计、编码、自动化检测来提升安全能力;此外还有白色团队,负责分析安全报告与态势、制定安全策略与规则、进行安全管理动作等工作。当然,对于绝大部分企业来说,不能成立这么多安全团队,不过即便对于单个安全团队来说,上述的角色与分工依然是必不可少的。
也因此,在一次实战攻防演习过程中,要对不同的角色来划分不同的分工,更要考虑各方的排期。譬如对于电商企业来说,通常会在每年的6月份与11月份进行大促,那么很明显在这段时间期间以及之前的临近时间就不是一个好的排期。
3、制定工作规范
蓝军开展工作的底线是:不能对业务造成影响。因此一般要制定比较严苛的工作规范,包括:敏感操作及时报备(譬如有几率引起蓝屏的操作等);禁止开展与演练无关的任何工作;禁止进行拒绝服务类攻击;禁止修改线上配置;禁止批量拖数据;禁止物理破坏性渗透(譬如拉闸断电等)、禁止对供应链提供商开展攻击(黑客常用供应链攻击,但蓝军不行,因为没有授权);禁止运行可传播的病毒程序等。部分情况下,因工作目标的不同可能还会限制蓝军攻击的手段,譬如时间段和时间范围的限制;不允许社工攻击等。
对于防守方来讲,一般来说工作规范较为宽泛,日常如何做监控响应,演习时就如何做就好,当然不能对业务造成影响同样是工作底线,譬如:不允许给沦陷主机断网、不允许有罪推定溯源、不能过度防守(譬如针对靶标限定特定IP登录的临时ACL策略)等。
有些企业的实战攻防演习还会效仿HW制定一定的评分规则,笔者所在企业在前期也曾使用过,不过现在已经通过量化评估模型来替代。因为区分攻击与防守的评分规则更适合在多支攻击队与多支防守队的情况下,对攻击队与攻击队、防守队与防守队之间的能力进行评价,而大部分企业内部的演习都是一支攻击队和一支防守队,此时再设立评分规则,形式大于意义。
4、行动实施与跟进
在学习朱日和演习的相关资料时,里面对蓝军的定义是我很赞同的:蓝军要始终把自己定位在“遇强不能弱,遇弱不过强”的陪练员角色,获胜并非只是依靠先进的装备,而是要模拟实战,让红军找体会,找不足。蓝军越硬,红军被磨砺的就越厉害,上战场杀敌就越能致胜。
从上述点来说,蓝军与红军在演习中是要充满对抗性的。如果蓝军与红蓝在演习中一团和气,那么就达不到磨砺的目的,红蓝双方也会失去目标感和成就感。因此紫色团队在整体演习期间,要能够时刻把握动向,做出调整。通过对双方设定指标等方式,来调节对抗的激烈程度,达成演习目标效果。
5、演习复盘与行动项落实
企业内部实战攻防演习的一块非常大的工作量便是演习复盘与行动项落实。如果一次演习没有落实多少改进或提升的行动项,那么总体来说,这次演习是失败的。
人类的天性就是规避风险和逃避责任。但在复盘这个事情上,一定要客观、实事求是和认真对待,否则演习就变成了一种形式,失去任何意义。复盘很多情况下是衡量企业安全运营的领导是否称职的一把尺子,好的领导会认真研判报告,寻找自身差距与不足,制定切实的可落地的行动项并照此执行;而不称职的领导会尝试解释报告中各项问题的成因:乙方厂家产品能力不行;蓝军没有在规定时间开展;安全运营人手不足不够用;安全规范都有,业务没有执行;资产业务没按流程来,所以安全能力没覆盖……总之,一句就是:不是自己的问题。
企业管理者与安全管理者可以通过复盘的问题暴露和行动项的制定来判断演习质量的好坏。不过管理者切记不能把暴露问题的多少跟绩效的高低进行挂钩,要对复盘持有鼓励的态度,同时不要对复盘过程干预太多,多对比结果、少关注过程。
三、红蓝对抗演练与复盘
有相当多的安全从业人员其实并不能准确分清什么是实战攻防演习,什么是红蓝对抗演练。甚至不少蓝军成员,甚至是蓝军的管理者也不知道。其实这两者的工作形式还是有很大的不同的。
实战攻防演习其实更像是一种一对一的HW模式。与实战攻防演习不同,红蓝对抗演练更侧重于对安全运营能力的检验和锻炼,因此裁判员不是必须的,演练也可以更场景化一些,不追求绝对的真实性,更追求场景的覆盖性,需要提前设定一定的Case,演练中的攻击行为也可以提前告知红军。
在演练前,蓝军通常设计好攻击实例,准备好可供实例运行的环境,与红军共同商定实例运行后安全运营体系该有的响应;在演练中,蓝军在准备好的环境中运行实例,接收安全运营体系或红军的监控响应并记录告警和响应时间;在演练后,比对实例与告警、响应的数量,可计算出安全运营能力分值,通过实例运行时间与告警时间、响应时间差值,可以计算出MTTD 和MTTR。再通过复盘 ,通过问题归因、根因分析、制定方案、落实规划等一系列步骤,最终实现安全防护能力和安全运营水平的提升。
图表 1 红蓝对抗复盘标准流程
红蓝对抗的复盘与实战攻防演习整体上可以采取同一套流程,不过因为更场景化,所以在要求与产出上可以更细致一些。整体流程如下:
1、针对每一个对抗点Case的执行情况进行风险枚举,这个过程不要考虑其他,风险枚举得越多越好;
2、将每一个风险都转化成问题。譬如风险是可以对登录接口进行暴力枚举,那么问题就可以转化为:为什么接口可以被暴力枚举?如何防止接口被暴力枚举?等。将风险转化为问题将有利于解决方案与行动项的形成和制定;
3、根因分析是为了确保每一个问题都问到了实处,避免问题还处于一个中间阶段。如下图所示。
图表 2 复盘问题归因
4、枚举方案主要是根据转化的问题和对根因的分析来制定。需要注意的一点是,枚举方案时先不要考虑方案的可落地性,因为方案是否可落地无非是受技术能力的限制以及投入产出的制约。而技术能力限制有时受到方案枚举人员的个人技术能力水平限制;投入产出的制约有时取决于方案枚举人员的权利和管理层级限制。有可能自己认为不可能的方案,对于其他人来说就是可能,因此尽量枚举方案将有利于下步行动项的形成。
5、方案评估。上面提到枚举方案时先不要考虑方案的可落地性,而在方案评估环节则是要充分评估方案的可落地性,确保每一条经过论证的方案都能得到落地保障;
6、制定规划。根据重要紧急程度将方案分成:重要紧急P0、重要不紧急P1、紧急不重要P2、不重要不紧急P3等4个维度。一般来说,如果划分成P3的方案,除非精力充分,不建议进行实际落实。
7、制定验收标准、验收时间与验收人。编筐编篓,全在收口。演习演练搞得再好,复盘弄得再全面,如果最后行动项没有落地,一切都是无用功。前面也提到复盘过程领导不要过多干预和设定绩效,但针对复盘后的行动项,一定要进行跟进,必要情况下通过设定OKR或者绩效指标的方式来进行跟进,确保提升与改进项能够确切落实。
四、红蓝对抗量化评估体系
渗透测试对于漏洞有一套CVSS评分标准,目前也被业内广泛使用,然而针对红蓝对抗则没有一套公共的标准。很多企业会参照HW的评分标准来对攻击方和防守方进行打分,但这种打分只能对攻击方与攻击方之间,防守方与防守方之间能力进行比较,并不能对攻击方与防守方进行对比衡量。而在仅有一支攻击队伍和一支防守队伍的情况下,问题则更加突出:如果核心系统被突破,那么是说明攻击队伍强,还是说明防守队伍弱呢?如果核心系统没有被突破,那么是攻击队伍弱,还是防守队伍强呢?这是非常难衡量的,业内也没有一套成熟的体系来进行评价。
因此,笔者与所在蓝军团队结合多年网络实战攻防演习以及红蓝对抗经验,参考CVSS以及OWASP风险评级方法,开发了一套针对实战演习场景下的红蓝对抗评分框架Red Teaming Assessment Scoring System (RTASS)。
图表 3 红蓝对抗评分系统
红蓝对抗演练评分系统(RTASS)是一个开放式的,针对红蓝双方对抗式网络实战攻防演练中,攻击方、防守方、业务方以及企业风险进行评分的框架。适用于网络红蓝对抗演练、网络实战攻防演习、红队评估、蓝军评估等通过模拟黑客APT手段对企业开展实网攻击的安全评估场景。用来评估单次网络红蓝对抗或实战演习中的攻防双方能力投入情况,以及涉及业务及所在企业所面临的风险程度。
在目前最新版本中,RTASS通过评估因子形成6个过程分值。过程分值再通过不同组合,形成针对攻击方、防守方、业务方以及企业等不同角色的四项最终分值:攻击能量、防守能量、业务风险和企业风险。
l攻击能量是攻击方在单次演练中做的有效输出,可代表攻防方之于本次演练的水平;
l防守能量是防守方在单次演练中的有效输出,可代表防守方之于本次演练的水平;
l业务风险指业务在安全上暴露的风险程度,可代表参演业务方在本次演练中的安全水平;
l企业风险指企业在安全上暴露的风险程度,可代表企业整体上在本次演练中表现出的安全水平。
RTASS目前采用Apache开源协议,如果只是使用,可以直接访问RTASS在线评分工具 https://jd.army/RTASS/ ,它将实时保持更新自最新的版本。如果想查看所有的评分项与相关说明,或者参与框架标准制定、更改评分因子或算法参数等,可以直接访问GitHub仓库:https://github.com/JDArmy/RTASS,进行协作开发和拉取请求,或下载源码开发和维护自己的版本。
好了,由于篇幅限制,本次跟大家概要性地讲了实战攻防演习、红蓝对抗演练与复盘,以及红蓝对抗量化评估体系等内容。其实在企业蓝军建设上,还有团队建设、目标管理、绩效评定、工作规范制定与落实、保密制度、工作组织与流程、技战策略、武器打造等诸多问题,后续有机会可以跟大家一一交流,感谢补天提供平台,谢谢。
参考资料
原文始发于微信公众号(梦之光芒的电子梦):如何开展蓝军工作与量化评估