イベントレポート
CTF for ビギナーズ2016 長野
Shoma Suzuki
こんにちは、アルバイトの鈴木です。
先日、CTF for ビギナーズ 2016 長野に参加してきました。
動機
最近になってCTFの大会に参加させて頂いたり、それに近しい話題に触れる機会が増えてきたのですが、不完全燃焼で終わったり理解が追い付かなかったりするようなことが多かったです。
しかし、CTFについて悩んでいるその丁度良いタイミングでCTF for ビギナーズ 2016 長野の情報がFacebookにてシェアが回ってきて、これは参加するしかないなと決意をしました。
何をとは言いませんが失ったものは幾多かありました。(日曜日開催というところから・・・)なのですが、充分すぎるくらいの価値はありました。
ということで、参加してみた感想とオフレコNG(そもそもなかった?)と言われていない技術面の話を簡単に紹介したいと思います。
※できるだけ内容には留意して書いたつもりなので書いてある内容の相違や不適切な部分が含まれていればご指摘をお願いします。
CTF for ビギナーズって何?
CTF for ビギナーズについて説明致しますと、SECCON実行委員会さんと日本ネットワークセキュリティ協会さん主催の
“CTFに興味があり、これからCTFへの参加を考えている人” が対象のCTF勉強会です。公式サイトを参考にしてみてください。
勉強会はCTFを行うにあたって必要な知識を講義形式で学びつつハンズオンを行った後に、参加者全員で演習を行いました。
講義の中身としてはバイナリ・Web・フォレンジックスの3つの内容を取り扱っていました。
演習はCTF for ビギナーズ運営メンバーの方が用意して頂いた問題を実際のCTF形式で行った後にその一部の解説を聞くといった感じでした。
以下では講義で取り上げられた3つの内容について少し詳しく書こうと思います。
バイナリ講義
バイナリの講義についてはAPKファイルの解析を少しした後、ELFファイルの解析に必要な知識としてCPU・レジスタ・メモリの関係から入ってアセンブリ言語の解説をして頂きました。APKファイルとはAnroidアプリに用いられるファイル形式でそのファイルを解析していき、procyonというデコンパイラを使用してソースコードを理解をするというよう内容でした。もう一つのELFファイルというものはLinux系等のOSで実行バイナリ形式として採用されている物で実行命令が機械語で書かれているということで前述のCPU等の関係の話をされて実際にIDA等を使用し簡単に解析をしました。
ここでの率直な感想としては敬遠されがちなバイナリの内容について触れてみて、理解が遅れていたのですが知識の足りない部分の発見には結びついたのではと思います。
Web講義
Webの講義についてはセキュリティの観点も含めて、大きくまとめて三つ程解説をなさっていました。まずはOSコマンドインジェクションというサーバー側で任意コード実行を許してしまう実際にある脆弱性の解説を交えつつ、演習で実際に使えるテクニックを教えて頂きました。次にPHPでの脆弱性を三つ程(Type Confusion, is_numeric(), Local FIle Inclusion)解説し、最後にWeb分野で使用されるツールを紹介なさっていました。
Type Confusionの脆弱性についてPHPで期待されていない型が送られてきた際にはNULLを返すという欠陥を用いてstrcmp関数等が脆弱性の原因になってしまうという話が個人的に印象に残っています。ここでの分野は意外と身近であり、CTFに関係なく重要度が高い話であったのかなと思います。
フォレンジックス講義
フォレンジックスという講義があったのですが、そもそも “フォレンジックス” というのは、ネットワークよりでパケットやログ・ファイル等の解析や調査をするといった意味合いがあるようです。(はてなキーワードより)
講義ではまずネットワークにおける基礎知識の解説、Wiresharkの使い方の解説、統計機能・フィルター機能等実践で使える機能(ここがうれしい)の解説も頂きました。また、ファイル調査に使用されるコマンドを簡単なものから実践的なものまで教えて頂きました。そのコマンドの一例としてbinwalk(ファイルが入れ子になっている場合に有用でファイルの情報を知れる)やexiftool(メタ情報を表示、更新する)というものがあり、今後使える機会が出てくるのが楽しみだなと思っていました。
この講義は節毎にハンズオンがあり実践的なものが多かったのですが、個人的には一番楽しかった分野でした。
実践の演習
さて、ここまで講義で学習してきたことを生かすのが、CTF演習です。演習は全ての分野を足して(最初のテスト問題を除いて)16問ありました。約90分制限だったのですが、自分が解けたのは4問・・・順位的に言うと半分より少し下・・・前半で勢いがあったのでその時はとてつもない高揚感がありました。しかし、その後の時間は解けない問題のパスを続けに続けて時間が終了。自分より解けていた一緒に行った友人に聞くと2問ほど解けそうな問題があった・・・悔しい。力不足を強く感じられる時間になりました。
(write-upは一緒に参加した友人がブログに綺麗にまとめていたのでそちらを参考にして頂きたいと思います。)
(画像にある線のグラフは横軸が時間で色ごとに順位の変動を表していて、その下にあるチェックマークは解けた問題です。)
まとめと感想
このイベントの名前にもある通り “ビギナーズ” とありますが、自分は1ミリも足を踏み入れてなかった訳ではなく、幾度か触れる機会があったのですが、今回のこのCTF4bで自分の知識を見つめ直す良い機会になりました。普段のCTFへの向かい方の方針が固まってきたと思います。
CTF for ビギナーズ運営並びに運営に携わった皆さんありがとうございました。
今後も長野だけでなく各地で開催されるそうです。(SECCON公式サイト引用)
※CTF for ビギナーズ 2016 勉強会今後の開催予定
・2016年 6月26日(日) CTF for ビギナーズ 2016 香川
・2016年 7月16日(土) CTF for ビギナーズ 2016 博多
・2016年9月11日(日) CTF for ビギナーズ 2016 弘前
・2016年10月22日(土)CTF for ビギナーズ 2016 東京(スポンサー企業優先)
・2016年 11月27日(日) CTF for ビギナーズ 2016 金沢
また、過去に開催されたCTF4bのスライドが数々SlideShareにも落ちていたので共有します。
初心者だとかなり参考になる資料なのでぜひ見てみてください。
こちらよりどうぞ。