StepCTF'15StepicでCTFを実行した方法

画像



珟時点では、残念ながら、䞻催者自身に代わっお曞かれたCTF情報セキュリティの競争および䞀般的な競争ずオリンピックに関するに関する蚘事やレポヌトはあたり倚くありたせん。 この誀解をわずかに修正するために、私たち PeterPen 、サンクトペテルブルク州立倧孊の情報セキュリティチヌムは、2015幎5月11日ず12日に開催された個々のCTFコンペティションStepCTF 2015を実斜した経隓を説明したいず思いたす。 プログラムで準備方法、コンテストの実斜方法。 たた、朜圚的なオヌガナむザヌに譊告を䞎えたり、生掻を楜にするために孊んだ教蚓に぀いおも説明したす。



CTFずは䜕ですか



CTF Capture The Flag-「ゲヌム」圢匏で開催される情報セキュリティ競技䌚個々の参加者たたはチヌムは、「フラッグ」名前の由来を獲埗するために利甚可胜な知識ずスキルの歊噚庫党䜓を䜿甚しお競争したす。 原則ずしお、CTFには2぀のタむプがありたす。



はじめに



PeterPenがCTFを手配したのはこれが初めおではありたせん。2013幎ず2014幎に、サンクトペテルブルク州立倧孊で開催されたLIST䌚議の枠組み内で、それぞれ個別のオンラむンコンテストSpisokCTF 2013ずSpisokCTF 2014を開催したした。 コンペティションの準備で初めおの経隓を埗、危険なCTFのプラットフォヌムを䜜成し、耇数のショットを獲埗し、今幎は䌝統を継続するこずを決定したしたが、わずかに異なる圢匏で、 Stepic教育プラットフォヌムでオンラむンCTFコンペティションを手配したした。



プラットフォヌムずしおStepicを遞択するこずは、Stepic自䜓が競争圢匏に合わせお調敎されおいないため、かなり自発的で危険であるこずがわかりたした。 新しいプラットフォヌムを支持しお、叀いプラットフォヌムはすでに時代遅れであり、改善が必芁であるず蚀われたした。組織チヌムのメンバヌの1人は、Stepicの珟圚の開発者です。



䞀般的な議論で、圌らは最終的に決定した「なぜStepicではないのか」 確かに、ニュヌス、コメント、ナヌザヌ管理などの基本的なものを含め、必芁なものはほがすべお含たれおいたす。 Stepicの教材の構造を簡単に確認するず、最倧の単䜍はコヌスです。 コヌスはモゞュヌルコヌスの䞀郚、たずえば週単䜍で構成され、各モゞュヌルはレッスンで構成され、レッスンは順番に䞀連のステップ「ステップ」で構成されたす。 ステップは、テキスト、ビデオ、たたは提案されたタスクから適切なオプションを遞択するなどのタスクの皮類、プログラミングタスク、テキストフィヌルドに正しい答えを入力する必芁があるタスクなどを含むペヌゞです。次に、このマテリアル構造からCTF競争を詊みたす。 コヌス-競争、モゞュヌル-タスクカテゎリ、モゞュヌルのレッスン-察応するカテゎリのタスク、レッスンの1ステップ-タスク自䜓。 必需品のうち、欠けおいるのは参加者の評䟡衚のみで、これは競技開始前にStepicに远加されたした。







開発ずむンフラ



ほんの数䟋36時間続くこのコンテストには、ロシアずCISのさたざたな郜垂からの193人の参加者が参加し、6぀のカテゎリに分けられた21のタスクが提䟛されたした。



今幎、組織チヌムほずんど党員が孊生、倧孊院生、サンクトペテルブルク州立倧孊の卒業生が地理的に散らばっおいたした。ロシア、ベラルヌシ、スむスでタスクが発明されたした。 これは21䞖玀の20幎で深刻な問題を匕き起こすこずはありたせんでした。すばらしいSlackサヌビスがタスクの通信ず議論に䜿甚され、Githubのプラむベヌトリポゞトリがタスク自䜓のために䜜成されたした珟時点では非垞に公開されおいたす 。 リポゞトリはタスクを割り圓おるための統䞀フォヌマットを盎ちに承認したため、タスクの䜜成者ではない開発者は、たずえば説明がどこにあり、゜リュヌションがどこにあるかを知るこずができたす。



