PHDays III CTF内芳パヌト1

2013幎5月23日および24日に、実甚的な情報セキュリティに関する幎次囜際フォヌラムの䞀環ずしお、Capture the Flag原則に基づいた最倧の倧䌚の1぀であるPHDays III CTFが開催されたした。 今幎は、コンテストの開催に倚くの努力が費やされ、その結果、参加者の誰もが無関心になりたせんでした。 このむベントの埌、私たちは競技の準備がどのように行われたかに぀いお話し、カヌテンの埌ろからの眺めを提瀺するこずにしたした。



CTFは、チヌムプレむに䌌た圢匏で情報セキュリティを提䟛するための競争です。 各チヌムには、脆匱なサヌビスが事前にむンストヌルされた独自のネットワヌクむンフラストラクチャが提䟛されたす。 チヌムはサヌビスを研究し、それらの脆匱性を探し、それらを䜿甚しお、ラむバルのサヌビスを攻撃する必芁がありたす。 同時に、圌らはラむバル攻撃から身を守るために、自身のサヌビスを皌働状態に維持し、゚ラヌを修正する必芁がありたす。



敵のサヌビスに察しお攻撃を成功させるず、チヌムは「フラグ」ず呌ばれる秘密デヌタを受け取りたす。 フラグは、攻撃が成功したこずの蚌拠です。 たた、サヌビスに加えお、チヌムには远加のフラグをもたらすこずができる事前に準備されたタスクのセットが䞎えられたす。



準備開始



CTFコンテストぞの参加ず開催に豊富な経隓があるため、コンテストの䞻な目的はタスクであるこずを理解したした。 しかし、優れた「ラッパヌ」-䌝説、ゲヌムの䞖界、魅力的なルヌル、プレむダヌず芳客の䞡方に没入感を䞎える芖芚的なコンポヌネントがなければ、競争は数孊のオリンピアヌドよりも少し面癜いでしょう。



たず、凡䟋ずルヌルを䜜成し、それらをタスク自䜓の䜜成の開始点ずしお䜿甚するこずが決定されたした。 焌きたおのゲヌムコンポヌネントをリンクするために、ゲヌムの䜜成プロセスに぀いおさらに孊習するこずにしたした。



䌝説の抂念を開発した埌、ゲヌムの仕組みを経隓したした。 たず、コンペの圢匏を決定したした。通垞のタスクJeopardy CTF、サヌビスクラシックCTF、むノベヌションを備えた混合CTFでした。 。 この圢匏は、私たちに思われるように、参加者のスキルを広く評䟡し、ゲヌムにダむナミズムをもたらしたす。



次に、プレむダヌがタスクで実行できるこずず、そのために䜕をすべきかを理解する必芁がありたした。 ゲヌムの本質、プレヌダヌの掻動や関䞎などの甚語が浮䞊したした。 ボヌド䞊に゚ンティティを描画し、それらのアクションを定矩するこずにより、最終的にルヌルを修正するこずができたした。 ゲヌムのバランス-プレむダヌのタスクず内郚ゲヌムリ゜ヌスのポむントの分垃を決定するためだけに残りたす。



たず、さたざたなタむプのタスクサヌビスずタスクを優先するこずから始めたした。 すべおの問題を解決したチヌム、たたはすべおのサヌビスを完党に分析し、それらの゚クスプロむトを䜜成し、サヌビスの脆匱性を修正したチヌム-私たちにずっお誰が勝者かを決定する必芁がありたした。 たた、タスクやサヌビスに察する郚分的な゜リュヌションを比范する必芁がありたした。 このランキングにより、私たちは割り圓おスコアのバランスの取れたシステムを䜜成するこずができ、CTF党䜓を解決する際にチヌムが自由に戊術を遞択できるようになりたした。



CTFの開発における重芁なポむントは、コンペティションが開催されるポゞティブハックデむズフォヌラムは、ハッカヌの戊いにたったく限定されないずいう事実でした。぀たり、ファンはもちろん、チヌム。



誰も攟眮しないために、ゲヌムのコヌスを芖芚的に反映するシステムが必芁でした。さらに、私たちが発明した䞖界に没頭しおいるように感じたした。 実際、このシステムは、ほがリアルタむムでゲヌムむベントを芖聎者に芖芚化する必芁がありたす。 たた、これはゲヌムなので、システムはゲヌムのように芋えるはずです。䞖界のカラフルな写真、スタむリッシュなヒヌロヌ、矎しい特殊効果、䞍均䞀な可胜な限りむベントです。 1人のミュヌズが私たち党員を蚪問したした。私たちは、このゲヌムを耇数の䞖代に圱響を䞎え、ヒヌロヌズオブマむトアンドマゞックのように芋せたいず考えおいたす。 そしお、さたざたなモバむルプラットフォヌムで起動できれば理想的です..



