BEGINNERに参加した。SECCONというのはセキュリティに関するコンテストを開催している団体。Flag)というのは出題された様々な形式の問題からパスワード(flag)を探し出して解答する競技だ。セキュリティに関する知識や能力を競う初心者向けイベントというワケ。攻撃者の立場になって技術的な研究を行うことでそれを防ぐための技術に役立てようというワケである。ハードニングとは全く異なるアプローチだね。)なお結果はだいたい半分くらいの問題を解く事が出来て、チームの順位は中央値くらいに落ち着いた。手も足もでないわけではなく簡単すぎるわけでもなく、ちょうどいいね。CTFとはこの競技はいくつかの主立ったジャンルがあり、それらが様々な形式で出題される。自分に最も関係が深いのは「Web」ジャンルだ。このジャンルの多くは問題用のWebサイトのURLを渡され、そのページをどうにかしてフラグを得る。他の有名なジャンルには「Reversing」ジャンルがある。これはコンパイル済みの実行型ファイルを渡されてその内容や動きを解析してどうにかしてフラグを得る。単純なパターンだとファイルを実行してみると何かしらの入力を求められて、それに正解するとフラグが表示されるなど。あとは「Crypto」ジャンル、つまり暗号分野の問題だ。これはそのまんまで何らかのヒントや脆弱性がある暗号文が渡され、それを解読する事でフラグが得られる。CTFから得るものある競技から得られるもの。それは当然だがどれくらいその競技へ打ち込んだかによって変わる。自分はこの競技を始めてまだ1ヶ月やそこらなので「初心者にとって」の話をしよう。CTFを始めてみて得られるものはISUCONと少し似ている。普段の業務をしているだけなら決して触れることがない領域の知識が必要となり、覚えて理解する事を要求される。実際のところ、こういった競技に触れることで得られるもののうち、最も重要なのはまさにこれなのかもしれない。普段なら必要ない有用な知識や分野を知るきっかけになるということがだ。Reversingジャンルを解く為にはC言語やアセンブリといった低レイヤーの知識が必要だ。ネットワークに関する問題を解くにはTCP上で通信される生のトラフィックが読めなければならない。いった領域は自分で手をつけようと思っていても中々それが出来ない。CTFはこれらを学ぶのにとても良い機会だった。知識は手を動かしたかどうかで理解度が段違いに異なる。プロトコルを学んだことがあっても実際に読み書きをして活用したことがなければ「知ってるつもり」だ。何を学べば...?もっとも有名な入門書はハリネズミ本と呼ばれる『セキュリティコンテストチャレンジブック』だ。いうか、後でCTFの始め方については少し記事を書いておきたい。引っかかるのはバイナリを逆アセンブリするためのツールとネットワークトラフィックを閲覧するためのツールの二つだろうか。Windows環境でならそれほど迷わないだろう。Xで作業するために使ったツールを少し紹介しておく。バイナリを読むのには最終的にRadare2を使った、トラフィックの方はtcpdumpコマンドとCharles。基本的にCUIで操作することを好むので、GUIが好きな人は他のツールを探そう。だいじなことせっかくなのでだいじなことを書いておこう。SECCONのイベントに参加するのは難しい。いや、参加するのに条件や制約があるワケじゃなくて基本的にイベントの告知やドキュメントが控えめなんだ。この手のイベントは中の人も運営するだけで手一杯、少ない人数が手弁当で頑張っていることはよく聞く話である。いった舞台裏を想像すればあまり文句を言う事も出来ない。こちら側で気構えをしておこう。更新が早く正確なのは公式サイトではなく各イベントのツイッターアカウントだ。これを監視しておこう。公式サイトははっきり言うとアテにならん。各イベント運営組織が公式サイトを更新するのに手順と時間がかかるのだろう。どれくらい注意しなければならないかというと、今回のイベントでは開催日時自体が大きくズレて予定の数ヶ月後になった。開催日時が決まり発表され、参加登録が出来たのは一ヶ月未満の短い間だ。いや、繰り返しになるが運営側にも色々事情があるはずなので安易に石を投げないでほしい。これは文句や苦情ではなくて参加する側に気をつけておいて欲しい心構えの話だ。ルール説明もあまり丁寧ではない。本戦はともかくBeginnersのようなサイドイベントに近いものは「あとは雰囲気でお願いします」な部分も多い。イベントページの操作やチームは何人まで参加できるかといった細かい話は特にしない。困ったらとりあえず前回以前のイベントページや参加レポートを参照すれば書いてあることがある。特別に書いてなければ踏襲されるはずだ(というより、例年と同じだから別に書く必要がないと思われている可能性もあるが)。それでもダメならTwitterアカウントか何かに問い合わせしよう。SECCONへの参加で初心者がつまづく可能性が一番高いのは問題を解くフェイズではない。プログラミング初心者が環境設定で半分以上死ぬのと同じだ。要するにハンター試験と同じであり試験会場まで辿り着けない参加者は0回戦ドロップする羽目になる。あと参加経験者を探して一緒に出よう。知らせたいこと(公開されない)索引CTFとはCTFから得るもの何を学べば...?だいじなこと。