CTF(夺旗赛)起源于1996年DEFCON全球黑客大会,是全球范围网络安全圈流行的竞赛形式,DEFCON作为CTF赛制的发源地,是全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯”。
CTF之所以在全球网络安全界流行,是因为该比赛形式兼具趣味性、实用性和教育意义,为网络安全专业人员提供了一种展示黑客技能的方法,同时又能在建设性、安全的环境中学习新概念。成功的CTF赛事对于设计者和参赛者来说都是巨大的挑战,可激发出新颖的攻击路径和创造性场景,并被企业攻防安全专业人员应用到日常工作中。
设计高质量CTF赛事除了技术挑战之外,还需要考虑环境设置、实际竞赛操作、设置引人入胜的游戏所需的创意规划,以及游戏化相关的细节因素,例如评分结构和权重的设置等。
Netskope威胁研究实验室团队首席研究员Jenko Hwong是2023年DEF CON Cloud Village CTF的团队负责人,他表示:“作为一名设计师,我希望CTF具有挑战性和乐趣,同时又具备相关性和实用性。”
Hwong指出,虽然CTF赛事非常流行,但是比赛设计和最佳实践方面的信息却非常匮乏,这导致很多CTF赛事设计者反复“踩坑”。以下,Hwong分享了他设计DEF CON CTF赛事的七点经验教训:
一、讲好故事是关键
Hwong表示,为了增加CTF赛事的趣味性和吸引力,DEF CON Cloud Village团队花大力气编写引人入胜且有趣的故事情节。这里的“故事”可以看作是一个内置了现实的网络安全场景的电影剧本。这次DEF CON CTF活动他们选择了“矮人”主题,趣味性十足。但重要的不仅是编写故事情节,故事中融入的技术挑战也很重要。
“在妖精和矮人的故事场景中,作为设计者,你需要提出安全专业人员可能遇到的合理场景,包括潜在的攻击路径和合理的防御,”Hwong指出:“作为CTF设计师,编故事的能力越强,CTF赛事就越有趣,对参赛者的吸引力就越大。”
二、采用软件开发方法设计赛题技术元素
Hwong建议,CTF设计者应该采用软件开发方法来设计赛题的技术元素。
“你必须考虑设计、实施和测试,”Hwong解释说,他和他的团队经历了惨痛的教训才领悟,在一个复杂的,由众多参与者用各种方法操纵的CTF环境中进行测试是一个巨大的挑战。
“(比赛前)我们没能完成阴性测试和可行性检查工作,作为主要设计者,我没有指导测试,负有主要责任,”Hwong说:“部分原因是我们没有足够的时间进行测试,所以我在比赛正在进行时锁定了一些环境,避免比赛过于容易(找到漏洞)。
Hwong学到的重要教训之一是,CTF设计人员需要将软件开发的严谨性带到CTF环境测试和可行性工作的整个流程中。
三、操作严谨性也很重要
严谨的软件开发并不是唯一重要的技术能力,运行CTF赛事的工作人员也需要严格遵守操作要求。
“我们有一些出色的人员来运行服务器、AWS帐户以及Google和Azure帐户,并确保一切保持运行,并且我们能监控一切,”Hwong说:“所有这些问题都必须得到处理。如果你忽视它,就可能意味着失败、破坏,或性能问题。”
Hwong遇到的运营问题之一是参赛者和赛事平台间的一些冲突,因为比赛环境受到限制,无法为AWS、Google和Azure上的每个参与者创建独立的环境。随着CTF比赛的推进,Hwong和他的团队重新调整了政策,为参与者提供真正隔离的环境,避免互相干扰。
Hwong指出,在运营方面,CTF设计者还必须积极促进组织者和参赛者之间的持续沟通。
四、难度分级和评分系统
Hwong警告说,CTF组织者往往会低估赛题难度级别设定及开发公平评分系统的困难程度。在实际比赛中,Hwong的团队设计的一些看似简单的关卡实际上难度很大,而一些看上去很难的赛题的成功完成者数量却比预期得多。
CTF的另一个挑战是找出一个有意义的评分系统。基于DEF CON的实操经验,Hwong推荐使用钟形曲线评分系统。还有一个问题是如何规范和平衡大型CTF团队在获得挑战点方面的优势。
“如果一个战队人数较多,挑战任务可以拆分由多个队员并行完成。如果你的团队有10个人,速度就会提高10倍。所以人数绝对是一个优势,”Whong指出:“我们需要某种动态评分来稍微平衡一下。”
一种选择是让挑战连续进行,但其缺点是可能会使CTF过于僵化和线性,并且可能会产生瓶颈或依赖关系,从而破坏一个或多个赛事。Hwong表示,他还希望看到更多的CTF对参与者的技术进行奖励,例如在环境中的秘密行动能力(是否留下太多脚印和指纹)。
五、蓝队更看中CTF的实用性
Hwong认为普通的CTF已经不足以吸引蓝队参与挑战。
“蓝队演习往往是这样的:‘我们的环境有配置错误,存在很多漏洞。你能修复它们吗?’”Hwong说:“蓝队所做的只是测试这些配置是否被更改,或者红队是否可以访问某个公共存储桶。一旦将其离线,就意味着蓝队修复了漏洞并获得积分。
对蓝队来说,实用性更强,更贴近实战的挑战是这样的:红队已经成功进入环境,蓝队必须找到他们并将他们踢出环境。或者,检测到正在发生事件,红队已经获得账号凭据。此场景中,蓝队只有注销攻击者的访问权限才有机会获得最高分。”
Hwong指出,这些CTF场景更难实现,但对于防御者来说更真实,也更有价值。
六、CTF需要更多新鲜组件
Hwong呼吁CTF设计者在CTF赛题中引入更多新漏洞利用和漏洞信息。这是Hwong在第一次参加DEF CON Cloud Village时强调的问题,他决心在明年的CTF大赛中改进这一点。
“这是把CTF变成实用的学习和培训工具的一个关键举措,”Hwong解释道:“我们很乐意使用研究人员的最新成果、甚至包括在当界DEF CON上提出的相关漏洞利用方法和成果。”
七、通过模块化开发提高可复用性
最后,Hwong透露他汲取的最大教训之一是,业界需要找到更多方法来为CTF开发可重用组件,就像软件开发人员为应用程序所做的那样。Hwong梦想建设一个开放的GitHub存储库,其中包含CTF代码,作为开发CTF的基础模块。
“CTF开发模块支持定制,能够省去60%的重复工作,这样CTF组织者和设计者就可以专注于真正的创新工作,例如添加新技术、场景和故事情节。”