CTF for ビキナーズ 奈良 A&D参加記
CTF for ビギナーズ2015奈良A&Dに参加してきました。
会場は何とも長ったらしい名前の奈良先端科学技術大学院大学というところだった。
(会場の御提供ありがとうございます。)
4人以下のチームという制約の下、僕が学校で授業を受けてる内に、セキュリティキャンプで仲良くなった大学生たちが4人のチームを結成したため僕は個人参戦となった。
しかし、実際開場に行ってみるとセキュリティキャンプで友達になった@tokky_cppと知らない方が2人待合室のような場所で待っていた。
割と早めに着いたので、その3人と5分間位駄弁っていると、僕が一人と知った@PINKSAWTOOTHが「いまチームが3人だからよかったら入ってくれないか?」とチームに誘ってくれた!
その後に開場に着いたチームのメンバーである@tkmru,@asakasakasasも快く受け入れてくれてとても嬉しかった!
個人参戦からいきなり3人チームへの移行を許してくれた運営さんや席の移動に協力して下さった方々にも感謝!
晴れてチーム友利奈緒として参戦出来た!
この後ルール説明やチュートリアルなどが1時間ほどあったが、角度的に殆どスライドが見えないのでパソコンをいじっていた…これが後で響くこととなった。
チュートリアルが終わって、50分の休憩が入った。
お昼ご飯をみんなで食べる時間だ。チームメンバーと一緒に食べようと思ったけれど、チームのメンバーは他に仲の良さそうな人がいたので、セキュリティキャンプで仲良くなった@tokky_cpp,@HighHigh_hill,@K_atcと僕との4人でご飯を食べた、他に@tikuwachan_naraも参加予定だったが寝坊したらしくCTFには間に合ったものの一緒にご飯を食べることはできなかった…本当に残念。
ご飯を食べる直前、ここのご飯は噂によると美味しくないという情報をもらったが、この3人で食べる料理はまずくても美味しく感じた。ひさびさに会って話すのが楽しくてしょうがなくて、大学のオススメとか、入った理由とか聞きたいなーと思っていたがすっかり忘れて雑談をしてしまった(当方高校生)
ご飯を食べ終わって競技まで残り10分となったところで「よし、そろそろ行こうか」と言ってしまったのだが、いま気づけば一番食べるのが遅かった僕を待ってくれていたのだから最初に「待ってくれてありがとう」と3人に一礼入れるべきだったと反省。。。
いよいよ競技
脆弱性のあるWebサービスとSSHが動いている状態の環境を渡される。5分おきにサービスの生存確認が行われて、サービスを提供し続けるとDefense点が加算、個人情報を抜くとAttack点が、個人情報を取られるたチームはAttack点の分Damage点として減算されるというルールだった。
競技が開始した時、チュートリアルを聞いていなかったせいで、相手のサーバーのipアドレスが分からない(攻撃できない)という状況に陥った。そして同じサービスが提供されているということも聞いていなかった「ソースコードが見れるということですね」というアナウンスは聞いていたのにパソコンに集中していて意味を吟味しなかったので本当に後悔。
取り敢えずsshで自分たちのサーバーにログインして内部がどんな感じになっているのか見ていた。(自分のサーバーを持ったことがないのでsshの使い方を調べる所から入った)ddコマンドでImportant_dataというバイナリのダミーファイルを作ったりしてちょっと遊んでいた←バカ
そうこうしている内に@PINKSAWTOOTHがtcpdumpをラズベリーパイにインストールしていた。これによりアタックしてきている相手のipアドレスが丸裸になり、iptablesで自分たちのIPアドレスとサービスの生存確認しているIPアドレス以外をフィルタリングすることにした。これにより、サービスを安定して提供し続けることができ、点数を稼いだ。
攻撃は殆どできなかった、僕の唯一の功績である脆弱性の発見も攻撃に繋げる技術がなく失敗に終わった。
@PINKSAWTOOTHの功績ばかり言っているけれど、もちろん@tkmru,@asakasakasasも大いに活躍してくれた、しかし席が向かいだったためあまり状況を見れていなかった。申し訳ない。
期待されていた割には全くチームに貢献できなかったがとても楽しかった!チームに誘ってくれた@PINKSAWTOOTH、チームへの参加を受け入れてくれた@tkmru,@asakasakasas本当にありがとう!これからもよろしくお願いします。
反省点
・競技に集中しすぎるよりみんなでもっと話し合う
皆自分のことで精一杯だったと思うけれど、チーム内の状況の把握、やサーバーを落とすかどうかの相談などはみんなで一斉に相談して早急に判断を下すべきはないか。
・スコアなどの監視
事前に簡単なスクレイパーでも作っておいて、watchコマンドとかと兼用してスコアの変化などを監視しやすくすることだったり、周りの動きや情報をより早く収集することが大切だと思いました。