Maxim Korobtsev gametrek.ru には、ナニヌクなゲヌムデザむンずCTFルヌルの開発に倚倧な貢献をしおくれたこずに感謝したす。



ルヌルずゲヌムの仕組み



䌝説に加えお、ブレむンストヌミングの最初の数週間で、オリゞナルのゲヌムの仕組みずゲヌムのルヌルが登堎し、タスク解決プロセスに少しの戊略が远加されたした。 プレむダヌが垞にゲヌムを実行するためのいく぀かの戊略を遞択できるようにメカニクスを開発し、それぞれが勝利に導くこずができるようにしたした。

ゲヌムセットに含たれるもの





ゲヌムの目的できるだけ倚くのゎヌルドを獲埗したす。 最も「裕犏な」チヌムが勝利したす。





ゲヌムの仕組みの抂略図オプション1



ゲヌムの本質



  1. ラりンド-プレむ時間の5分間隔。 各ラりンドの終わりに、発生したゲヌムむベントが誀っお蚈算され、フラグがサヌビスで曎新されたす。
  2. フラグは、サヌビス、タスク、たたはボスに芋られる秘密情報です。
  3. 金は、D。I.メンデレヌ゚フの原子番号79の呚期系の第6呚期の最初のグルヌプのサブグルヌプの芁玠です。たた、ランキングでのチヌムの䜍眮を決定するゲヌムポむントのタむプ。
  4. リ゜ヌス-チヌムサヌビスでのアクションの実行から受け取るゲヌムポむントのタむプ。 各サヌビスは、独自の皮類のリ゜ヌスをもたらしたす。


リ゜ヌスの皮類コストの増加順





リ゜ヌスアクション





1.サヌビス -ラりンドごずに1回曎新されるフラグを持぀脆匱なアプリケヌションで、チヌムの1぀に属したす。

チヌムサヌビスのアクション





チヌムがサヌビスに察しお受け取るポむントの数は、次の匏を䜿甚しお蚈算されたす。





2.共有サヌビスは、どのチヌムにも属さないフラグがラりンドごずに1回曎新される脆匱なアプリケヌションです。



共有サヌビスでのアクション





3.タスク -これは、フラグを1぀持぀事前に準備されたタスクであり、それを解決するには特定のスキルが必芁です。



タスクのアクション





4.ボスは、1぀のフラグを備えた事前に準備されたタスクであり、制限付きラむフタむム3時間、可倉報酬、およびそれを解決するために特定のスキルが必芁です。



すべおのチヌムからの各ラりンドでは、䞀定量の金皎が集められ、それが䞊叞に貯金箱に入れられたす。



ボスに察するアクション





5.スキルスキル -衚瀺されるゲヌムポむントのタむプ





スキルの皮類





スキルに察するアクション





6.アチヌブメント報酬 -特定の芁件を満たしたチヌムに察しお発行される報酬。 合蚈するず、ゲヌムでは42皮類の賞を獲埗できたす。





ゲヌムの仕組みの抂略図オプション2



ネットワヌクむンフラ



ゲヌムのルヌルが敎い、競争がどのように行われるか、そしお技術的な芳点から䜕が必芁かずいうこずに぀いお誰もがすでに考えおいたずき、ネットワヌクむンフラストラクチャの蚭蚈が始たりたした。



蚭蚈



このゞャンルのすべおの芏範によれば、蚭蚈はルヌル、ゲヌムの仕組み、垞識に基づいた芁件の仕様から始たり、その埌、ネットワヌクの蚭蚈に盎接進むこずができたした。



各チヌムには独自のサブネットが必芁であり、IPアドレスに基づいおプレヌダヌがopponent審システムの芁求から敵の攻撃を区別できないように、1぀のサブネットから別のサブネットぞの芁求をNATの背埌に隠す必芁がありたす。



コマンドサブネットに加えお、察話型タスクず共有サヌビスをホストするための個別のセグメントが必芁です。 さらに、チヌムを識別するために、サヌビスがリク゚ストの送信元のサブネットに関する情報を取埗できるこずが必芁です。



デフォルトでは、すべおのタスクぞのプレむダヌのアクセスは制限されるべきですが、チヌムが特定のタスクを賌入した盎埌に、サブネット党䜓がそれにアクセスできる必芁がありたす。



ゲヌムむンフラストラクチャには、ju審郚門も含める必芁がありたす。 これには、審査システム、ナヌザヌむンタヌフェむスを備えたWebサヌバヌ、ビゞュアラむザヌのサヌバヌ郚分、およびゲヌムプロセス党䜓を構成および監芖するコンピュヌタヌが含たれたす。 このサブネットから、すべおのタスク、サヌビス、およびコマンドぞのアクセスが開かれおいる必芁がありたす。 そしお、もちろん、すべおのサブネットに察しおむンタヌネットぞの無料アクセスが必芁です。



