The game server for Capture the Flag information security contests is introduced.It is based on rules proposed by SiBears team from Tomsk State University. Teamsare isolated from each other most of the time and each team should earn the ability to attackanother team. The game server is designed as implementation of Model-View-Controllerpattern with Model being implemented as Object-Relationship Mapping, the Controllerbeing implemented as the set of CGI-scripts for web-server and View - as translation fromXML to XHTML with XSLT technology.
Design and development of capture the flag game server for competitions in information security.pdf Соревнования по защите информации Capture the Flag (CTF) [1] традиционно проводятсяпо следующим правилам. Каждой команде перед началом игры выдается одинаковыйобраз виртуальной машины с какой-либо операционной системой, на которойустановлен определенный набор сервисов, содержащих уязвимости. На эти сервисыв процессе игры жюри высылает некоторую информацию, называемую флагами. Цельигры - захватить флаги противника, используя найденные в сервисах уязвимости, ипри этом защитить свои флаги, устраняя уязвимости в собственных сервисах. Командамначисляются баллы как за защиту собственного флага, так и за успешноеобнаружение чужого. Лучшая и самая простая защита флагов - их удаление, но, поочевидным причинам, такая защита запрещена правилами. Жюри постоянно проверяетсервисы на наличие флагов и снимает очки с команды, если не может получитьк ним доступ. В процессе игры командам предоставляется возможность решать дополнительныезадания, называемые квестами, или давать советы другим командампо увеличению надежности их сервисов, называемые эдвайзори. За это командам такженачисляются очки.В классических правилах первый час игры команды изолированы друг от другамежсетевым экраном. Данное время отводится для настройки оборудования и программ,а также для начального ознакомления с сервисами. Затем жюри предоставляетдоступ командам к подсетям друг друга и начинает отправлять на сервисы флаги. Вовремя игры каждая команда имеет доступ к любому сервису противника.Команда Томского государственного университета SiBears [2] предложила внестиизменения в правила, при которых осуществляется большая связь между всеми аспектамиигры, чем в классических правилах CTF.Целью работы является создание игрового сервера CTF, функционирующего поизмененным правилам: команды большую часть времени изолированы друг от другамежсетевым экраном, которым управляет жюри. Для атаки на сервис X команды Bкоманда A должна отправить соответствующий запрос игровому серверу. Запрос можетбыть либо удовлетворен, либо отклонен. Разрешение на атаку производится в следующихслучаях: атакуемая команда B разрешает атаку; у команды A есть в наличиирешенный квест или опубликованный эдвайзори; команда B отказала в атаке на сервисX больше определенного числа раз. Во всех остальных случаях запрос на атакуне удовлетворяется. После проведения атаки жюри начисляет очки за атаку и защиту.В качестве архитектуры игрового сервера был использован шаблон Model-View-Controller (MVC, «модель - представление - контроллер») [3]. Приложение разделенона три компоненты - модель данных приложения, пользовательский интерфейс иуправляющая логика:- модель (model) предоставляет данные (обычно для представления), а также реагируетна запросы (обычно от контроллера), изменяя свое состояние;- представление (view) отвечает за отображение информации, то есть это пользовательскийинтерфейс;- контроллер (controller) интерпретирует данные, введенные пользователем, и информируетмодель и представление о необходимости соответствующей реакции.Модификация одной из компонент оказывает минимальное воздействие на другие.Взаимосвязь компонент представлена на рис. 1.Рис. 1. Компоненты архитектуры Model-View-ControllerМодель реализована в виде реляционной базы данных, методом работы с которойявляется Object Relational Mapping (ORM) [4]. Суть проблемы, которая решается с помощьюORM-слоя, заключается в необходимости преобразования объектных структурв памяти приложения в форму, удобную для сохранения в реляционных базах данных,а также для решения обратной задачи - представления реляционной модели в объектнойс сохранением свойств объектов и отношений между ними. В данной работепостроена база данныхдля хранения и обработки результатов игры; для данной базыданных реализован ORM-слой. Для каждой её таблицы реализован свой класс,член-данными которого являются поля этой таблицы. Член-функциями класса являютсяфункции, необходимые для связи класса с соответствующей таблицей. На рис. 2представлен пример соответствия классов в объектно-ориентированной программе итаблиц в реляционной базе данных.RequestTeam id : integerdate: TIMESTAMPServiceid : integerTeamjd : integerAttacker id : integerid : integerName : varchar(256)Score : varchar(256)# data : map# dbuser: string= i~ : : : : string# dbname : string_______________________________________+ saved+ delO+ set(key : string, vafue : string)+ get(key : string): string+ init(user: string, password : string, database. string, h o s t : r~'.::Team::+ saved+ dell)+ select(key : int, value : string)+ Setldtvalue: int)+ GetldO : int+ SetNamefvalue: string)+ GetNameO : string+ SetScorefvaiue : int)+ GetScoreO : int"Request::+ saved+ dell)+ sefect(key : int, value: string)+ GetldO : int+ Setldtvalue: int)+ SetDate(value : MYSQL TIME)+ GetDateO : MYSQL_T1ME+ SetServiceidfvaiue: int)+ GetServiceJdd : int+ SetTeamidfvalue: int)+ GetTeamidQ : int+ 5etAttacker_id(vaSue: int)+ GetAttackerjdO ; intРис. 2. Пример соответствия классов и таблиц в ORMДля представления пользователю информации о текущем состоянии игрового сервера,а также для приема его запросов используется клиент-серверная архитектуравеб-приложения. Пользователи (жюри и команды) с помощью веб-браузера отправляютзапросы веб-серверу, который, в свою очередь, передаёт их обработчикам, возвращающимрезультат в формате XHTML.Обработчики запросов реализуют контроллер игрового сервера. Они написаныс использованием стандарта CGI (Common Gateway Interface - «общий интерфейсшлюза»), что позволяет избавиться от необходимости делать игровой сервер многопоточным- задача по одновременной обработке запросов от пользователей возлагаетсяна веб-сервер. Так как CGI-скрипт в основном работает только с вводом/выводом, оносуществляет достаточно быструю работу.Представление реализовано преобразованием XML-данных, получаемых на выходеCGI-скриптов, в XHTML - формат данных для отображения с помощью веббраузеров.Для реализации игрового сервера был выбран язык программирования C+-+. Этообусловлено тем, что С+-+ является компилируемым объектно-ориентированным языкомпрограммирования с поддержкой множества дополнительных библиотек.
Ткаченко Николай Олегович | Национальный исследовательский Томский государственный университет | студент | afr1Ka@sibmail.com |
Чернов Дмитрий Владимирович | Национальный исследовательский Томский государственный университет | студент | ChernovDV@sibmail.com |
Колегов Д. Н., Чернушенко Ю. Н. О соревнованиях CTF по компьютерной безопасности / / Прикладная дискретная математика. 2008. №2(2). С. 81-83.
Команда SiBears / Томский государственный университет. Электрон. дан., 2010. Режим доступа: http://sibears.ru, свободный.
The Model-View-Controller (MVC) in past and present / Reenskaug T., University of Oslo. Электрон. дан., 2003. Режим доступа: http://heim.ifi.uio.no/~trygver/2003/ javazone-jaoo/MVC_pattern.pdf, свободный.
Ambler S. Agile database techniques: effective strategies for the agile software developer. Wiley, 2003. 480 p.