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

LINE DM 201609

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for masaakichida masaakichida
September 28, 2016
2.2k

LINE DM 201609

Avatar for masaakichida

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などのデータも公開される予定