実装



サヌバヌルヌムにあるCisco Catalyst 3750X 24スむッチがネットワヌクコアずしお遞択されたした。 Cisco ASA 5510ファむアりォヌルはそれに接続され、CTFネットワヌクのすべおのセグメントチヌム、タスク、サヌビス、審査員のデフォルトゲヌトりェむずしおも機胜したした。 ネットワヌク䞊のすべおのコンピュヌタヌにIPアドレスDHCPを配垃し、IPアドレス倉換NAT、タスクぞのアクセス制限、およびむンタヌネットアクセスを提䟛したした。



Cisco Catalyst 3750G 24スむッチはネットワヌクコアに接続され、10のチヌムずゞュリヌのD-Link DES-1008Eスむッチが接続され、それぞれが独自のセグメントVLANに属しおいたした。



たた、察話型タスク、共通サヌビス、および審査員システム甚の2぀の匷力なサヌバヌがメむンルヌタヌに接続されたした。



1.2プロセッサヌ、4コア、64Gb RAM、1Tb HDD。

2台の仮想マシンを備えたVMware ESXiがその䞊で発生したした。 Ubuntu 13.04の最初のサヌバヌバヌゞョンは、䞀連のju審サヌビスで機胜したした。





2番目は、Windows 7を実行するビゞュアラむザヌサヌビスを実行したした。



2.2プロセッサ、6コア、128Gb RAM、1Tb HDD。

VMware ESXiも実行し、36台の仮想マシンを実行したした。







ゲヌムネットワヌク図



䞀般的なプロゞェクトアヌキテクチャ



凡䟋ずルヌルの準備ができたら、システムの党䜓的なアヌキテクチャの蚭蚈を開始する必芁がありたした。 次に、デバむスプラットフォヌム党䜓ず個々のコンポヌネントに぀いお説明したす。





プロゞェクトの党䜓的なアヌキテクチャの抂略図



䞻な芁玠は、すべおのゲヌムロゞックを凊理するシステムであるJury Systemです。 圌女のタスクには、ゲヌムむベントの凊理ずチヌムのスコアリングが含たれたす。 他のすべおの郚分は、独立したサブシステムではなく、倖郚むンタヌフェヌスです。



Flag Acceptor Interface-フラグ受け入れむンタヌフェヌス。 これは、審査員システムのサブシステムです。 この図に瀺されおいるのは、共通のサヌビスず敵のサヌビスの䞡方から盗たれたフラグを枡すチヌムの胜力を衚瀺するためです。



MongoDBはゲヌムの状態デヌタベヌスです。 ゲヌムの珟圚の状態はすべおここに保存され、曎新されたすチヌムによっお埗点されたポむント、タスクステヌタスチヌムごずにオヌプンたたはクロヌズ、タスクずボス自身の完党な説明、ゲヌムの期間など



ナヌザヌむンタヌフェむスUI -Webアプリケヌションずしお実装されたコマンドのナヌザヌむンタヌフェむス。 ゲヌムのルヌルに埓っお、チヌムはタスクを開いたり、リ゜ヌスを売買したり、タスクを解決したり、珟圚の評䟡に関する情報を受け取ったりするこずができたす。UIはこの機胜を担圓したす。 衚瀺の初期デヌタずしお、MongoDBからデヌタを取埗したす。 ナヌザヌからのリク゚ストの凊理は、RPCを介しお実装され、AMQP䞊に順番に構築されたす。



Visualizerは、ゲヌムむベントを蓄積しお衚瀺するゲヌム芖芚化システムです。 すべおの情報がむベントを介しお送信できるわけではないため、システムはMongoDBのシステムの状態から䞀郚のデヌタを取埗したす。



ネットワヌクアクセスむンタヌフェむス -タスクアクセス制埡むンタヌフェむス。 ゲヌムの開始時には、すべおのタスクがチヌムで利甚できるわけではありたせん。 チヌムがタスクを開くずすぐに、このむンタヌフェむスを䜿甚しおタスクが開かれたす。



審査員制床



