这是 Shellphish 用于举办 iCTF 的框架。
iCTF 框架在 2014 年 Usenix 3GSE 研讨会上发表的一篇论文中进行了描述。
我们发布此框架,希望它能帮助教育者和培训人员举办自己的 A/D CTF。 本框架可免费用于商业用途,但我们能提供的支持有限。
我们计划未来发布更多关于各组件的技术文档;目前,你可以在此找到关于如何创建一场比赛的说明。
如有疑问,请发送邮件至 [email protected]。
免责声明:本框架仍在开发中,此版本应视为 BETA 版本。欢迎提交新的 pull request 和 issue :)
这是追踪比赛状态的中央数据库。 它在数据库虚拟机上运行,并暴露 RESTful API。 请注意,比赛队伍不应直接访问此数据库,而应通过队伍服务组件进行访问。
Gamebot 是负责推进比赛的组件。 比赛被划分为多个时间片。 在每个时间片开始时,gamebot 决定 scriptbot 需要执行哪些脚本(例如,设置标志、检索标志或测试服务的脚本),并将这些计划写入中央数据库。 然后,它从数据库中提取上一个时间片的数据(例如,提交的标志和服务检查的状态),并计算分配给每个队伍的点数。 新的分数存储在数据库中,以便仪表盘组件显示。
Scriptbot 负责执行 gamebot 计划好的脚本。 Scriptbot 从中央数据库中提取计划执行的脚本,然后运行它们。 例如,脚本会检索上一个时间片设置的标志,或检查服务是否正常运行。
Router 组件负责路由比赛队伍之间的流量。 该组件实现了 OpenVPN 服务。每个队伍都会被分配一台虚拟机作为其队伍的 router。 队伍间的流量需要匿名化,以防止队伍区分 scriptbot 产生的流量和队伍自身的流量。
更多信息请访问我们的 wiki 页面,了解如何运行一场班级 CTF