CTF(C apture T he F lag,夺旗赛)是一种流行的信息安全竞赛形式,起源于1996年的第四届DEFCON。此前,黑客们通常通过互相发起真实攻击来展示技术,而CTF则成为传统黑客之间的网络技术比拼游戏的前身。
CTF竞赛中,参赛团队通过攻防对抗和程序分析等方式,在主办方给出的比赛环境中获取特定格式的字符串或其他内容,并将其提交给主办方以获取分数。这样的内容被称为“Flag”,代表着目标服务器上敏感机密的信息,通常不应对外公开。选手利用目标存在的漏洞获取Flag,这反映了在真实的黑客攻击中窃取机密信息的行为。
Flag通常具有固定格式,如flag{xxxxx}
。有些比赛会替换Flag的关键词,例如在CTFHub平台,Flag格式为ctfhub{xxxxx}
。使用固定格式来推断Flag也是解题的常见方式。
一般来说,CTF以团队为单位进行参赛,每队通常由3-5人组成(具体根据主办方要求决定)。参赛选手需要具备漏洞挖掘能力,并在比赛中与队友相互配合
比赛模式
理论知识
Jeopardy-解题
赛队伍可通过互联网或现场网络参与比赛。他们通过与在线环境互动或离线分析文件,解决网络安全技术挑战以获取相应分数,类似于ACM编程竞赛和信息学奥林匹克赛。比赛排名通常根据总分和完成所用时间来决定。
不同之处在于这种比赛模式通常设有“一血”、“二血”和“三血”,即最先完成的前三支队伍会额外获得分数。这不仅是对首个解答题目的队伍进行奖励,也间接展示了团队能力。
另一种常见的计分规则是为每道题设定初始分数,根据成功解答的队伍数量逐渐降低该题分值。也就是说,解答人数越多,该题分值就越低,直至降至一个保底分值为止。这通常称为动态积分。
题目类型主要包括五个类别:Web网络攻防、RE逆向工程、Pwn二进制漏洞利用、Crypto密码攻击以及Misc安全杂项。某些比赛可能根据需要扩展题目类型。
AwD-攻防模式
Attack with Defense (AwD)是攻防模式(Attack with Defense)CTF赛制的全称。在这种赛制下,参赛队伍连接到同一个网络空间。主办方会提前为每支参赛队分配要防守的主机,这些主机被称为GameBox。每支队伍的GameBox配置和漏洞完全一致。选手需要保护自己的GameBox不受攻击,并同时发现漏洞并攻击对手的服务来获取分数。在AwD中,主办方会定时运行名为Checker的程序来检测选手的GameBox运行状态。如果检测到异常状态,该GameBox将被判定宕机,并依据规则扣除一定分数。攻防模式CTF赛制通过实时得分反映比赛情况,最终胜负也直接根据得分决定,这种赛制具有竞争激烈、观赏性强和高度透明的特点。在这种赛制中,不仅考验参赛队员的智力和技术,还考验体力(因为比赛通常持续24至48小时左右),同时也测试团队之间的分工配合与合作。
通常,AwD赛制仅包含Web和Pwn两种类型的题目。每支队伍可能会分配多个GameBox,在比赛过程中,最早的GameBox可能会下线,同时新的GameBox也会上线。
AWP-攻防增强
A ttack D efense P lus(ADP)全称攻防增强模式,在该模式下中,参赛队伍连接到同一个网络空间。主办方会在平台上放置题目,选手需要登录到平台获得题目信息
攻击模式下,平台会给出题目的访问链接,选手按照解题模式做题提交flag即可完成攻击,当完成攻击后, 每轮计算分数时均会计算该题目的攻击得分。
防御模式下,选手需要自行挖掘题目的漏洞,并制作漏洞补丁包上传至平台,之后点击验证。验证时平台会新建一个完全干净的题目环境,使用预置的Exploit进行攻击,若攻击成功当验证通过之后(即已经完成修补),每轮计算分数均会认为该题目已防御。
也就是说,对于每个题目,仅需要攻击成功一次,防御成功一次,该题就可以认为已完成,后续无需进行关注。
ADP通常仅包含Web
及Pwn
两种类型的题目。随着比赛的进行,最早的题目可能会下线,后续也有可能会上线新的题目。
ADP相较于AwD来说,选手无须编写批量攻击脚本,也无需关注题目的环境是否被攻击,是否服务异常等等,要做的只是攻击一次,防御一次,选手可以有更多的时间聚焦于还未完成的题目。从主办方的角度来说,大大减轻了比赛的硬件成本和运维成本。
RHG-自动化[ AI自动化]
R obo H acking G ame(RHG)该利用人工智能或是AI或是自动化攻击程序来全自动的挖掘并利用漏洞,考验选手对于漏洞理解
以及工程化
能力。比赛开始前(一般为1-4周左右)主办方会给出测试环境以及相关接口文档。选手需要编写自动化程序来请求接口获取题目相关信息,该类程序通常称之为bot
,在程序中全自动
访问并挖掘目标漏洞,完成利用漏洞攻击并获取flag的过程。获取到的flag也由程序自动化提交。RHG因为是由bot全自动进行工作,所以比赛开始即可视为结束。剩下的一切全看参赛选手编写的自动化bot的工作情况。
比赛过程中不允许选手对bot进行任何的操作(包括debug/patch等等)。选手仅能看到自己的bot完成了哪些题。目前的得分情况等等。
RW-真实世界
R eal W orld(RW) 首次于2018年长亭科技
主办的RealWorldCTF中出现,该赛制着重考察选手在面对真实的环境下的漏洞挖掘与利用能力。通常RW模式出题也会围绕着能够应用于真实渗透攻击当中的漏洞,一般来说RW常见题型为VM/Docker逃逸、针对浏览器的攻击、针对IoT/Car等设备的攻击,Web类攻击等等 在RW赛制中会有一个Show Time
,当选手认为自己已经可以完成题目时,选手可以在比赛平台上提交展示申请,由工作人员根据申请先后顺序进行展示排期。选手展示之前需要上台并连接相关网络,同时现场大屏会切换至目标的正常页面。选手确认连接并测试OK之后开始计时。一般情况下上台攻击的时间为5分钟
,选手一旦完成攻击现场大屏幕会实时看到攻击的效果,此时裁判会根据效果是否符合题目要求来判定该题是否完成。如5在攻击时间内依然未能看到展示效果则认为本次攻击失败。现如今为了防止选手恶意排期。通常会有一个队伍总展示次数(例如在2019年数字经济云安全公测大赛中每个队伍只允许上台展示30次),选手也需要尽可能保证上台之后攻击的成功率
举个例子。题目要求需要攻击位于比赛网络中的某个网站并将首页替换为包含队伍名称的页面。题目给出该网站的一些信息(源代码/数据库等等),选手经过本地挖掘漏洞之后,提交展示申请,排期到了之后进行上台展示。注意,因为RW模式是以展示效果来作为题目是否完成的准则,所以在RW模式中并不存在Flag
。
KoH-抢占山头
K ing o f H ill(KoH)是近些年新衍生的一种赛制。该赛制有点类似于AwD,但是又和AwD有些不一样。选手面对的是一个黑盒的目标,需要先挖掘漏洞并利用漏洞控制目标。将自己的队伍标识(队伍名称
或是Token
之类)写入到指定文件。随后在该主机上进行加固等操作防止其他队伍攻击,主办方会定期去检查标识文件,根据文件中的队伍标识来判定本回合分数给予哪个队伍。可以看出KoH也是一种对抗极为激烈的赛制,同时考察选手的渗透能力及防御加固能力。
Mix[混合]
混合模式结合了以上多种模式,现如今单一的赛制已经无法满足比赛及选手的参赛需求,所以大部分比赛会同时以多个模式进行比赛。例如参赛队伍通过解题(Jeopardy)可以获取一些初始分数,然后通过攻防对抗(AwD)进行得分增减的零和游戏,最终以得分高低分出胜负。
比赛形式
CTF比赛一般分为线上赛和线下赛。通常来说,线上赛多为初赛
, 线下赛多为决赛
, 但是也不排除直接进行
线上模式
选手通过主办方搭建的比赛平台在线注册,在线做题并提交flag,线上比赛多为解题模式,攻防模式较为少见。通常来说对于长时间未解出的题目,主办方会酌情给出提示(Hint
)来帮助选手做题。
线下模式
选手前往比赛所在地,现场接入比赛网络进行比赛,线下多为AWD模式,近年来随着比赛赛制的不断革新,线下赛也会出现多种模式混合进行,例如结合解题+AWD ,解题+RW 等等
题目类型
在CTF中主要包含以下5个大类的题目,有些比赛会根据自己的侧重点单独添加某个分类,例如移动设备(Mobile)
, 电子取证(Forensics)
等,近年来也会出来混合类型的题目,例如在Web中存在一个二进制程序,需要选手先利用Web的漏洞获取到二进制程序,之后通过逆向或是Pwn等方式获得最终flag
Web
Web类题目大部分情况下和==网、Web、HTTP==等相关技能有关。主要考察选手对于Web攻防的一些知识技巧。诸如SQL注入
、XSS
、代码执行
、代码审计
等等都是很常见的考点。一般情况下Web题目只会给出一个能够访问的URL。部分题目会给出附件。
Pwn
Pwn类题目重点考察选手对于二进制漏洞的挖掘和利用能力,其考点也通常在堆栈溢出、格式化漏洞、UAF、Double Free等常见二进制漏洞上。选手需要根据题目中给出的二进制可执行文件进行逆向分析,找出其中的漏洞并进行利用,编写对应的漏洞攻击脚本(Exploit),进而对主办方给出的远程服务器进行攻击并获取flag通常来说Pwn类题目给出的远程服务器信息为nc IP_ADDRESS PORT,例如nc 1.2.3.4 4567这种形式,表示在1.2.3.4这个IP的4567端口上运行了该题目。
Reverse
Re类题目考察选手逆向工程
能力。题目会给出一个可执行二进制文件,有些时候也可能是Android的APK安装包。选手需要逆向给出的程序,分析其程序工作原理。最终根据程序行为等获得flag。
Crypto
Crypto类题目考察选手对密码学
相关知识的了解程度,诸如RSA
、AES
、DES
等都是密码学题目的常客。有些时候也会给出一个加密脚本和密文,根据==加密流程逆推出明文==。
Misc
Misc意为杂项,即不包含在以上分类的题目都会放到这个分类。题目会给出一个附件。选手下载该附件进行分析,最终得出flag。
常见的题型有图片隐写、视频隐写、文档隐写、流量分析、协议分析、游戏、IoT相关等等。五花八门,种类繁多。
0 评论