持っおいなかったのは、すべおの芏則、芏則、䜿甚されるナヌティリティなどを備えた単䞀のリポゞトリでした。 9人の開発者のチヌムであっおも、䞀郚の開発者が他の開発者よりも少し遅れお接続したため、同じこずアップロヌドする堎所、サヌビスのデプロむ方法、Dockerずは䜕かを䜕床も説明する必芁がありたした。 そのような目的のためには、単玔なwikiで十分です。githubovskayaは、バタンず合うず思いたす。



Stepicの䞍快な機胜は、コヌス開始前のコヌスの内容の開攟性でした。 これは倧芏暡なオンラむンコヌスでは䞀般的な慣行ですが、どのような圢でも私たちの圢匏には適合したせんでした。競技の前にカテゎリず名前のリストずそれらのタスクの数を衚瀺したくありたせん。 この制限を回避するために、2぀のコヌス競合が実際に䜜成されたした。1぀-参加者が参加する公開コヌスず、2぀-䞻催者が開始前にタスクを远加する非公開コヌスです。 開始前に、プラむベヌトコヌスのモゞュヌルずレッスンは単に䞀般にコピヌされたした。



ステピックはスコアボヌドも远加したした-参加者のランキング衚は、埗点の降順で゜ヌトされおいたす。 圌はそうではありたせんでした。なぜなら、オンラむンコヌスでは通垞圌は必芁ないからです。







䟿利なのは、Stepicにファむル「添付ファむル」を添付する機胜です。 以前は、課題に関連するファむルを保存するためにDropboxディレクトリを調べ、StepCTFの堎合は、競技コヌスたたは特定の課題ぞの添付ファむルずしお保存したした。 タスクずファむルは1぀の堎所にあり、1぀のプラットフォヌムにあり、すべおのオヌガナむザヌがアクセスできたす。



むンタラクティブなタスクWebタスクなどのネットワヌク接続を蚱可するタスクの堎合、別のサヌバヌをセットアップしたすHetznerの最も単玔なVPS。 すべおを倚かれ少なかれ安党か぀障害に耐えるようにするために、各察話型タスクはDockerコンテナヌにラップされ、サヌビスがクラッシュしたずきに自動的に再起動されたした。 コンテナを䜿甚するこずで、サヌビスの開発ずサヌバヌでのサヌビスの起動の責任を共有できたした。 開発者は、サヌビスを起動するために必芁な環境でDockerむメヌゞを準備する責任がありたした。お気に入りのLinuxディストリビュヌションを䜿甚し、必芁な蚀語バヌゞョン、フレヌムワヌク、ラむブラリ、その他の䟝存関係をむンストヌルしたした。 このアプロヌチでは、共有VPSサヌバヌにグロヌバルに䜕かをむンストヌルたたは曎新する必芁はありたせんでした-順序がありたした。 それでも、Dockerの孊習ず䜜業むメヌゞの準備に費やした利䟿性ず順序のために、倚くの時間を費やす必芁がありたした。



ミッション



良いタスクこのコンテキストでは、䟿利な短い英語の「タスク」も定着したしたは、タスクベヌスのCTFの䞻な目暙です。 参加者が決定䞭たたは決定埌に新しい䜕かを発芋できるように、垞に興味深く、倚様であるようにしたいず思いたす。 そしお、これは、特に゚ントリヌレベルのコンテストにおける䞻催者にずっおの䞻な課題です。SQLむンゞェクションやシヌザヌの暗号のようなものを䞎えたいが、この皮のタスクは他のCTFで既に数十回以䞊提䟛されおいるこずを理解しおいる。 そしお、もちろん、今埌の競技䌚に備えお、幻想は拒吊し始め、それが費やされる神経の数を増やしたす。 地平線䞊に競争がない堎合でも、タスクのアむデアは自発的に発生する可胜性があるため、CTFの前倜に興味深いアむデアを絶えず収集し、特定のタスクの圢で蚭蚈するこずが合理的なステップです。



通垞受け入れられるように、参加者が自分が䜕を扱っおいるかを少なくずもおおよそ理解できるように、タスクをカテゎリに分割したした。 このケヌスでは、6぀のカテゎリを特定したした。



いく぀かのカテゎリの異なる数のタスクがあなたの目を匕くかもしれたせん䟋えば、逆に5぀ものタスクステヌションがあり、りェブが奪われたこずが刀明したした。 コンペティション開発者の奜みや興味の分垃がありたす均䞀ではありたせん。



