CTF比赛诞生至今,比赛机制和计分方式经历了多次变化,目前常见的赛制包括解题模式、攻防模式、登顶制、AWDplus、RHG和场景模拟赛等。
1.解题模式
在解题模式(Jeopardy,也称为解题赛)下,参赛队伍(也叫战队)通过互联网或者现场局域网登录比赛平台进行比赛,所有选手需要在规定的时间内解答由主办方精心设计的题目。这种模式与ACM编程竞赛、信息学奥赛类似。解题模式的题目难度分布均匀,可考查网络安全专业的大部分知识点,通常用于线上选拔比赛或个人赛。
这种赛制下的题目类型主要包括Web渗透、软件逆向分析、二进制程序漏洞利用(PWN)、密码学、电子取证、隐写、安全编程、杂项等。
注意,一些人由于对CTF比赛不熟悉,会将CTF比赛特指为解题赛,大家在学习完本书后可不要犯这样的常识性错误。
2.攻防模式
在攻防模式(Attack With Defense, AWD)下,参赛队伍一般在局域网内进行攻击和防守。各个队伍拥有完全相同的题目环境,通常一个环境代表一道题目,一场比赛的题目数量为2~10。参赛队伍可通过SSH等方式连接并维护自己的服务,同时可以通过网络访问其他队伍的题目。
攻防模式下,比赛会分为多轮,每轮统计一次得分情况,每轮比赛时间为2~30min。每个战队通过挖掘网络服务漏洞并成功攻击对手的服务来得分,通过修补自身服务的漏洞进行有效防御来避免丢分。如果服务不正常(例如宕机),也会在每轮比赛中被扣分。这种在每轮中判断服务正常与否的操作被称为Check。每一轮比赛开始后,若有队伍发起攻击,并提交通过攻击获得的其他队伍的flag,就能在本轮中得分。
攻防模式的题型主要有Web渗透和PWN,线下赛或者团体赛通常采用这种模式。
攻防模式可以通过得分实时反映比赛的情况,对选手的技术要求较高,同时考验团队的协作能力。但是,这种模式也存在严重的问题,如果采用了“通用防御”等技术,那么攻击方很难得分,主办方也较难发现,因此这种模式逐渐被淘汰。
3.登顶制
登顶制(King Of the Hill, KOH)是攻防模式的一种变形。在登顶制下,每道题目只有一个公共环境,所有队伍都可以访问这个公共环境。进攻成功的队伍在公共环境的指定目录下创建一个文件,文件内容就是队伍名或者队伍令牌(Token),用来证明身份。攻击成功的队伍可以对公共环境进行维护,以防止其他队伍攻击成功。
登顶制也是按轮计算分数,每一轮开始时会重置整个公共环境。一般而言,第一个攻击成功的队伍会获得这个题目本轮的全部分数,或者根据攻击者占据的时间来获得不同的分数。
4.AWDplus
为了解决攻防模式中“通用防御”技术带来的问题,出现了AWDplus模式(简称AWD+)。在AWDplus模式下,每个队伍都拥有完全独立的题目环境,和其他队伍互不影响。AWDplus模式的本质是静态攻防赛,也可以看作“解题+加固”,参赛队伍无法直接攻击其他队伍,每回合结束后统计分数。
AWDplus赛制的分数包括攻击得分和防御得分两部分。参赛队伍成功利用漏洞获得flag并提交,就会在之后的每一轮获得该题的攻击得分。通过平台上传防御脚本,并由主办方判断防御是否成功,若防御成功,也会在之后的每一轮获得该题的防御得分。
这种赛制避免了“通用防御”技术的干扰,能较好地考查选手的真实攻防能力。
5.RHG
RHG(Robot Hacking Game)比赛源于美国的CGC(Cyber Grand Challenge)大赛,CGC大赛引入国内后改名为RHG比赛。该比赛是利用人工智能(Artif icial Intelligence, AI)或自动化攻击程序来全自动地挖掘并利用漏洞,考验选手对于漏洞的理解以及工程能力。因为程序是全自动运行的,每一轮会自动化利用漏洞并提交flag得分,所以比赛开始即可视为结束,比赛过程中不允许选手进行任何操作。
6.场景模拟赛
为了更加逼真地模拟真实的网络场景,并满足特定行业的网络攻防需求,场景模拟赛应运而生。这种赛制会为参赛选手模拟一个真实的企业网络环境甚至更大的广域网,包括外网、DMZ(Demilitarized Zone,指内外网防火墙之间的区域)、内网以及安全设备等。参赛选手需要利用多种漏洞,从外网逐步攻击进入内网,最后攻击核心设备。这种比赛与实战最为接近,但对参赛选手的技能水平也要求最高。
目前,很多工业互联网安全大赛和工控安全比赛都采用这种赛制。
除了上述赛制外,还有很多其他的赛制。例如,有的比赛会提供真实的场景或者设备,要求参赛选手将挖掘出的漏洞以报告方式提交,这种赛制可以看作场景模拟赛的一种变形。CTF比赛的赛制还有很多,这里我们就不一一列举了。
在本书中,我们主要针对解题模式的常见知识点进行讲解。