52人の参加者、11チーム、8時間-これらは、2月21日にシベリア電気通信情報大学(ノボシビルスク)で初めて開催されたSibSUTIS CTF 2015情報セキュリティコンテストの主要人物です。
これらの大会の準備が主催者に代わってどのように行われたかをお話ししたいと思います。
CTFについて少し
CTF(Capture the Flag) -情報セキュリティチームの競争。
いくつかの形式があり、それらの主なものは次のとおりです。
- タスク -チームにはさまざまなカテゴリのタスクのリストが与えられ、各タスクはソリューションに与えられた特定の数のポイントで評価されます。 その結果、最もポイントの多いチームが勝ちます。 ポイントが等しい場合、短時間でタスクを解決したチームの評価が高くなります。
- クラシック -チームには、ローカルネットワークで使用可能な同一の仮想マシンへのアクセスが許可されます。 通常、これはさまざまなWebサービスが実行されているLinuxディストリビューションの一種です。 チームは、発見されたすべての脆弱性を修正し、競合するチームのサーバーに対して攻撃を行う必要があります。 攻撃と防御については、一定のポイントを与えます。 攻撃と防御を成功させるためのポイントが最も多いチームが勝利します。
ロシアでは、この動きは急速に勢いを増しており、RuCTF Positive Hack Daysは主要なイベントに注目すべきです。
主催者とコンテストの形式について
基本的に、主催者は、BiUT(電気通信のセキュリティおよび管理部門)およびPMiK(応用数学およびサイバネティクス部門)のSibGUTI部門の2および3コースの7人の学生でした。
シベリア連邦地区での参加者としてのCTF競技で十分な経験がありましたが、初めて主催者として行動しました。 コンテストの形式では、実装がやや簡単だったため、タスクベースに決めました。参加者の数と知識は正確にはわかりませんでした。
競技準備
21日目頃の準備はすべて完了しました。 最初のステップは、競技のルール、イベントの形式、参加者の数(チーム内の3〜7人)、参加者のルール、タスクを含むカテゴリを決定することでした。
次のカテゴリのタスクをコンパイルしました。
- 逆転-アプリケーションソフトウェアの調査と逆転処理。
- Web-脆弱性に関するWebスクリプトの調査(ブラックボックス);
- 暗号-暗号化タスク。
- フォレンジック-コンピューター犯罪の分野での研究に関するタスク。
- 喜び-主にロジックに関連付けられた一般的な興味深いタスク。
各カテゴリには3つのタスクがあり、タスクの複雑さに応じて100〜300ポイントの評価が与えられました。
次は責任の配分で、誰が訓練のために何をするか、つまりそれは必要でした(優先順位に従って):
- コンテストの開催場所と時間、および受賞者の賞品について大学の運営に同意します。
- サーバーをセットアップし、システムを起動して応答を確認し、コマンドを登録するページを確認します。
- すべてのカテゴリで15のタスクを作成します。
- 競争のロゴ、ソーシャル広告。 ネットワーク、大学のチラシ
- 競技会場を準備します。
- さて、ささいなことの束...
サーバーのセットアップとタスクのコンパイルに関与しました。 微妙な点について少しお話しします。 「チューブ」サーバーが利用可能でした。正確な構成には名前を付けませんが、4コアのIntel Xeon-3.2Ghzと16GbのRAMのようなものです。 Debian 7がインストールされており、外部ネットワークに向かう静的IPアドレスがあります。
私たちのタスクでは、Docker仮想化を介して実装されたWebサーバーを上げる必要がありました。 その時まで、私はドッカーと仕事をしていなかったので、サーバーと外部ネットワークへのポート転送でコンテナを持ち上げると、最終的にそれがどのように機能するかを理解する前にいくつかの幸せな眠れぬ夜をもたらしました。
その結果、標準セットがコンテナにインストールされました: Ubuntu + Apache + MySQL + PHP 。
その後、非常に短い時間で、参加者およびCTF管理システムの機能がかなり控えめなシンプルな登録ページが作成されました。
- タスクの追加(タイトル、説明、正しい判断のポイント、タスクの正解);
- 評価表;
- ニュースを公開する機能。
- そして、どの回答オプションがチームをタスクに置き換えようとするのかを見るためのスパイです。
残りの時間は、タスクの開発に重点が置かれました。
コンテストの1週間前に、参加者向けに登録ページが開かれ、最初の4日間で合計4チームのみが登録されました-合計で約15〜20人(正直に言うと、これ以上期待していませんでした) 7チーム、合計52人の参加者がありました。
私たちの大学の図書館の読書室が会場として選ばれ、みんなの幸福に、この部屋にすべてのチームが泊まりました。
しかし、これに加えて、図書館での競争の前日に判明したように、インターネットにはいくつかの問題があります。Wi-Fiアクセスポイントは1つ(理想的には20人用)と4つのインターネットアウトレットです。 しかし、それだけではありません。 何らかの理由で、私たちのサーバーはこの不運なライブラリからアクセスできませんでした。
インターネットプロバイダーとの戦争は何の原因にもなりませんでした-サーバーに問題があると主張しました(サーバーはどこでも完全に機能し、Host-Trackerでも確認しました)。したがって、プロバイダーをバイパスする問題を解決する必要がありました友人のマレーシアVPS経由。
また、別のWi-Fiアクセスポイントをライブラリに追加し、2つのネットワークスイッチを配置しました。
競技日
コンテストは2月21日土曜日に開催されました。 オープニングは集会所で行われ、管理者と主催者は参加者にいくつかの紹介的な言葉を述べました。 その後、参加者全員が会場に行き、ノボシビルスクの10:00に競技会が開かれました。
チームはかなり高いレベルの知識を示しました-6チームが提案されたタスクの半分以上を解決し、2000ポイントの水準を超えました。 すべてのチームはフェアプレーに賛成し、実施中にチェッカーでいくつかの脆弱性が発見され、有利になりましたが、主催者にはすぐに通知されました。 競技中、すべての脆弱性が修正されました。
また、幸いなことに、重大なインターネットの問題はありませんでした。競技の開始時にわずかな問題がありました-1.5分落ちてから、安定して動作しました。
小さな写真レポート:
一日の終わりまでに、激しい競争は競争が終了するまで続きました。 2位のチームは、1位になるタスクを解決しましたが、1分間回答を送信することができませんでした。 システムはすでにシャットダウンされています。
すべての参加者は満足しました。 競争の後、私たちは彼らと話し、解決が困難ないくつかのタスクのレビューを行いました。
UPD: タスクと回答のアーカイブ