セキュリティキャンプ全国大会2016参加記
セキュリティ・キャンプ全国大会2016:IPA 独立行政法人 情報処理推進機構
に参加してきた。
ハチャメチャ楽しかった上にいろいろな知見(主にCTF方面)を得られたので、まずは感想などを書こうと思う。
動機
昨年のCTF for ビギナーズ東京のCTF演習の優勝者が大昔のセキュキャン卒業生(?)でそこでセキュキャンを知る。行きたいなあ、などと思う。
応募
CTFではバイナリメインで解いていたのでバイナリ問を主に解く。
応募用紙は大学のサークルのブログに貼った(当時ブログを持っていなかったため)
年齢的に今年が最初で最後のチャンス(大学三年生だが一浪)なので頑張って応募用紙を書いたら通った。
年齢に余裕のある各位は若いうちからギリギリになる前に応募するといいと思う(こなみ)
~0日目
(れっくすさんのpwnとか中津留さんのrevとかは時間を見つけて問題を解いたりスライドを読んだりはしていたものの)大学の情報工学科がクソなので7月は課題に追われ、8/5まで期末試験があり8/6,7,8の三日で事前課題を片づけた。
講義を受けるのに概ね知識面で不自由することはなかったように思う。web以外。
これは個人的な感想ですが、セキュリティキャンプの講義は得意(だと思っている)分野を伸ばす、という選択をした方が講義を有意義に過ごせるような気がします。
一日目
電車が爆発炎上して遅刻。許さん
名刺交換フェーズに乗り遅れる。電車マジで許さん
一日目は専門講義は無く、CTFがめっちゃ強い人の話などを聞いた。警視庁と警察庁の違いは結局分からなかった。
早寝を試みるもベッドが慣れず眠れない。辛い。
二日目
1-D
Dissecting Malware - x86 Windows malware analysis -
最初簡単な座学を行った後、IDA Freeでひたすらマルウェアを読んでいった。
Winだったので、WinのAPI呼び出しに注目して解析を行うといい、などの知見を得た。
2-A
スマートフォン向けゲームのセキュリティ
スマホ向けの実在しないゲーム(キャンプ用に作られたもの?)に対してリクエスト改竄、レスポンス改竄、などの方針で攻撃を行った。
SECCON*CEDECやたまにCTFでも出題されるスマートフォンゲーム解析の定石を知ることができたと思う。mod作成、みたいな話も聞きたかったのだけど、時間の都合上仕方なし
.soを見なければならない問題はつらいなあ、という感じ。IDA Proが欲しい
CTF
2の補数表現を見て「なんかatoiがバグっている!w」とか意味の分からないことを言いだしてしまった、本気で†反省†
相変わらずベッドがクソで眠れない、険しい顔
三日目
3-A
Webアプリケーションの脆弱性の評価と発見
脆弱性を見つけるときにどこを見るべきか、みたいな話と脆弱性の脅威をどう見積もるか、みたいな話が前半と後半に分かれて存在している講義。
前半では「脆弱性を探すときにどこを見るか」みたいな話を詳しく聞きたかったのだけど、その部分は割と高速で終了してしまった。かなしい
後半は脆弱性の脅威をどう評価するか、という話題。
脆弱性をこういう視点から見るのは初めてなので新鮮だった。
ここら辺はCTFやってても学べない視点なのだなあ、という感じ
4-D
実行ファイルの防御機構を突破せよ
最高①。
今まではBOF/FSB/その他(readの引数を短いBOFで書き換えられるのでそれを使ってGOT書き換えるとか)でEIPを弄ってsystem("/bin/sh")を呼び出す、ということしかやったことが無かったが、ROPでlibcの関数のアドレスをリーク->libcのベースアドレスを計算->、GOT書き換え->シェル起動、というROPを使ったpwnを学べた。
また、本質部分ではないが、exploitコードのデバッグ手法を知ることもできて最高という感じ。
stack pivotは講義時間の都合で理論しか学べなかったが、とりあえず簡単な例で試してみたい。
5-D
みんなでクールなROPガジェットを探そうぜ
SECCON 2014 final(確か)の改題をみんなで解こうぜみたいな大会。僕は問題を誤読していて、最初から二つのlibcで動作するROPを用意しようと頑張ってしまった(つらい)
流石に体がこのままでは死ぬということに気づいたのか眠れるようになる。
四日目
朝ご飯を睡眠でoverwriteすることが可能だということに気づく、†最強†
6-D
リバースエンジニアリングを自動化せよ
最高②。
CTFで今まで使ったことのなかったangrを使って「ある動作をする入力」というのを見つけていった。
crackme系の問題で「フラグのエンコード方針は分かったがその逆関数が不明」みたいなシチュエーションでは最強のツールだと思う。
充足可能性判定問題、などという単語が出てきて、†離散構造とアルゴリズム†という感じだった。
7-D
.NET プログラムの解析
.netのバイナリはデコンパイルできる、ということは知っていたが、難読化が施されてしまうと手も足も出なくなってしまう、ということで選択した。
.netは「デコンパイルしてVSで動かしてブレークポイント置きながら解析すれば勝ち」だと思っていたが、他の参加者の一人が静的解析でバリバリ読んでいてすごいなあとなった。(僕はVSで動かそうとしていたが結局動かなかった)
ILのコードは「オブジェクト指向のできるアセンブリ言語」という感じでモヨモヨしたが読めなくはなかった。
最終日
グループワークの発表とか閉講式とか。4-Dの感想を述べるフェーズで指名されて焦る。策謀本が欲しかったものの大人気なので回ってこなかった。
めんどうくさいwebセキュリティとリバースエンジニアリング ―Pythonによるバイナリ解析技法を貰ってwebの苦手を埋めることを決意する。
終了後も結構多くの人が残っていたが、荷物が無限に重いため早々に退散してしまった
前半はベッドが合わず本当に辛かったがそれ以外は本当に楽しいイベントだったので、まだ参加していない学生各位は来年以降応募するといいと思います(適当)
終わり