TL;DR
この記事はeeic Adevent Calendar 2016 その2の11日目です。
これはCTF歴数ヶ月のトーシロがCTFを知らない人に対して説明をする(ことを試みた)記事です。 以下の構成となっています。
- 第一部: CTFについて
- 第二部: はじめてのバイナリ解析
- 第三部: SECCON2016 write up
この記事は第一部です。(長くなったので分割しました。)
CTFとは”Capture The Flag”の略で、隠されたフラッグと呼ばれるものを何かしらの方法で習得するゲームです。
IT技術を使った謎解き、プログラミング、ハッキングなどの言葉を聞いて興味を惹かれた人読んでみると良いかもしれません。
「ハッキングとか倫理に反する!」と思う方やウィザードの方はブラウザを閉じることをおすすめます。
また時間の無い方も踏み入れないほうがいいかもしれません… 気がつくと時間が解けていきます。
…
..
.
.......................................................................
:::: ##:::::'##:'########:'##::::::::'######:::'#######::'##::::'##::::
:::: ##:'##: ##: ##.....:: ##:::::::'##... ##:'##.... ##: ###::'###::::
:::: ##: ##: ##: ##::::::: ##::::::: ##:::..:: ##:::: ##: ####'####::::
:::: ##: ##: ##: ######::: ##::::::: ##::::::: ##:::: ##: ## ### ##::::
:::: ##: ##: ##: ##...:::: ##::::::: ##::::::: ##:::: ##: ##. #: ##::::
:::: ##: ##: ##: ##::::::: ##::::::: ##::: ##: ##:::: ##: ##:.:: ##::::
::::. ###. ###:: ########: ########:. ######::. #######:: ##:::: ##::::
:::::...::...:::........::........:::......::::.......:::..:::::..:::::
:::: ########::'#######::::::::::::::::::::::::::::::::::::::::::::::::
::::... ##..::'##.... ##:::::::::::::::::::::::::::::::::::::::::::::::
::::::: ##:::: ##:::: ##:::::::::::::::::::::::::::::::::::::::::::::::
::::::: ##:::: ##:::: ##:::::::::::::::::::::::::::::::::::::::::::::::
::::::: ##:::: ##:::: ##:::::::::::::::::::::::::::::::::::::::::::::::
::::::: ##:::: ##:::: ##:::::::::::::::::::::::::::::::::::::::::::::::
::::::: ##::::. #######::::::::::::::::::::::::::::::::::::::::::::::::
:::::::..::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::
:::: ##::::'##:'##::: ##:'########::'########:'########::::::::::::::::
:::: ##:::: ##: ###:: ##: ##.... ##: ##.....:: ##.... ##:::::::::::::::
:::: ##:::: ##: ####: ##: ##:::: ##: ##::::::: ##:::: ##:::::::::::::::
:::: ##:::: ##: ## ## ##: ##:::: ##: ######::: ########::'#######::::::
:::: ##:::: ##: ##. ####: ##:::: ##: ##...:::: ##.. ##:::........::::::
:::: ##:::: ##: ##:. ###: ##:::: ##: ##::::::: ##::. ##::::::::::::::::
::::. #######:: ##::. ##: ########:: ########: ##:::. ##:::::::::::::::
:::::.......:::..::::..::........:::........::..:::::..::::::::::::::::
::::: ######::: ########:::'#######::'##::::'##:'##::: ##:'########::::
:::: ##... ##:: ##.... ##:'##.... ##: ##:::: ##: ###:: ##: ##.... ##:::
:::: ##:::..::: ##:::: ##: ##:::: ##: ##:::: ##: ####: ##: ##:::: ##:::
:::: ##::'####: ########:: ##:::: ##: ##:::: ##: ## ## ##: ##:::: ##:::
:::: ##::: ##:: ##.. ##::: ##:::: ##: ##:::: ##: ##. ####: ##:::: ##:::
:::: ##::: ##:: ##::. ##:: ##:::: ##: ##:::: ##: ##:. ###: ##:::: ##:::
::::. ######::: ##:::. ##:. #######::. #######:: ##::. ##: ########::::
:::::......::::..:::::..:::.......::::.......:::..::::..::........:::::
What is CTF?
すでに述べましたが、CTF(Capture The Flag)は隠されたフラッグを探し出すゲームです。 CTFは様々な知識を必要とするので、 CTFを行うことでITの基盤技術全般が身につきます!
出段範囲が広すぎて一概には言えないのですが、主に下記のような問題が出題されます。
- バイナリ解析
- ネットワーク通信
- Web
- 暗号
- プログラミング
そして以下のような知識が必要となります
- プログラミング
- データベース
- 無線通信
- 符号理論
- 暗号理論
- OSなどの基本的な知識
- システムコール
- ファイルシステム
- メモリダンプ
- 雑学
- etc.
とまあテストの出題範囲だったらブチ切れる広さをしています。 基本的に調べながらやることになります。 一問解くのに時間がかかりますが、とても勉強になります。
イメージしやすくするためどのような問題がでるのか例を出しましょう
Decode this! “synt:guvf_vf_Pnrfne_pvcure”
問題文に”復号せよ”と書かれていて、暗号文らしいものが書かれています。
なんの暗号でしょうか?少し考えてください。
......
.....
....
...
.
わかりましたか? これはシーザー暗号もしくはrot13と呼ばれる単一換字式暗号です。アルファベットを13文字ずらしたものに置き換えている暗号です。 復号してみましょう
"synt:guvf_vf_Pnrfne_pvcure".decode("rot13")
# => u'flag:this_is_Caesar_cipher'
フラッグが手に入りましたね!
実際はもっと難しいですが、大体これの延長線上です。たぶん…
CTFの始め方
大会
CTFは本来は大会です。チーム(ひとりでもok)で参加し、時間内(24時間や48時間)にどれだけのflagを取れるかを競います。
有名なものではDEFCONやSECCONなどがあります。ちょうどこの土日にSECCON2016がありました。
大会といっても大抵オンラインで参加できるで、とりあえず応募して時間があったら問題見てみるというスタイルでいいと思います。
CTFTimeというサイトで開催予定の大会を知ることが出来ます。
大会と違って常設のCTFというのもあります。これはいつでも自分の好きな時に試すことが出来ます。
自分はksnctfしかしたことないのですが日本のサイトですしおすすめです。 OverTheWiroは試したことないのですが初心者向けらしいので試してみたいですね。
CTFでは問題を解くとwrite upと言ってどのように解いたのか書く習慣があります。解けた問題も解けなかった問題も他人のwrite upを読むのは勉強になるので大会後はwrite upを探すと良いです。
参考書
ネットで調べてるだけでも問題ないのですが、さすがに基礎知識がないとそもそも取っ掛かりすら分からなかったりするので、 自分はセキュリティコンテストチャレンジブックという本で勉強中です。CTF初心者向けの本です。
他に、「秘密の国のアリス」や「Hacking: 美しき策謀」も良い本らしいです。
まとめ
- CTFは勉強になるのでおすすめ。
- とりあえずいっぺん試してみよう。
- CTF仲間募集しています。