{"id":18449090,"url":"https://github.com/shellphish/ictf-framework","last_synced_at":"2025-04-05T16:07:16.459Z","repository":{"id":19821866,"uuid":"23082724","full_name":"shellphish/ictf-framework","owner":"shellphish","description":"The iCTF Framework, presented by Shellphish!","archived":false,"fork":false,"pushed_at":"2023-02-15T16:07:59.000Z","size":22187,"stargazers_count":330,"open_issues_count":21,"forks_count":90,"subscribers_count":48,"default_branch":"master","last_synced_at":"2024-04-14T20:05:42.535Z","etag":null,"topics":["aws","cloud","ctf","hacking"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shellphish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-08-18T18:58:00.000Z","updated_at":"2024-03-10T16:56:33.000Z","dependencies_parsed_at":"2023-02-17T13:15:54.217Z","dependency_job_id":null,"html_url":"https://github.com/shellphish/ictf-framework","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellphish%2Fictf-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellphish%2Fictf-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellphish%2Fictf-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shellphish%2Fictf-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shellphish","download_url":"https://codeload.github.com/shellphish/ictf-framework/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361687,"owners_count":20926643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","cloud","ctf","hacking"],"created_at":"2024-11-06T07:18:27.402Z","updated_at":"2025-04-05T16:07:16.418Z","avatar_url":"https://github.com/shellphish.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The iCTF Framework 3.0\n\nThis is the framework that [Shellphish](http://www.shellphish.net) uses to host the [iCTF](http://ictf.cs.ucsb.edu).\n\nThe iCTF Framework is described in a [paper](https://www.usenix.org/conference/3gse14/summit-program/presentation/vigna) presented at the Usenix 3GSE workshop in 2014. \n\nWe released this in the hope that it allows educators and trainers to host their own A/D CTFs. \nThis framework is free for commercial use, but the support that we can provide is limited.\n\nWe are planning to release more technical documentation regarding each components in the future; as for now you can find instruction on how to create a game [here](https://github.com/shellphish/ictf-framework/wiki/running-a-class-ctf). \n\nIf you have questions, please send an email to ctf-admin@lists.cs.ucsb.edu. \n\n**DISCLAIMER**: This framework is still a work in progress and this release have to be considered a **BETA** version. New pull requests and new issues are welcome :)\n\n## TODOs and known issues\n\n- The codebase needs to be cleaned from old pieces of unused code.\n- Finish to port every component to python 3.\n- Finish to document the various components.\n- Extend the framework to support multiple cloud providers other than AWS.\n- The CTF cannot be run for more than 12 hours because the credentials we use to login to the docker registry will expire after such time and we currently don't have a way to renew them when the game is running.\n\n## Database\n\nThis is the central database that tracks the state of the game. \nIt runs on the Database VM and exposes a RESTful API.  \nNote that this database should not be directly accessed by the teams, which instead should go through the team services component.   \n\n## Gamebot\n\nThe Gamebot is the component responsible for advancing the competition. \nThe competition is divided into ticks. \nAt 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. \nThen, 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. \nThe new scores are stored in the database, so that they can be displayed by the dashboard component. \n\n## Scriptbot\n\nThe scriptbot is responsible for the execution of the scripts scheduled by the gamebot. \nThe scriptbot extracts the scripts scheduled for execution from the central database, and then runs them. \nFor example, the scripts retrieve flags that have been set in the previous tick, or check if the services are up and functional. \n\n## Router\n\nThe router component is responsible for routing the traffic between the teams in the competition. \nThe component implements an OpenVPN service. Each team is given a VM that acts as the router for the team.\nThe traffic among teams needs to be anonymized to prevent teams from distinguishing scriptbot-generate traffic from team traffic.\n\n## Creating a CTF competition\n\nFor more information visit our wiki page about [running a class CTF](https://github.com/shellphish/ictf-framework/wiki/running-a-class-ctf)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellphish%2Fictf-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshellphish%2Fictf-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshellphish%2Fictf-framework/lists"}