Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINE DM 201609

masaakichida
September 28, 2016
2.1k

LINE DM 201609

masaakichida

September 28, 2016
Tweet

Transcript

  1. 自己紹介 • 千田 雅明 • 得意な分野 • リバースエンジニアリング • バイナリ解析

    • 脆弱性を探すこと • 確か2008年ころからCTFに参加し始めた • defcon ctf 2011, 2012, 2014, 2016の本戦に参加
  2. DEFCON CTF • DEFCON • 世界最大のセキュリティカンファレンス • 毎年7〜8月にラスベガスで開催 • 2016年で24回目

    • http://www.defcon.org • DEFCON CTF • セキュリティの技術を競う競技 • 予選の上位10チームほどが本戦に参加可能 • 別の大会からのシード権もあり、数チーム参加 (日本のSECCONなど) • 本戦が攻防戦形式 • https://legitbs.net
  3. 攻撃時の流れ • バイナリを解析、脆弱性を探す • 逆センブル、逆コンパイル • ツールでfuzzing • stack overflow,

    heap overflow, Use After Free, ... • 攻撃コードを作成 • RoP (Return-Oriented Programming) • shellcode (動くなら) • 他のサーバーに侵入 • flagファイルを読み書き • 特に書き込みは得点が高い
  4. 防御時に行う事 • 脆弱性修正パッチを当てて根本的に対処 • 一般的な方法 • 包括的な緩和策を行い攻撃を無効化 • 別のOSで動かす •

    pythonなど別の言語で再実装 • libc.soを置き換える • heap構造を変える • stack量を変える • stackにカナリアを挿入 • qemuやptraceなどでsyscallをフック • flagファイルの読み書きをフック
  5. その他 • 攻撃パケットの解析 • 脆弱性を特定に利用 • 攻撃パケットを再送信 • サーバー侵入後 •

    パッチ済みのバイナリ持ってくる • サーバー上の設定ミスを探る
  6. 今年のDEFCON CTF • DEFCON CTF 2016 • 2016/8/5 ~ 8/7

    • Cyber Grand Challenge (CGC) 優勝のプログラムが参加 • DEFCON CTFもCGCのルールに従う • Cyber Grand Challenge • 今年のDEFCONのイベントの1つ • 全自動で攻防戦を行うプログラム同士が戦う競技 • 3年前からプログラムが開始 • DEFCON 2016で決勝(予選を勝ち抜いた7チーム) • ルールや仕様が細かく決まっている • 優勝賞金 2億円 • ForAllSecureチームの "Mayhem" が優勝 • https://cgc.darpa.mil/
  7. CGC簡単なルール • 数分ごとに1ラウンド • ラウンド中に以下を行える • Challenge Binariy (CB)の提出 =>

    パッチ済みのバイナリのこと • Proof of Vulnerability (PoV)の提出 => 脆弱性の攻撃コードのこと • ラウンド後に以下が他のチームに公開される • CB • 通信パケット
  8. CGCスコアリング • スコア • Availability Score、Security Score、Evalution Scoreの乗算 • 3つのうちどれかが0になると0点

    • CB提出時にSecurity Scoreが0点になる可能性があるところが曲者 • Availability Score • 以下2つの小さい方を採用 • 1. ファイルサイズやメモリ使用量が多くなると減点 • 2. テストケースに失敗すると減点 • Security Score • 脆弱性を突かれると減点 • ただし、CBを入れ替えた場合に脆弱性を1つ以上防がないと0点 • Evalution Score • 提出したPoVが脆弱性を突けると証明すると2点、しないと1点
  9. 通常の攻防戦との違い(1) • 特殊な環境 • 専用syscall • 専用libc • ASLRなし •

    stack RWX • x86 32bit • 完全に脆弱性をついてサーバーをコントロールする必要はない • PoV-type1: 実行アドレスのコントロールを証明 • PoV-type2: 特定のメモリ上のflagの読み出し(4byte)を証明
  10. 通常の攻防戦との違い(2) • あらかじめルールが決まっている • ツールを作りこんだ方が有利 • CGCに参加している人がいるチームもあった • パッチにリスクがある •

    CBの内容が次のラウンドでバレる • バックドアを仕掛けるチームもあった • CBを入れ替え時にペナルティがある • サーバーを管理しなくて良い • DoSの対応が必要ない
  11. 関連ドキュメントなど • CBC関連ドキュメント • http://cgc-docs.legitbs.net/ • https://github.com/CyberGrandChallenge/cgc-release-documentation • https://cgc.darpa.mil/ •

    CTFの過去の問題など • https://github.com/legitbs • https://github.com/ctfs/ • CTFの開催予定表 • https://ctftime.org/ • ※今回のDEFCON CTFの各チームの実際のCBなどのデータも公開される予定