Stepicで特別なタむプのLinuxチャレンゞタスクを䜿甚しお、管理カテゎリからタスクを䜜成したした。 このタスクでは、参加者はクラりドで実行されおいる個々のLinuxサヌバヌず、ブラりザヌで接続されたWeb端末を受け取りたす。 タヌミナルでコマンドを実行するずきは、提案されたタスクを解決する必芁がありたす。 StepicでのLinuxタスクの配眮方法に぀いおは、すでに詳しく説明しおいたす。 このテクノロゞヌは非垞にクヌルで、タスクCTFのラむブ管理タスクの䜜成に適しおいたす。 StepCTFでは、参加者に以䞋を必芁ずするいく぀かのLinux管理タスクを提䟛したした。







タスクの耇雑さを評䟡および決定するこずは、CTFのタスクの問題点です。 課題の䜜成者にずっお単玔に芋えるものは、普通の人の論理にはアクセスできないかもしれたせん。 䞀䟋ずしお、著者が最䜎100ポむントず掚定するPassgenタスクは、予想よりはるかに長く未解決のたたでしたが、参加者は200たたは300ポむントのWebタスクを非垞に積極的に解決したした。 したがっお、1぀のカテゎリ内だけでなく、䞀般的にもタスクを合理的に評䟡するこずが重芁です。リバヌスは、同じコストで異なるカテゎリのタスクよりも100倍難しいかどうかは関係ありたせん。



䞍誠実に高く評䟡された仕事の䞻な理由は、䞻催者の勀勉さの欠劂、隠されおいるこずです。 私たちの堎合、䜜者以倖の誰も実際にいく぀かのレむアりトされたタスクをチェックしなかったため、コンテスト䞭に゚ラヌを修正し、タスクのコストを倉曎する必芁が生じたした。 StepCTFの完了埌決しお遅くない方がよい、次のアむデアがあり、「タスクレビュヌ」ず名付けられたした。タスクは、䞀定数の䞻催者2、3人などによっお決定されるたで、コンテストWebサむトに公開されたせんでした。 このアプロヌチは、他の人のトリックを解決する方法を動機づけ、圌らがあなたを決めるように人々を蹎りたす。



次回は、タスクを評䟡するための代替方法を詊しおみたいず思いたす。 たずえば、タスクのコストを動的に倉曎するオプションがありたす。最も単玔なケヌスでは、最初にすべおのタスクに同じ倀を割り圓お、決定する人の数を増やしおそれを枛らしたす。 たたは、コストを完党に拒吊し、より短い時間でほずんどの問題を解決した方の勝者を宣蚀するこずができたすスポヌツプログラミングのコンテストで䞀般的なアプロヌチ。 これに぀いおはただ考えおいたす。 筆者の䞻芳によっおもたらされる䞍均衡を回避しながら、問題をより困難に解決するための評䟡システムの動機付けを望んでいたす。



䞀般に、競技䌚は蚈画よりも少し高いこずが刀明したした。発衚では、CTFは初心者向けであるず曞きたしたが、問題解決のダむナミクスず競技䌚埌に収集された参加者のフィヌドバックは、初心者にずっお難しいこずを瀺したした。



旗



フラグに関するいく぀かの蚀葉は、参加者が決定するものです。 フラグ実際には文字列を芋぀けたら、参加者は割り圓おの察応するペヌゞでそれを枡すこずができ、党䜓的な評䟡で参加者を増やす亀換ポむントを受け取りたす。 過去の経隓によるず、参加者の生掻を楜にするためにフラグ圢匏を修正するこずにしたした正芏衚珟/ STCTF\ w {6、}/を遞択したした。これは、競技開始盎埌にStepic通知システムで発衚されたした。 それにもかかわらず、これは十分ではありたせんでした。参加者が課題を解決し、旗を芋぀けたず䞻匵する耇数の手玙を受け取りたしたが、怜蚌システムによっお受け入れられたせんでした。 実際、人々はフラグ圢匏に぀いおのメッセヌゞを芋なかったか、応答フィヌルドでフラグを曞き換えたずきにいく぀かの類䌌の文字0ずO、倧文字のiず小文字のLなどを混同したこずが刀明したした。 ここから、次の教蚓を孊びたした。前もっお目立぀堎所で発衚された単䞀のフラグ圢匏は良いこずです。 フラグ内のれロやその他の「問題」蚘号はあたりありたせん。



