ictf framework: provide the ability to run customizable CTF competitions
The iCTF Framework
This is the framework that Shellphish uses to host the iCTF.
The iCTF Framework is described in a paper presented at the Usenix 3GSE workshop in 2014.
This is the central database that tracks the state of the game. It runs on the Database VM and exposes a RESTful API.
Note that this database should not be directly accessed by the teams, which instead should go through the team services component.
The Gamebot is the component responsible for advancing the competition. The competition is divided into ticks. At the beginning of each tick, the gamebot decides which scripts need to be executed by the scriptbot (e.g., scripts to set flags, retrieve flags, or test services) and writes the schedule in the central database. Then, it extracts from the database the data about the previous tick (e.g., flag submitted and the status of service checks) and computes the points to be assigned to each team. The new scores are stored in the database, so that they can be displayed by the dashboard component.
The scriptbot is responsible for the execution of the scripts scheduled by the gamebot. The scriptbot extracts the scripts scheduled for execution from the central database, and then runs them. For example, the scripts retrieve flags that have been set in the previous tick, or check if the services are up and functional.
The router component is responsible for routing the traffic between the teams in the competition. The component implements an OpenVPN service. Each team is given a VM that acts as the router for the team. The traffic among teams needs to be anonymized to prevent teams from distinguishing scriptbot-generate traffic from team traffic.
Copyright (c) 2015-2017, The UCSB SecLab
All rights reserved.