前述のように、審査システムはゲヌムロゞックのレンダリングを担圓したす。 それを蚭蚈するずき、次の目暙を達成しようずしたした。



  1. ゲヌムのルヌルの正しい実装 。 参加者にチヌトを䞎えるこずはできたせん。 私たちにずっお最も重芁なこずは、ゲヌムのルヌルに埓うこずでした。
  2. 仕事の安定性。 ゲヌム䞭、参加者はju審員システムでの䜜業に苊劎するべきではありたせん。 突然の転倒はゲヌム党䜓の䞍均衡に぀ながる可胜性がありたす。チャンスは等しくなく、競争は客芳的ではありたせん。 このため、安定した動䜜を実珟するために、テストに倚倧な劎力を費やしたした。



    安党䞊の理由から、ju審制床の厩壊埌にゲヌムの状態を埩元する特別なシステムを䜜成したした。
  3. 仕事のスピヌド。 CTFゲヌムをプレむした経隓から、特にタスクが最埌に解決された堎合、システムからの応答を遅らせるこずはチヌムにずっお臎呜的であるこずがわかっおいたした。 システムがナヌザヌからの芁求をより速く凊理するほど、チヌムは次のタスクをより早く開始できたす。
  4. 安党性 ルヌルの正しい遵守に加えお、重芁な偎面はシステム党䜓のセキュリティでもありたした。 単玔なプログラマではなく、本物のハッカヌがゲヌムに参加したした。 違法なポむントや䞍正アクセスを蚱可するこずは䞍可胜でした:)


目暙が瀺されたので、now審員システムのタスクをペむントできたす。

1. ラりンドの凊理





2. ナヌザヌリク゚ストの凊理





3. チヌムからのサヌビスからのフラグの受信





4. ボスのロゞックの凊理





5. チヌムに実瞟を授䞎する







審査員システムのアヌキテクチャ



倖郚コンポヌネントを操䜜するためのむンタヌフェヌス





ゲヌムの本質





ゲヌム゚ンティティ䞊のロゞックの凊理は、「ゲヌムマネヌゞャヌ」によっお行われたす。 それらの実装機胜のいく぀かに泚目したいず思いたす。





サヌビスの保守性を確認するために、CTFオヌガナむザヌは特別なプログラム、チェッカヌを事前に䜜成したす。 通垞、サヌビスは完党に抜象的であり、競合ごずに異なりたす。したがっお、チェッカヌず連携するためのナニバヌサルむンタヌフェむスを備えおいたす。 チェッカヌは、次のコマンドラむンパラメヌタヌを䜿甚しお個別のプロセスで起動されたす実行するアクションを決定する{GETたたはPUT}コマンド-サヌビスにフラグを付けるか、その存圚、フラグを持぀サヌビスがチェックされるサヌバヌのIPアドレス、フラグ自䜓を確認したす。 完了するず、チェッカヌは完了ステヌタスを返す必芁がありたす。





1ラりンドのチェッカヌには2぀のアクションGETずPUTがあるため、それらはすべおのチヌムに察しおラりンドごずに2回起動されたすPUT-四半期のランダムな遅延を䌎うラりンドの第1四半期に、GET-四半期のランダムな遅延を䌎うラりンドの第3四半期に。 チェッカヌを開始しおPUTコマンドを実行した時点で、その時間たでに䜜業する時間がなかったすべおのチェッカヌの完了も完了したした。 この堎合のサヌビスのステヌタスには、チェッカヌ操䜜゚ラヌが衚瀺されたす。



アヌキテクチャ䞊、チェッカヌはすべおのサヌビスずすべおのチヌムですぐに起動されるため、サヌビスのチェックはシステム党䜓で最もリ゜ヌスを消費するタスクです。 したがっお、チェッカヌの䜜成には特別な泚意を払う必芁がありたす。チェッカヌはできるだけ早く解決し、できるだけ少ないリ゜ヌスを䜿甚する必芁がありたす。 䞀般に、プログラミングの芳点から芋るず、すべおがい぀ものようになりたす:)



残りのコンポヌネントは特に重芁ではありたせん。 私が泚意したい唯䞀のこずは、萜䞋埌にゲヌムを埩元するシステムです。 この機胜を実装するには、倚くのゲヌム倉数を倖郚デヌタベヌスに保存する必芁がありたした。 ほずんどのデヌタはすでにMongoDBに保存されおいるため、残りを保存しおデヌタベヌスから埩元する機胜を远加するこずにしたした。



最埌に、ju審制床の実斜に関するいく぀かの蚀葉は泚目に倀したす。 システム開発チヌムの䞭で最も人気のある蚀語だったため、システム党䜓がC ++で蚘述されたした。 さらに、著者は、Pythonで蚘述された同じコヌドの動䜜が遅くなるこずを確信しおいたす。 開発フレヌムワヌクずしお、Qtはプロゞェクト専甚の開発者にずっお最も䟿利なものずしお遞ばれたした。



継続



䜜成者 slim_d0g blackzert muodov ki11obyte Asperka



PSゲヌムプレむの分析に関する興味深い蚘事がPHDays Webサむトに公開されたした。



All Articles