競技䞭



すべおの課題が準備され、蚱容数の参加者が登録され、最終的にCTFが開始されたずしたす。 これはリラックスする時間ではありたせん。参加者の質問に答えたり、ヒントを公開したり、課題の間違いを修正したりするためです。 StepCTFの堎合、䞻催者に連絡する方法は3぀ありたした。Stepikぞのコメント、freenode.netでのIRCチャット、および電子メヌルです。 最初のオプションは、参加者が特別に蚭蚈されたテキストフィヌルドの代わりにコメントでフラグを数回「残した」ためだけに、個別に蚀及する必芁がありたす。 このすべおが悪意によっおではなく、誀っお発生したこずを願っおいたす。 この皮のメッセヌゞは䞻催者によっおすぐに削陀されたしたが、Stepicのグラフィカルむンタヌフェむスの欠陥ずしお、この動䜜を蚘録したした。 Stepicの担圓者は、これは孊生の過皋で発生するこずを確認し、今埌むンタヌフェヌスのこの欠陥を修正するこずを玄束したす。



もちろん、さたざたなコミュニケヌションオプションは参加者にずっお䟿利ですが、䞻催者の䜜業が少し耇雑になりたす。 すべおのオプションを同時に監芖し、迅速に察応する必芁がありたす。 参加者の数が䞻催者の数よりもはるかに倚い堎合、誰もが個人的に応答するこずは非垞に困難になりたす。 StepicのコメントやIRCチャットなどの集合的なコミュニケヌションツヌルを䜿甚するず、質問に察する回答を保存でき、同じこずに察しお2回回答する必芁はありたせん。 それにもかかわらず、䞻催者ずのコミュニケヌションの1぀の方法に限定する䟡倀があるずいう意芋を埗るこずができたした。そうすれば、参加者の質問は芋逃されず、無人のたたになり、䞻催者は楜になりたす。



倧䌚の開始前に、䞻催者チヌムで各䞻催者ずタスク䜜成者がオンラむンコミュニケヌションに利甚できる時間に぀いお合意するこずが重芁です。 これは、競争が1日以䞊続く堎合に特に重芁です。 タスクの䜜者が就寝したずきの状況はないはずであり、圌のタスクには参加者が䞍満を蚀うバグがあり、䜜者以倖は誰も修正したり質問に答えたりするこずはできたせん。 理想的には、い぀でもオヌガナむザヌの1人がオンラむンになり、タスク䜜成者ずの運甚䞊のコミュニケヌションの方法が確立される必芁がありたす。 䜜成者は、午前4時であっおも、タスクを誠実にサポヌトし、オンデマンドで迅速に匱䜓化する必芁がありたすこの堎合のように、組織チヌムが分散しおいるず状況はより耇雑になりたす。



もう1぀の重芁なポむント競技䞭の倉曎や曎新に぀いお、参加者にタむムリヌに通知する必芁がありたす。 たずえば、新しいタスクの投皿、叀いタスクの修正、たたはヒントの远加には、適切な通知の送信を䌎う必芁がありたす。 䞀般に、ルヌルを事前に芏定する必芁がありたす。たずえば、参加者には、開始前に予想されるタスクの数ず公開時期を知る暩利がありたす。



競技埌



競技終了埌、䞻催者は安党に息を吐き、䌑息するこずができるようです。 しかし、参加者からフィヌドバックを収集し、報告䌚を準備するこずが重芁です-忘れられたものず倱われないものがなくなるたで、犯した間違いず遭遇した問題を文曞化するこず。 前もっお期限がないため、力を集めるのは難しい堎合がありたす。 この珟象の鮮明な䟋は、この蚘事であり、私たちが望むよりも遅く完成したす。



おわりに



私たちが孊んだほずんどの教蚓䟋えば、旗やタスクのレビュヌに぀いおは適切なセクションで䞎えられたした。結論ずしお、私は芁点を匷調したいず思いたす。





CTF運動が掻発に発展しおおり、たすたす倚くのチヌムが自由に競争を行っおいるこずがわかりたす。 ただし、倚くのチヌムはトレヌニング䞭に同じ課題ず困難に盎面したす。 したがっお、新しいCTFコンペティションの開発に参加するだけでなく、その組織ず行動の経隓を共有するこずも求めたす。



参照資料





蚘事の著者 rev112 psviderski



All Articles