入門セキュリティコンテスト
ーーCTFを解きながら学ぶ実戦技術

書籍の概要

この本の概要

セキュリティコンテスト「CTF(Capture The Flag)」についての入門書です。CTFは情報セキュリティ技術を競う競技で,本書で扱う「クイズ形式」のCTFでは,情報セキュリティに関係するさまざまな分野の問題が与えられ,参加者は多様な技術(解析技術や攻撃技術)を駆使し,問題の答えとなる「flag」と呼ばれる文字列を見つけ出します。

本書ではSECCONなどのCTFの過去問を解きながら,CTFの流れや定石を学びつつ,問題を解くのに使う「暗号」「脆弱性」「リバースエンジニアリング」といった,セキュリティに関する実践的な知識についても解説します。各章では次の勉強につながるよう参考文献も紹介。CTFへの参加を考えている方にも,実践的なセキュリティ技術を身につけたい方にもお勧めできる1冊です。

こんな方におすすめ

  • セキュリティコンテストに興味のある方
  • セキュリティコンテストで勝ち進みたい方
  • 実践的なセキュリティ技術を身につけたい方

この書籍に関連する記事があります!

意外と熱い! 「セキュリティコンテスト」の世界
セキュリティコンテスト「CTF(Capture The Flag)」についての入門書です。

本書のサンプル

本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。

サンプル画像1

サンプル画像2

サンプル画像3

サンプル画像4

サンプル画像5

目次

Chapter 0 CTF超入門

0.1 CTFとは
0.2 CTFの種類
  • クイズ形式
    • 問題のジャンルについて
    • 出題方法について
    • スコアリング方式について
    • スコアサーバついてについて
    • flagの形式について
    • CTF大会のルール一例
  • 攻防戦形式
  • その他の形式
0.3 国内外のCTF
  • 海外の著名なCTF
  • 国内の著名なCTF
  • オンライン常設型CTF
0.4 CTFに参加するには
0.5 問題のWriteupを書く
0.6 本書の内容についてご注意

Chapter 1 リバースエンジニアリング問題「runme.exe」

1.1 リバースエンジニアリングとは
1.2 問題ファイルの初期調査
1.3 解法と解答
  • 正攻法で解いてみる
  • アセンブリの基本
    • 関数の呼び出し
    • レジスタ
  • start関数
    • 関数の概要
    • 関数を探る
1.4 問題を解くワンライナーを書く

Chapter 2 暗号問題「Unzip the file」

2.1 暗号とは
2.2 問題ファイルの初期調査
2.3 解法と解答
  • 既知平文攻撃
    • PkCrackを使う
    • flagファイルの正体は?
2.4 なぜ暗号化が解けたのか?
  • ZIPの暗号化方式の概要
  • Traditional PKWARE Encryption
2.5 今回の既知平文攻撃の手順

Chapter 3 フォレンジック問題「History」

3.1 フォレンジックとは
3.2 問題ファイルの初期調査
Column fileコマンドのしくみ
3.3 解法と解答
  • hexdumpコマンドを使う
  • ファイル「J」の正体は?
  • USNジャーナルをひも解く
3.4 ファイルシステムについて
  • NTFS
  • ジャーナリング機能
Column ファイルフォーマットについて

Chapter 4 Webセキュリティ問題「reiwaVote」

4.1 Webセキュリティとは
4.2 問題ファイルの初期調査
4.3 解法と解答
  • SQLインジェクションとは
  • 脆弱性を調査する
  • SQLインジェクションを行う
4.4 Webアプリの裏側
  • データベースとその格納データ
  • ユーザー作成部分
  • 認証部分
  • なぜ「' or 1=1 --」を使うのか?
  • SQLインジェクションについての注意

Chapter 5 ネットワーク問題「Find the key!」

5.1 ネットワークとは
5.2 問題ファイルの初期調査…
  • Wiresharkでパケットキャプチャ
    • 画面の説明
    • 初期解析
  • Wiresharkの統計解析機能を使う
5.3 解法と解答
  • ネットワークについておさらい
    • ICMPパケットの構成
    • HTTPレスポンスメッセージについて
  • 抽出スクリプトを作成する
5.4 pingの中になぜHTTP通信が紛れ込んでいたのか?

Chapter 6 Pwnable問題「baby_stack」

6.1 Pwnableとは
6.2 問題ファイルの初期調査
  • 「baby_stack」環境の再現方法
  • 問題の挙動を把握する
  • 脆弱性箇所を把握する
  • スタックバッファオーバーフローとは
6.3 解法と解答
  • 脆弱性箇所
  • プログラムの制御を奪うには
  • 戻りアドレスを上書きする
  • 適用されている脆弱性緩和技術を調べる
  • Return Oriented Programming
    • ROPガジェットを探すには
    • シェルを起動するには
    • システムコールとは
    • ROPチェーンの流れ
  • Exploitの実装と実行

Chapter 7 Misc問題「Sandstorm」

7.1 Miscとは
7.2 問題ファイルの初期調査
7.3 解法と解答
7.4 なぜQRコードが出現したのか?
  • sandstorm.pngを調べる
  • インターレースとは
  • Adam7アルゴリズムについて
  • 画像を分解してQRコードを抽出する
    • ステップごとの画像を出力する
    • より精細な画像を出力する

Chapter 8 Misc問題「Mail Address Validator」

8.1 問題の設置方法
8.2 問題ファイルの初期調査
  • 問題サーバに接続してみる
  • main.rbを読む
8.3 解法と解答
8.4 なぜflagが返ってきたのか?
  • 問題サーバが持つ脆弱性:ReDoS
  • 正規表現のおさらい
  • 正規表現エンジンの概要
  • 有限オートマトン
  • 正規表現と非決定性有限オートマトン
  • バックトラッキングとReDoS
  • 今回の脆弱性箇所について
Column CTFを通じて学んだ知識が活きる一例の紹介

Appendix ツールのインストール

A-1 IDA Freewareをインストール
A-2 Wiresharkをインストール

著者プロフィール

中島明日香(なかじまあすか)

1990年生まれ。サイバーセキュリティ研究者。2013年に慶應義塾大学環境情報学部卒業後,日本電信電話株式会社(NTT)に入社。入社後はソフトウェアセキュリティ分野の中でも,とくに脆弱性発見・対策技術の研究開発に従事。研究成果は情報セキュリティ分野における世界最大級の産業系国際会議BlackHatや,国際会議ACMAsiaCCSなどで発表。また,2014年より日本最大級のCTF主催団体であるSECCONの実行委員を務め,日本初となる女性セキュリティコミュニティ「CTF for GIRLS」を発起人として設立・運営。2021年にはBlackHatUSAのReviewBoard(査読者)に就任。第十五回情報セキュリティ文化賞受賞。サイバーセキュリティに関する総務大臣奨励賞 個人受賞。著書に『サイバー攻撃』(講談社,2018,ISBN=978-4-06-502045-6)。Twitter:@AsuNa_jp