大阪大学CTFチームWani Hackaseの代表をしております@hi120kiと申します。

Wani Hackaseが発足してから2年が経ち、初の公開大会WaniCTFを開催するこのタイミングでどのようにCTFチームを運営しているか、そしてチームの課題について書きたいと思います。

Wani Hackaseとは

大阪大学の学生及び教職員で構成されているCTFチームです。

現在のアクティブなメンバーは

  • B3 4名
  • B4 2名
  • M1 1名
  • M2 2名
  • 教員 1名

となっています。

あまり強いチームではないですが週末に開催されるCTFに継続的に参加して毎週勉強会を行っています。

学部の授業実施期間は18:00、長期休暇中は16:00から1時間半〜2時間ほどの勉強会をZoomを使ってオンラインで行っています。

CTFの「チーム」について

CTFは「出題範囲が広く、様々な知識や技量が求められる」という特徴があるので、それぞれ得意分野を持ったメンバーがチームを組んで大会に出場することが多いです。

現在のWani Hackaseでは

  • Crypto 2名
  • Forensics 1名
  • Pwn 3名
  • Reversing 1名
  • Web 4名

という感じで役割分担をしています。

一応チームプレイを行っていますが「得意分野を持ったメンバーがチームを組んでいる」ため実質的にはそれぞれの分野ごとの個人競技となってしまい、

  • ある分野で高いスキルを持つ人がいるとその分野で他の人の出番がなくなる
  • 競技中の協力があまりできない

という問題点があります。

現在のチーム運営

大会参加

毎週週末に何らかしらの大会が開催されているのでCTFtimeのupcomingページから選んで参加しています。

普段の大会は自由参加となっていますが、1ヶ月に1回なるべく参加する大会を1つ設定し、「SECCON」のような重要な大会は全員で参加するようにしています。

Slackで大会ごとにチャンネルを作り、問題ごとにスレッドを作成して解いている状況を書き込んでいきます。

解いている状況を細かくSlackに書くのは面倒ですが、「競技中の協力」を促進するためにも積極的に行っています。

そして多くのメンバーが参加する大会では「ある分野で高いスキルを持つ人がいるとその分野で他の人の出番がなくなる」ことを避けるために問題ごとにそれぞれが解く問題を宣言してチャレンジしてみるようにしています。(他の人は手出しをしないようにしますが、詰まったりしたときにアドバイスを求めたりすることは多々あります。例えばSECCON4bという大会ではWeb問題の1問目を担当したメンバーに自分が少しアドバイスをして解いてもらったりしていました)

勉強会

勉強会ではまず先週末に参加したCTFの振り返りを行います。振り返りではそれぞれのメンバーごとに挑戦した問題について「どうやって解いたか」「どこまで解けたのか」「writeupではどう解かれていたのか」について共有します。

そして、Wani Hackaseではそれぞれの得意分野以外の分野についても広く知識を得るために勉強会の中で「BeginnersCTF」という取り組みを行っています。

これは毎週の勉強会で事前に2名のメンバーがそれぞれの得意分野から1問ずつ作問を行い、メンバー全員で解く時間(15分x2)を設ける、ということをしています。

プライベートなオリジナルCTFプラットホームが建ててあり、それを使って問題を配布しています。(現在、82問の問題が登録されています)

チームで活動していると得意分野以外の知識を得る機会が少なくなってしまいます。より高いスコアと順位を目指すのも大事ですが、様々な分野からより多くの知識を得ることも大事だと考えているので各分野の基礎的な問題を皆で解くようにしています。

このBeginnersCTFによって多くのメンバーが「RSA暗号の発展的な攻撃」「ディスクフォレンジック・メモリフォレンジックの基礎」「FSBやROP、Heap Exploitationなどの発展的なpwn」「Webの代表的な脆弱性と攻撃手法」を身に付けることができています。

またこの取り組みは参加する側だけでなく、問題を提供する側にも問題作成スキルを身につけることができるというメリットがあり、かなりのレベルアップに繋がっていると感じています。

Rev、Crypto、Forensics問題

This is a image

怒涛のpwn

This is a image

web問題たち

This is a image

チーム内イベント

今年の2月にはAttack&Defence CTFをチーム内で行いました。

This is a image

自分が制作したプラットフォーム上で行いました。問題のソースコードも合わせて公開しています。 https://github.com/hi120ki/adctf-platform

Attack&Defence形式のCTFは実施数がとても少なく、知見がほとんどなかったので自分たちで作って開催してみることにしました。

1台ずつ与えられたサーバー機にUbuntuをクリーンインストールするところから競技を始め、様々な戦略を試したり、工夫すべき反省点を確認したりしました。

サーバーを建ててネットワークを設定したりミドルウェアのインストール・セットアップをしたことのあるメンバーが少なかったのでとても好評でした。

WaniCTFが一段落したあと第2段を準備するかもしれません…

課題とこれから

どのCTFチームも同じかと思いますがメンバー不足が一番の課題です。特にWani HackaseではB1・B2のメンバーがいない状況です。CTFはどうしてもハードルが高い(と思われがち…)のでWaniCTFのような初心者の方向けの一般公開イベントを今後も開催していきたいと思っています。

今回のWaniCTFでCTFに興味を持たれた大阪大学所属の方はぜひご連絡ください。お待ちしております。