初心者がセキュリティコンテストに取り掛かるための第一歩を考える
GWも前半戦終了で、後半戦突入しました!そろそろ休みに飽きてきたひよです。GWの勉強として以前から気になっていたセキュリティコンテストの本を購入し一通り読み終わったので、実際にセキュリティコンテストに参加するためにどうしたらいいか考えようと思います。
■はじめに
いつまでかわかりませんが、GW中はAmazonのKindle本で下記2つのセキュリティコンテストの本がお買い得です。40%オフなので興味ある方はこのタイミングにで買って積んでおくのおすすめします。これらの本の読書感想とまずどこから取り組んだらいいのかまとめておこうと思います。SECCON2019は難しそうだけど、SECCON Beginnersがあったら参加してみたい心持です。その時に役に立てばよいなと思います。
セキュリティコンテストチャレンジブック CTFで学ぼう!情報を守るための戦い方
- 作者: 碓井利宣,竹迫良範,廣田一貴,保要隆明,前田優人,美濃圭佑,三村聡志,八木橋優
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/09/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 清水祐太郎,竹迫良範,新穂隼人,長谷川千広,廣田一貴,保要隆明,美濃圭佑,三村聡志,森田浩平,八木橋優,渡部裕
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/07/28
- メディア: Kindle版
- この商品を含むブログを見る
■読書感想
セキュリティコンテストの問題は大きく下記5つのセクションがあるようです。
- バイナリ解析
- pwn
- ネットワーク
- Web問題
- SQLインジェクション
どのセクションにも共通するのが、何もツールを持たないで挑むべからずということでした。バイナリ解析ではデバッガを駆使したり、pwnでは逆アセンブルしてみたりとツールがないと何も進みません。この点はプログラミングの問題とは違っているところだなと実感しました。
各セクションの個人的な感想を記載すると…
バイナリ解析およびpwnは、アセンブリの解析およびメモリの番地を操作するような内容となっていて、学生時代から苦手意識がある分野なので読むのにすごい時間がかかりました。ただ、バッファオーバーフローでシェルを乗っ取る仕組みとかがわかったので勉強になりました。これらの問題が起きないようにちゃんと実装しているプログラマは高いスキルが求められるので、スキルの低いプログラマが作ったプログラムは脆弱性が生まれそうだなと感じました。
ネットワークはほんとうにWiresharkでした。拡張子がpcapのものはWiresharkで開けということを覚えました。これさえ頭の片隅にあれば解析には着手ができそうです。また、分割して送られてくるパケットをまとめてダウンロードする機能は便利ですね!これでプロミスキャスモードがあると、平文では何も送れません。
Web問題とSQLインジェクションは、よく問題になる点なので攻撃手法の例があって参考になりました。利用しているMWの製品やバージョン情報からアタック仕掛ける手法があって、それらの情報は隠さないとダメなんだなと実感しました。よくあるのはMWインストール後のデフォルトページにバージョンが表示されてい、絶対にやっちゃいけないので、GW明けに出社したら差し替え/対応すること上長に相談必須です。
まとまりはありませんがこんな感じになります。一人ですべてのセクションの問題を解くには、幅広い分野の知識が必要になるため勉強にはうってつけです。これらの本には例となるプログラムとその動作が記載してあるので、仕組みを理解することはできるでしょう。ただし一回では身に付きにくいので、苦手分野の問題は復習したほうがいいと思います。
■セキュリティコンテストに臨むにあたって
初心者が第一歩を踏み出すには考えてみました。大きくは下記3つ準備できたらばっちりだと思います。ただこれらの準備をするにも労力が必要になるので、趣味の領域かもしれません。
- 実験環境の準備する
- 解析ツールのレパートリーや使い方をマスターする
- 実際の問題を解きつつ回答を理解する
まず、バイナリ解析などのセキュリティコンテストの問題では解析対象のファイルをダウンロード等して入手することができます。ただこれらのファイルを自分のマシンで実行すると自分のマシンに不具合が起きる可能性がなきにしもあらずです。そのためVirtualBoxなどで解析用の壊れてもいい環境を用意しておくことが望ましいです。また、ファイルについても実行形式があるので、その実行形式で実行できる環境があるのは強味です。
次にWiresharkなど解析を行う際の定番ツールの使い方は押さえておく必要があります。また、バイナリ解析等ではファイルのセキュリティ構造を調査するための調査シェルなどがGithubにあるようなので、自分の使いやすい解析ツールを探したり、自分で作ったりして使い方をマスターしておくと解析しやすいと思いました。これらの本の中でもいくつか紹介してくれているので、それらのツールをマスターしておくのは最低限かと思います。
最後に、やはり実際の問題を解いて勘所をつかむというのは大事だと思います。いろいろな方がセキュリティコンテストが終わった後に、write-upの記事を書いてくれているのでどうやって解くのかとても参考になります。つい先日行われたSECCON 令和CTFも多くのWriteupの記事があり勉強になります。PDFファイルは複数の画像から構成されているため、隠れている画像を抽出するとか知ってたらすぐわかる問題ですが、知らなかったら時間がかかります。
■おわりに
セキュリティコンテストに参加するのはきっと楽しいのですが、なかなかハードルが高いように感じています。ただ準備すればいいことなどは見えてきたので、SECCON Beginnersがあったら参加して、来年のセキュリティコンテストは参加してみたいと思っています。チーム戦なのでチーム組んでくれるメンバ探さないといけないのですがね。
本記事について誤りなどありましたらコメント欄にて指摘お願いします。また、セキュリティコンテスト上級者の方はアドバイスなどありましたら、そちらもコメント欄でぜひぜひ教えてください!