こんにちは、のみぞうです。
ふと思い立って24時間の期間限定CTF大会を主催しました、とりとめのない文章ですが、振り返っておこうと思います。
開催概要
ざっくり概要はこんな感じ
- イベント名:ナゾトキCTF~入社試験からの脱出~
- 概要:謎解き要素を盛り込んだ初心者向けCTFイベント
- URL:https://ctf.nazotoki.tech/
- 開催期間
- 2022/7/17 (日) 13:00 JST – 2022/7/18 (祝) 13:00 JST
- 参加申し込み〆切済
- Twitterハッシュタグ
結果報告
当初の想定だと30人~50人くらいじゃない?って思ってたので、この規模になってびっくりです。ありがとうございました!
開催にあたってはシステムガーディアン様に協賛として賞品をご提供いただきました。お陰でイベントの魅力が増したと思います。本当にありがとうございました!
きっかけ
セキュリティはもっと楽しくていいのでは、って思う
勉強が好きな人ってそんなにいないと思うんですが、私のまわりのつよつよセキュリティエンジニャーたちは勉強を勉強と思わずにゴリゴリやってる人が多い印象です。やってるから強くなるのか、強いからやれるのかはよくわからないけど。
でも、強くなる前に楽しくなかったら、新しい人が門前払いになってしまう可能性が高い分野だとも思うんですよね。
セキュリティに興味をもつきっかけとしてCTFって結構有効だと思うんですが。最近のCTF界隈は割とサバンナ化が進んでいる気がしており(※猛者たちが切磋琢磨する厳しい世界…みたいなイメージ)あんまり厳しい空気があると仲間が増えないし、業界的にも損失だと思うわけですよ。
ストイックに技術を追求している人たちを否定してるわけではなくて、セキュリティって総合格闘技だと思うので、色んな人が居たほうが強くなれるんじゃないですかね?
別に人材育成ってほどではなくてよくて。
もっとセキュリティがおもしろいって気づいてくれる人がいたら、一緒に遊べる人が増えて嬉しい、みたいな感じのことを私はよく思います。
謎解きクラスタにはセキュリティの才能がある
私は謎解きとか脱出ゲームとかが大好物です(そんなに成功しないけど)常々思ってるんですが謎解きとCTFって似てますよね?
これはやったことある人しか共感し辛いと思うのですが、ずっと昔からこの2つの共通項というか、ハマる人間の性質の類似性というか、そういうものを感じてきました。
ちょっと古い情報ですが、2015年時点で日本の謎解き人口は500万人だそうです(コロナ後のデータは見つけられなかった、まあ減ってはいないと思う)
たとえば日本の高校生を例にしたら、300万人しかいないわけですし、若い人の人数なんて今後もどんどん減っていきます。
したがってこれからの時代にセキュリティ業界に新しい人を誘っていきたいなら、適性のある大人を誘い込むほうが効率がいいのでは?という仮説が成り立ちます。
というわけで 「ミックスさせてみたら謎解きクラスタにCTFの面白さが伝わるのでは?」 って思ったのが今回の企画のきっかけです。
こんなのCTFじゃない、というご意見について
そうね。私も趣味CTF勢のはしくれとしてそう思います。
でも前項の通り、もともとCTFつよつよ勢はターゲット外なんですよ…楽しんでいただく分にはとてもありがたいんだけど…ごめんな。単純に語感がいいという理由でナゾトキCTFを名乗っていました。不快に思われた方がいたら申し訳ないです。
あと色々悩むけど「最後には解ける快感」を味わってほしいみたいな気持ちがあって、難易度は抑えてます。物足りなかった人もいるだろうけど、イベントの性質上最大公約数をとるしかないかな。
この辺は「8割解けるCTF」WEST-SEC CTFさんの理念に勝手に共感しています(中の人とは一切接点ないです。勝手にいいなと思ってるだけ)
まあCTF業界団体みたいなのができて、お前がCTFを名乗るな!って怒られが発生したらなんか別の名前つけます。
WriteUPについて
CTFには大会がおわったあとに問題の解き方を公開する「WriteUP(ライトアップ)」という文化があります。作問者自らWriteUPを書くという方もいらっしゃるけど、私はここで公開することはしません。理由は後述。
(参加者の方が公開するのは歓迎します。楽しく拝読いたします)
今後の展開⇒常設イベントにするぞ
このまま24時間限定で終わらせてしまうのはもったいないので(貧乏性)
夏コミに合わせて同人誌を作ります。
要するに「このイベントを常設イベントに仕立て直して、解き方を丁寧に解説して更にレジストレーションコードをつけたWriteUP本を頒布する」のが次の展開です。
いま並行して準備進めているのですが、締切が3週間後で早くもやばい。間に合うのか。あえて宣言することで背水の陣をひいていくスタイルです。
夏コミはお友達の桐生あんずさんのスペースに委託させていただく予定です(1日目です)多分電子書籍の通販とかもします。
まあそんなわけなので、ブログでWriteUPの公開はしません。もしよかったらのみぞうへの投げ銭と思って本の方よろしくお願いいたします(謎の内容は大筋では変わらない予定なので、気が向いたらで大丈夫です)
今回の裏テーマ⇒全部一人でやる
イベントを開催するとなると、いろんなタスクが必要になってきます。たとえば今回のようなイベントであれば
- 問題を作る(小謎と中謎と大謎)
- インフラ整備・当日の維持運用(問題配信サーバとWEB問サーバ)
- ストーリーラインの作成(謎解きイベントとして成立させるため)
- サイトデザイン(見栄えがあんまりだとやる気がでない)
- 絵を描く(絵師さんに頼む時間がなかった)
- カスタマーサポートとカスタマーサクセス(問い合わせ対応とか、Twitter返信とか)
- 集客・広報(Twitterやってただけだけど)
- 事務処理(賞品の抽選とか発送とか)
まあざっと上げただけでもこういういろんな種類のタスクがあろうと思うのですが、とりま全部一人やってみる、っていうのが私の裏テーマでした。
何を隠そう、私の好きな言葉は「他力本願」で、できる人がいてくれればその人に丸投げすればいいやと思っており(ひどい)やってくれる人が周りにいると自分では何もやらなくなってしまうからです。
1回通しで経験を積むことで、今後他のイベントをするときに人に頼ることになってもスムーズにお願いできるようになるかなという狙いがありました。いい経験をさせていただきました、ありがとうございました。
反省
ちょいちょいサーバが不安定になってすいませんでした
正直ド素人なので自信がなかったのですが、失敗も経験のうちかと思い強行しました
- やっぱり1人でHardeningやってる感じになってました
- 問題配信サーバ(CTFd)がちょいちょい不安定に
- 一応、ある問題の都合もあって、DoSを警戒して最低限のWAFの設定はしていました
- ひとりHardeningとして裏でやってこと
- バックアップだけはとにかく頻繁にとる
- 最悪死んでも戻せるように
- ローカルからcurl投げて定期監視
- 1分間隔で確認してステータスコード200が返ってこなかったらSlack通知するしくみを作った
- とりあえず大きいインスタンスに載せ替えてみる
- 多分あんまり意味なかった
- インスタンス以外の場所にボトルネックありそう(すぐに解決できず)
- どうしようもないときは再起動(そのうち壊れるのでは?って心配だったけど結構大丈夫だった)
- スコアサーバ機能の公開停止
- スコアサーバ画面すごい重くない??
- いったん切る
- 実は各問題の正解者見る機能もあるんですがそれは事前に切ってました(なんとなくヤバそうな雰囲気を感じたため)
- 最終的にCloudWatchで監視していよいよというときはインスタンスを再起動する
- 雑!!
- バックアップだけはとにかく頻繁にとる
むりやり乗り切りました。本当にすいませんでした。
アクセス数のスパイクのあるWEBサービスを運用するのってほんと難しいんだなって、弊社のエンジニアへの尊敬の念が芽生えました。
うっかり作問ミスがありました
パスワードzipを解く問題を出題してたのに設定するパスワードを普通にtypoしてしまい、解けない問題を作ってしまった。
じつはその問題は前日まで焦って作問していた問題で、慌てると確認の時間もとれないしよくないなーと普通に反省しました。
でも、参加者の方からDMで問い合わせの連絡いただいて気づいたんですが、その時点で解けてる人も何人かいたので意味がわからないと思いました。多分エスパーがいる。
よかったこと
意図がちゃんと伝わった
受け取り方は人それぞれなので間違いとかないんですが、私が狙ったところをちゃんと受け取ってくださったかたがいてすごく嬉しかったです。
達成感あってよかった
最後まで解ききると嬉しいですよね!
フラグと関係ないストーリーラインまでよんでくれて嬉しい~
ひらめいたときの快感わかるー!
貴重な経験を積むことができました。常設イベントが出来上がったらまた別の問題つくってやりたいなと思っています。よかったら今後ともよろしくお願いします。
あと謎クラの方で一緒に脱出ゲーム行ってくださる方はご一報ください(友達がいません)
ではこのへんで。