安全演练
定期安全演练是(毫无疑问)最强大、最具成本效益的工具,用于提升项目的信息安全运营成熟度——如果执行得当。遗憾的是,信息安全方面的课程和认证往往侧重于如何实施特定控制措施,或者如何在从头开始时选择一些基线最佳实践。很少或根本没有关注如何测试您已有的措施并对其进行迭代。准备好迎接速成课程。
[注意:明天我们将发布本文的后续文章,其中包含您可以与您的团队一起尝试的几个安全演练示例。] 安全演练?那是什么?安全演练是一种旨在推动一个或多个团队完成在组织或项目中发生真实或疑似信息安全问题时应采取的步骤的演习。例如
-
告诉您的运维团队,托管内部错误跟踪器的服务器由于关键 RAID 控制器故障而经历了数据丢失。让他们使用备用硬件从备份重建服务器,以表明备份是可行的,备用硬件可用,并且该过程是已知且可行的。
-
开始在开发服务器上运行一个原本无害但内存密集型的未经授权的软件。看看需要多长时间才能有人注意到,以及他或她对此采取什么措施。
对于任何规模的项目,安全演练都不是运行信息安全程序的第一步。第一步是制定一套适合项目规模和复杂性的计划或政策。对于一个非常小的、完全志愿的开源项目,这可能很简单,例如“我们的项目经理 $name 代表项目接受风险,我们的信息安全官 $name 在发生疑似安全事件时负责;代码库的完整性将优先考虑,其次是尚未公开的漏洞信息的保密性,第三是服务的可用性。” 对于一个拥有付费员工的更大、更复杂的组织,这通常将从一份主信息安全政策和程序文件开始,并辅以许多其他政策文件。
在任何情况下,第一步是建立角色和责任;第二步是建立操作预期,第三步是测试您的政策、程序和预期是否有效。如果您不进行测试,您就真的不知道它是否有效。
在可预测的时间安排演练并提醒其他人何时进行可以防止员工之间的混乱。明智的做法是从不利用生产系统的低影响演练(稍后会详细介绍)开始,只有在组织的基础设施和人员已经排除了大部分错误后,才转向更高潜在影响的演练。如果像单个服务器上的失控进程这样的小事都会严重影响您的业务,那么最好在计划好的时间与所有人一起找出问题,而不是在节假日凌晨 4 点,那时没有人能联系到知道该怎么做的人。安全演练的全部意义在于提高弹性:提高您的团队处理问题的正常阈值,以及您的系统可以承受的程度。
为什么安全演练很重要?当我应对一个失控的严重安全事件时——也就是说,考虑到组织的资源和安全需求,情况比事件应该发生的要糟糕得多——通常情况下,不止一件事情出了问题。然而,这些事情如何同时出错的根本原因几乎是以下两者之一:组织领导层缺乏对信息安全的兴趣和支持,或者我称之为“臆断致死”的失败模式。
“臆断致死”是指我们根据 supposed 为真的“事实”做出决策,但这些“事实”尚未经过我们测试。例如,假设硬件或软件的行为方式与供应商所说的一样。假设公司里的任何人还记得两年前编写、批准并束之高阁的事件响应计划。假设为贵公司所在行业编写的“最佳实践”没有忽略该行业已经发生变化或贵公司是独一无二的某些方面。假设您的备份按设计方式工作,并且自系统在 18 个月前投入使用以来的 25 次更新中没有出现任何问题。假设您的 VPN 硬件以供应商销售人员坚持的方式故障关闭。
臆断会害死人,而且它是一种阴险的杀手,因为与糟糕的领导不同,它很容易被忽视。我们常常在事情变得非常糟糕之前没有意识到我们的假设——最好让那件事成为模拟攻击而不是真实攻击,只导致模拟后果。
如果做得正确,安全演练将实现以下目标
-
揭示系统和技术控制是否(仍然)按预期工作。
-
确保安全、运维、领导层和其他团队成员步调一致。
-
揭示程序和政策中的漏洞。
-
为您的团队提供在未来可能需要快速和/或在压力下完成的操作的重要实践,特别是灾难恢复和事件响应程序。
-
为您的团队提供压力疫苗。这是 SWAT 团队、武术家、搜救队、消防员、军队等等已经知道的事情,是他们实战演习的重要组成部分:习惯某件事,这样它就不再被视为那么大的压力源。
-
为非安全人员和安全人员提供有价值的安全实操培训。
-
改善使安全改进和事件响应更顺利进行所需的关系。
最重要的是,执行良好的安全演练可以将您的组织从臆断之地带到真正了解您的弱点在哪里、您的资源应该去向何处以及您做对了什么的地方。不要猜测。要知道。
是什么造就了好的安全演练?问什么造就了好的安全演练很像问什么造就了好的武术或搜救演练。如果您只进行一次演练或只进行一种演练,您将无法获得您想要的结果。正确的问题是“是什么造就了一个好的安全演练计划?”
答案是
-
规律性。
-
目的和重点。
-
关注。
-
贯彻执行。
在一个基础设施不多的小型组织中,每季度进行一次演练。范围不必过大。只需确保您定期做一些事情。
在一个拥有一些专用 IT 资源和一些内部基础设施需要照看的中型组织中,每月进行一次演练。这为您提供了足够的时间来精心设计演练,进行彻底的事后分析,并将您学到的知识整合到您的安全运营中。
在拥有复杂 IT 基础设施的大型组织中,安全演练应该几乎是持续不断的,在各个部门内部和部门之间进行,并得到您的安全团队的支持。考虑构建一些基础设施,使演练易于频繁运行。
这些只是粗略的指导方针;动动脑筋,稍作尝试,为您的组织找到合适的间隔。不要害怕在关键人员缺席时进行演练。通常,真正的事件发生在最不方便的时候:当安全官在长途飞行中,当需要的系统管理员生病外出等等。习惯意外情况。
目的和重点很重要如果我列出我能想到的所有安全演练,并且您的组织每个月随机抽取并运行一个,那么您可能会比完全不进行演练要好。但是,为您的组织和基础设施量身定制的演练要有效得多。演练的质量很大程度上取决于其计划。
您在演练什么?每次安全演练可能都在演练人员、系统、政策和程序,或以上某种组合。请注意,我说的是“演练”而不是“测试”。当安全演练用作诊断和培训工具而不是绩效评估时,它们最有效。将安全演练用作人员的绩效指标往往会降低在真实和模拟事件期间的协作质量和主动性。在安全计划最有效的组织中,演练使团队成员对抗演练本身,而不是相互对抗或对抗评估机制。
在安全演练是新事物的组织中,它们通常是广泛的——例如,“我们可以从备份恢复此系统吗?”或“如果我们的密码数据库泄露了,我们该怎么办?” 在实践经验更丰富的组织中,演练通常是广泛的、端到端类型与更具针对性的演练的混合,后者测试特定功能,例如检测、平稳启动或关闭特定系统的能力、对特定攻击的响应等等。
对于我负责的每个项目/组织,我都会保留一份我想通过安全演练测试的事项清单。该清单包含
-
我们争论过的任何问题,即我们拥有的控制是否是“正确的”控制。
-
我们最近(或根本没有)测试过的任何系统或组件。
-
我们认为已关闭的任何已知漏洞。
-
我们尚未有效关闭的任何已知漏洞,我想引起领导层或团队成员的注意。
-
任何看起来像是单点故障的东西——包括人。
-
我们假设我们的团队成员会做的任何行为,但最近没有测试过。
-
“黑天鹅”事件的程序——潜在的灾难性安全事件,但也足够罕见/不太可能发生,以至于我们只有在创建实践时才有处理它们的经验。
-
涉及我们人员流失的角色的程序。
-
我不确定是否清楚谁将执行什么任务或工作的程序。
一旦您选择了您的演练重点,就为它做好准备。除非您的组织从安全角度来看非常成熟,否则这将从制定时间表并通知组织中的每个人开始,然后在演练开始前再次提醒他们。
最简单的安全演练是我们所说的桌面演练。在桌面演练中,所有相关方坐在一起,实时演练一个假设场景,并记录为应对问题将要完成的所有事情。桌面演练是最不具信息量的安全演练类型,因为它们缺乏真实感,但它们也是最容易运行的演练。
桌面安全演练需要
-
演练场景,尽可能详细地编写,并由运行演练的人员充分理解。
-
团队中每个人实时会面的方式:会议室、电话会议、IRC、视频会议——任何最适合您团队的方式。
-
所有与组织对此场景的潜在响应相关的负责人。
-
任何其他将从参与演练中受益的人员。
-
出色的笔记记录。
就是这样。因此,您现在没有理由不在您的小组内至少运行桌面安全演练。
实战演练稍微复杂一些,但它们为您的团队提供了丰富的信息和经验,除了实际发生错误之外,无法以任何其他方式获得。当然,“实战性”有不同的程度。如果您从不太雄心勃勃的方面开始,这是可以接受的——而且通常对您的团队来说最容易——您先提出一个假设,然后实时逐步解决问题,然后逐步进行更深入的演练,在实际系统中引入问题。
实战演练将至少涉及蓝队和红队或白队(可能两者都有)。蓝队是防御者。该团队将在整个演练过程中执行其工作,就像在真实事件中一样。红队是攻击者。该团队会引起引发演练的任何问题,并且在高级对抗性演练中,可能会在整个演练期间继续行动。白队是裁判。它可能会在整个演练过程中提供澄清、观察等等,但不应积极参与(通常)。
实战演练准备工作最重要的部分是设定和沟通演练的边界。考虑以下几点
-
应该通知谁演练正在进行? 在您的组织的信息安全相当成熟之前,这应该是组织内的每个人。一旦实战演练成为您的日常工作的一部分,秘密安排一些演练可能会变得很有趣,只告诉红队和白队的关键成员何时进行,以便获得更真实的响应。然而,突击演练往往在不太擅长运行演练的组织中以糟糕的结果告终,因为如果计划不周,它们可能会适得其反。此外,还要考虑是否通知组织外部的任何人。例如,您可能需要在运行演练之前警告您的数据中心工作人员(如果您是托管),以防止他们在观察到进出您系统的可疑流量时启动安全事件。
-
由于演练,实时服务的多少降级是可以接受的?您将如何确保不超过此限制? 实战演练可能是不可预测的。这很好,因为真正的事件是不可预测的。但是,重要的是要确定演练的范围,使其不超过组织对正常服务中断的容忍度。一旦您在运行演练方面积累了大量经验,您就可以更接近极限,但当您的组织是新手时,请考虑将安全演练限制为在非生产系统和/或演练后易于重新映像的系统上运行。
-
您将如何在演练后清理烂摊子并确保彻底清理干净?
-
您将如何处理安全演练与其他职责之间的冲突? 理想情况下,这里的答案是“我们处理这种规模的真实事件与其他职责之间冲突的方式相同”。然而,在大多数组织中,将其制度化需要付出努力。从较低级别的模拟事件开始(在现实生活中,将精力从其他项目中转移出来可能不可接受),然后逐步升级可能会有所帮助。在几次成功的响应之后,计划模拟一个更关键的事件(最好是在没有人正在扑灭任何真实火灾的情况下),看看您的团队表现如何。如果未将足够的精力转移到演练中,则重要的是指出这一点,以此作为衡量真实演练将如何对待的指标。我的观察是,在演练期间拒绝重新分配精力的经理几乎总是在真实事件期间拒绝重新分配精力(或重新分配超过不足的象征性精力)。
在组建红队时,尽最大努力拉拢过去没有加入过红队或至少最近没有加入过红队的员工。在红队中使用非安全团队人员并定期轮换这些人员可以为您的组织提供令人难以置信的士气提升,因为
-
这很有趣,而且与担任防御者不同。
-
这是一次很好的学习经历。
-
它可以防止人们觉得加入蓝队是一次测试。
-
它可以建立对安全演练成功的投入。
并非红队中的每个人都需要精通技术。许多演练可能具有社会工程学方面的内容,而非技术人员有时也能很好地执行这些演练。
给红队充足的准备时间,但敦促他们对计划演练的性质保密。大多数不全职从事安全工作的白帽(以及许多全职从事安全工作的人!)没有多少恶作剧的经验,因此他们需要时间来熟悉工具和测试技术。随着您的组织进行安全演练的时间越长,这会变得更快、更轻松,因为一旦您熟练了,很可能每次演练都会有一名经验丰富的红队成员参与,以帮助经验较少的人员。
白队并非所有演练都需要白队。但是,如果演练的任何部分是假设性的而不是实时发生的,则需要白队来回答假设中未解释的任何问题。如果被问到演练设计者没有预料到的问题,白队可能不得不即兴发挥!
白队成员通常也在演练中扮演小角色,代表项目外部的实体,例如沮丧的用户或好奇的记者。
蓝队蓝队是所有未明确安排在白队或红队且未明确排除在演练之外的人员。蓝队通常负责对模拟安全事件做出反应,就像对真实事件一样。主要区别在于,除非您有参与您的安全演练的合作伙伴组织,否则在真实事件中发生的任何外部通信在演练期间都将 направлены 给白队。
贯彻执行至关重要的是,每个团队的成员在整个演练过程中记录他们的行动和想法。任何演练最重要的部分是从中学到的东西,如果知识没有被记录下来,整个团队将无法学习。
汇报理想情况下,演练汇报应在演练结束后几个小时内完成。但是,对于时间更长、更复杂的演练,这可能是不可能的。我再怎么强调良好的记录对于确保在汇报前不会遗忘任何重要内容的重要性都不为过。
通常,事件响应负责人(蓝队负责人)负责编写演练报告。但是,我的偏好是要求该人在之后再提交报告,即在所有参与演练的人员都举行会议汇报演练之后,以免影响其他人的回忆。
汇报会议应从头到尾回顾演练过程,让每个参与者都有机会表达想法、意见和观察结果。任何感兴趣的人都应该有机会提问,并且应该做好笔记,以便蓝队事件响应团队负责人可以将任何新的和有趣的内容整合到最终报告中。
报告编写报告听起来可能很无聊,但它是流程的重要组成部分。您刚刚在一个学习演练中投入了大量时间和精力。失去您学到的东西将否定这项投资。重要的是要记录下细节,以便您以后在想要比较类似事件(真实或模拟)或记住某些软件或设备的性能时可以参考它们。同样重要的是要有足够的信息来支持您报告末尾的结论和建议。
如果这不是您组织通常的沟通模式,则报告不必花哨或正式。它们应该包含的是对演练的叙述——谁在那里,发生了什么,时间表是什么——对学到的东西的总结以及关于如何通过技术控制、政策、培训、资源分配或其他方法改进安全的任何建议。
不要束之高阁完成报告不是演练的结束:您的组织要么需要实施演练报告中提出的建议,要么代表您的组织承担风险的人员需要记录哪些建议将不被实施以及原因。
涂抹、冲洗、重复这些演练不是为了训练直到您成功,而是为了训练直到您不会失败。虽然没有哪个安全程序是完美的,但如果您针对高级持续威胁演练训练到接近完美的程度,那么失控的脚本小子就会变得易如反掌。
如果发生真正的失败,则应在六个月内重新运行演练,并稍作修改。这验证了新的培训和控制措施是否已纠正问题,提供了必要的实践,并为团队提供了克服损失的机会,从而提高士气。
提示和技巧以下是一些关于计划、运行和使用安全演练信息的伪随机想法
-
跟踪在演练中学到的知识,并保留演练报告的副本。理想情况下,这些是证明您在改进项目信息安全方面所做努力的成功之处的绝佳素材。在最坏的情况下,当建议未被理睬时,在真实事件发生后将决策者重新引导到这一点,通常可以让他们开始在未来更认真地对待安全问题。
-
玩得开心!愿意将演练视为游戏。鼓励创造力和极限测试。在演练中加入有趣的彩蛋。这就是您在学习和士气方面获得最大回报的方式。
-
愿意适应。如果出现问题,计划的演练不必是演练。转变方向,让每个人都保持警惕。
-
考虑您希望您的团队在真实事件中如何响应,并确保这是您在演练期间鼓励的行为。
-
将每次演练都视为成功,即使结果令人尴尬。如果您的事件响应通常非常顺利,则您的演练不够难。预计大多数演练后都需要对某些内容进行调整。非常重要的是,您的团队成员不要将安全演练视为他们被评分的机会。如果有人表现不佳,您的回应应该是需要更多培训。
-
从小处着手,随着时间的推移逐步增加演练的难度和复杂性。就像举重运动员第一天无法举起 400 磅的重量,或者如果不随着时间的推移增加重量就无法进步一样,如果团队没有受到挑战,就不会变得更好。如果您实际上在学习,那么上个月具有挑战性的内容明年将不再具有挑战性。
-
来自红队、白队和蓝队成员的笔记和汇报讨论将确定其他场景机会。跟踪这些想法,以便在您需要提出场景时随时准备好它们。
-
如果您从当权者那里遇到对安全演练的抵制,请找出您可以邀请哪些有影响力的人加入红队进行演练。不要让他们成为象征性成员;确保他们积极参与并玩得开心。这往往会改变人们对这种做法的看法。
-
不要在所有演练中都过于追求绝对的真实感。真实感是您开始的地方,但如果您愿意偶尔冒险进入不真实的世界,您将学到更多。我参加过的最好的红/蓝队演练是 ICS-CERT 在爱达荷州设施进行的培训的一部分。他们为我们构建了一个非常逼真的游乐场,供我们攻击和防御,然后用一个荒谬的约束条件让我们放手:在任何情况下,您都不能关闭此基础设施来解决其显而易见的危及生命的问题。在现实生活中,没有哪个神志清醒的人会发布这样的法令。然而,由于无法关闭白队如此乐于助人地构建的网络(其安全性类似于老鼠大会后的瑞士奶酪),并在攻击者袭击之前加强它,这使得蓝队(我是其中一员)尝试了我们在现实生活中永远不会做的事情。我发现自己闯入自己的系统以从红队手中夺回它们,使用我以为在 1990 年代就已绝迹的 ARP 欺骗技巧来夺回我内部网络上的 IP 地址,以及各种其他恶作剧。这让我快速思考红队是如何运作的,并促使我向其他蓝队成员教授 OSI 第 2 层操纵的细节,这是许多人没有接触过的。
-
如果您从当权者那里遇到对安全演练的抵制,请找出您可以邀请哪些有影响力的人加入红队进行演练。不要让他们成为象征性成员;确保他们积极参与并玩得开心。这往往会改变人们对这种做法的看法。
-
不要在所有演练中都过于追求绝对的真实感。真实感是您开始的地方,但如果您愿意偶尔冒险进入不真实的世界,您将学到更多。我参加过的最好的红/蓝队演练是 ICS-CERT 在爱达荷州设施进行的培训的一部分。他们为我们构建了一个非常逼真的游乐场,供我们攻击和防御,然后用一个荒谬的约束条件让我们放手:在任何情况下,您都不能关闭此基础设施来解决其显而易见的危及生命的问题。在现实生活中,没有哪个神志清醒的人会发布这样的法令。然而,由于无法关闭白队如此乐于助人地构建的网络(其安全性类似于老鼠大会后的瑞士奶酪),并在攻击者袭击之前加强它,这使得蓝队(我是其中一员)尝试了我们在现实生活中永远不会做的事情。我发现自己闯入自己的系统以从红队手中夺回它们,使用我以为在 1990 年代就已绝迹的 ARP 欺骗技巧来夺回我内部网络上的 IP 地址,以及各种其他恶作剧。这让我快速思考红队是如何运作的,并促使我向其他蓝队成员教授 OSI 第 2 层操纵的细节,这是许多人没有接触过的。
-
如果白队在演练设计方面经验丰富,并且在运行实战演练方面经验丰富,请不要害怕打破我的不干预规则。在前面提到的 ICS-CERT 培训中,白队通过以微妙的方式干扰领先者并帮助陷入困境的团队,让我们保持警惕。如果做得不好,白队的干预会毁掉演练。如果做得好,它可以确保每个人都被推到极限,即使红队和蓝队在技能、资源或团队凝聚力方面存在显着差距。
请继续关注——我们将在明天发布示例安全演练列表。