红队-蓝队演练
这些演练的特殊形式是红队-蓝队演习,也称为战争游戏,其中两个具有内部知识的团队互相对抗。红队是攻击方,试图访问生产系统或捕获用户数据,蓝队则防御攻击。如果蓝队发现攻击并能够阻止它,蓝队获胜。如果红队能够证明他们已经成功访问了生产系统或捕获了数据,那么红队获胜。
团队构成
与普通的攻击模拟不同,红队-蓝队演习的特别之处在于团队对你的系统具有深入的了解,因此他们更容易找到漏洞。红队-蓝队模拟是所有降低安全风险的努力中最复杂、最深入的攻击(见图13.4):

团队应从不同的组织单元中混合组成。不要仅仅为红队和蓝队各挑选一个团队,团队的组成是游戏成功的关键。
对于红队,执行以下操作:
-
使用来自不同团队的创意工程师,这些工程师已经对安全感兴趣。
-
增加具有经验的安全专家,最好是来自你组织内部,或者寻求外部支持。
对于蓝队,执行以下操作:
-
选择熟悉日志记录、监控和站点可靠性的运维工程师。
-
增加了解你网络安全和身份管理的工程师。
两个团队都应有机会请教专家。如果例如红队需要写一个结构化查询语言(SQL)语句来执行复杂的SQL注入攻击,他们可以从数据库管理员(DBA)团队寻求帮助;或者,当蓝队需要了解某个应用程序的工作原理或需要应用程序记录额外的数据时,可以直接向构建和维护该应用程序的团队请求帮助。
游戏规则
游戏的主要目标是让所有参与者学习——学习如何像攻击者一样思考,学习如何检测和响应事件,学习公司中可以被利用的漏洞。第二个目标是娱乐。就像黑客马拉松一样,这个演习应该是一个团队建设的活动,让所有参与者都觉得有趣。
但是,要在不伤害任何人的情况下成功进行,你需要一些基本的游戏规则。
行为规范和规则
为了使演习成功,你必须制定一些规则和行为规范,参与者必须遵守,如下所述:
-
两个团队不得造成实际伤害。这也意味着红队不应做超过实现其目标所需的事情,且物理攻击应遵循常识(不要骚扰或威胁任何人,不要偷窃同事的钥匙或证件等)。
-
不要暴露被妥协的人员姓名。
-
不得导致付费客户的停机或泄露他们的数据!
-
被妥协的数据必须加密存储并受到保护,不得暴露给真正的攻击者。
-
不得削弱生产系统的安全性,从而使客户面临风险。例如,如果红队能够修改源代码以禁用所有生产系统的身份验证,那么可以在代码中留下注释,并在部署完成后声称胜利。然而,你不能禁用实际客户正在使用的生产系统的身份验证。
这看起来似乎很明显,但如果有竞争性的团队,他们可能会过于投入到游戏中。最好明确说明这些显而易见的事项,并制定一些基本规则。
从哪里开始
我知道很多人认为红队-蓝队演习只适用于成熟度非常高的公司,但我认为红队-蓝队演习是每个公司提升意识、学习和成长的一个很好的方式,尤其是当他们仍在防止入侵,并认为他们的内网是安全的时。如果你的成熟度不高,攻击就会更容易。如果成熟度非常高,攻击则需要更复杂的手段,成功攻击并不容易,而且不会造成真正的伤害。
我更倾向于选择红队-蓝队演习,而不是普通的攻击模拟——它们更有趣,也是更好的学习方式。如果你不知道从哪里开始,可以寻求外部帮助。
如果你在第一次演习中发现了很多问题,而且红队轻松获胜,可能需要考虑更频繁地进行这些演习。如果没有,许多公司每年做一次就很好,但这也要根据你的具体情况来决定。
只需进行第一次演习,后续的演习自然会跟进。