Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CTF超入門 (for 第12回セキュリティさくら)

60,068 views

Published on

「第12回セキュリティさくら」で発表したLT資料です

Published in: Technology
  • Be the first to comment

CTF超入門 (for 第12回セキュリティさくら)

  1. 1. こわくない CTF超入門 @kikuchan98 for 第12回セキュリティさくら
  2. 2. CTFとは Capture The Flag: 旗とり合戦 ● 攻防戦方式 ● クイズ方式
  3. 3. CTFとは Capture The Flag: 旗とり合戦 ● 攻防戦方式 (今日は割愛…) ● クイズ方式 (入門にオススメ!) サーバやプログラム、ファイル などから、フラグという文字列を 機密情報になぞらえて奪取する 遊び
  4. 4. CTFとは ● 情報通信技術を用いた 「知恵の輪」 (by @9GHzさん) (ごめん、当日、間違えてました…)
  5. 5. どんな問題が出る?
  6. 6. 問題ジャンル 一般的には ● Binary (リバースエンジニアリングなど) ● Exploits (シェルコードなど) ● Web ● Forensics ● Network など
  7. 7. CTFのすゝめ 何が身につくか: ● 情報通信技術(ICT)に関する 幅広い技術・知識 ● 高度なセキュリティ技術・知識 ● 問題解決能力 (デバッグ力)
  8. 8. 何故か?
  9. 9. 出題範囲が広い ● 暗号理論 ● 符号理論 ● 信号処理 ● 画像処理 ● 通信技術
  10. 10. 出題範囲が広い ● 組み込み技術 ● Web技術 ● 公開鍵基盤(PKI) ● プログラミング言語 ● データベース
  11. 11. 出題範囲が広い ● オペレーティングシステム ● ファイルシステム ● API (POSIX, Win32API) ● ファイルフォーマット ● 符号化
  12. 12. 出題範囲が広い ● 脆弱性,バグ ● Exploits (Bin術) ● 情報の秘匿 ● ログ解析 ● ツール ● 雑学
  13. 13.
  14. 14. ……
  15. 15. ………
  16. 16. 広すぎね?
  17. 17. だから CTF をやろう CTFを通じて、広範囲の高い技 術と知識を手に入れることがで きる ● ノウハウの塊 ● 情報の高速道路に乗れる
  18. 18. というわけで
  19. 19. やってみよう
  20. 20. 問題1
  21. 21. 問題1
  22. 22. 問題1
  23. 23. 問題1
  24. 24. 問題1
  25. 25. 問題1
  26. 26. 問題1
  27. 27. 問題1
  28. 28. 問題1
  29. 29. 解けた?
  30. 30. で、何? この問題は…
  31. 31. で、何? この問題は… ● 重要な情報が欠落している
  32. 32. で、何? この問題は… ● 重要な情報が欠落している ● そのままでは読めない
  33. 33. で、何? この問題は… ● 重要な情報が欠落している ● そのままでは読めない ● 知識があれば復元可能
  34. 34. おk?
  35. 35. じゃあこれは?
  36. 36. 問題2
  37. 37. 実は この問題も… ● 重要な情報が欠落している ● そのままでは読めない ● 知識があれば復元可能
  38. 38. 復元可能!
  39. 39. どうするか?
  40. 40. 仕様 http://en.wikipedia.org/wiki/QR_code
  41. 41. 仕様 http://en.wikipedia.org/wiki/QR_code
  42. 42. つまり データが 残ってる
  43. 43. 大差無い
  44. 44. 詳しい手順は… 吉村くんの write-up http://eleclog.quitsq.com/2014/01/seccon -ctf-2013-online-forensics-400.html または 「SECCON 2013 qr」 で検索
  45. 45.
  46. 46. 問題3 (暗号) ● 次の暗号文を解読しなさい Uryyb, jrypbzr gb  Frphevgl FNXHEN. Jr ubcr lbh'ir  rawblrq gur pbasrerapr.
  47. 47. 暗号とは ● 解読方法を知らない人には 解読できない ● 意味の無い情報に見える
  48. 48. 問題3 (暗号) ● 次の暗号文を解読しなさい Uryyb, jrypbzr gb  Frphevgl FNXHEN. Jr ubcr lbh'ir  rawblrq gur pbasrerapr.
  49. 49. 問題3 (暗号) ● 次の暗号文を解読しなさい Uryyb, jrypbzr gb  Frphevgl FNXHEN. Jr ubcr lbh'ir  rawblrq gur pbasrerapr.
  50. 50. 問題3 (暗号) ● 次の暗号文を解読しなさい Uryyb, jrypbzr gb  Frphevgl FNXHEN. Jr ubcr lbh'ir  rawblrq gur pbasrerapr. スペース、記号の位置はそのまま? ⇒ アルファベットだけが対象?
  51. 51. 問題3 (暗号) ● 次の暗号文を解読しなさい Uryyb, jrypbzr gb  Frphevgl FNXHEN. Jr ubcr lbh'ir  rawblrq gur pbasrerapr.
  52. 52. 問題3 (暗号) ● 次の暗号文を解読しなさい Uryyb, jrypbzr gb  Frphevgl FNXHEN. Jr ubcr lbh'ir  rawblrq gur pbasrerapr.
  53. 53. 考える ● 記号・スペースがそのまま ● 文章そのままの可能性 ● まずは、換字式暗号を仮定 ● 大文字で始まる ● とりあえず、英語を仮定
  54. 54. 考える ● r が多い ● r ⇒ e を仮定する ● ‘ir から ’ve を予想 ● i ⇒ v を仮定 ● r ⇒ e の仮定と矛盾しない
  55. 55. 問題3 (暗号) ● 当てはめる Uryyb, jrypbzr gb  Frphevgl FNXHEN. Jr ubcr lbh'ir  rawblrq gur pbasrerapr.
  56. 56. 問題3 (暗号) ● 当てはめる Ueyyb, jeypbze gb  Fephevgl FNXHEN. Je ubce lbh've  eawbleq gue pbaseeeape.
  57. 57. 考える ● gur から the を予想 ● g ⇒ t, u ⇒ h の仮定 ● r ⇒ e の仮定と矛盾しない ● gb から to を予想 ● b ⇒ o の仮定 ● g ⇒ t の仮定と矛盾しない
  58. 58. 考える ● ここまでの対応表 ● r ⇒ e ● i ⇒ v ● g ⇒ t ● u ⇒ h ● b ⇒ o
  59. 59. 問題3 (暗号) ● 当てはめる Heyyo, jeypoze to  Fephevtl FNXHEN. Je hoce loh've  eawoleq the poaseeeape.
  60. 60. 別の角度からも考える ● ASCIIコード(16進数)で考える ● 0x72 ⇒ 0x65 ● 0x69 ⇒ 0x76 ● 0x67 ⇒ 0x74 ● 0x75 ⇒ 0x68 ● 0x62 ⇒ 0x6f
  61. 61. 別の角度からも考える ● 引いてみる ● 0x72 - 0x65 =  0x0d ● 0x69 - 0x76 = ­0x0d (0xf3) ● 0x67 - 0x74 = ­0x0d (0xf3) ● 0x75 - 0x68 =  0x0d ● 0x62 - 0x6f = ­0x0d (0xf3)
  62. 62. 問題3 (暗号) ● 当てはめる Heyyo, jeypoze to  Fephevtl FNXHEN. Je hoce loh've  eawoleq the poaseeeape.
  63. 63. 問題3 (暗号) ● 当てはめる Hello, welcome to  Fephevtl FNXHEN. Je hoce loh've  eawoleq the poaseeeape.
  64. 64. 問題3 (暗号) ● 当てはめる Hello, welcome to  Security SAKURA. Je hoce loh've  eawoleq the poaseeeape.
  65. 65. 問題3 (暗号) ● 当てはめる Hello, welcome to  Security SAKURA. We hope you've eawoleq the poaseeeape.
  66. 66. 問題3 (暗号) ● 当てはめる Hello, welcome to  Security SAKURA. We hope you've enjoyed the conference.
  67. 67. 問題3 (暗号) 答え ● 単換字式暗号 ● アルファベットが、13文字分 ずれている ● 別名 ROT13
  68. 68. 問題3 (暗号) http://en.wikipedia.org/wiki/ROT13
  69. 69. 問題3 (暗号) 別解 ● 見た瞬間、何故か読める ● 勘で解く 「どうせROT13じゃねぇの?」 ● 当てずっぽうで色々な古典暗号 を試す
  70. 70. 問題3 (暗号) 別解 ● "Uryyb" でググる!
  71. 71. 問題3 (暗号)
  72. 72. 問題3 (暗号)
  73. 73. じゃあこれは?
  74. 74. 問題4 (暗号)
  75. 75. 問題4 (暗号)
  76. 76. 一方…
  77. 77. ステガノグラフィとは ● 解読方法を知らない人には 解読できない ● 別の情報に見える
  78. 78. 問題5 (ステガノ)
  79. 79. 問題5 (ステガノ)
  80. 80. 問題5 (ステガノ)
  81. 81. 問題5 (ステガノ) 全部奇数 例) R: 209 G: 173 B: 151
  82. 82. 問題5 (ステガノ) この辺だけ偶数 例) R: 212 G: 140 B: 70
  83. 83. プログラム #include <stdio.h> #include <stdlib.h> #include <string.h> main() {         char buf[1024];         int ch;         fputs(fgets(buf, sizeof(buf), stdin), stdout);         fputs(fgets(buf, sizeof(buf), stdin), stdout);         fputs(fgets(buf, sizeof(buf), stdin), stdout);         while ((ch = getchar()) != EOF) {                 putchar((ch & 1) ? ch / 2 : 255);         } }
  84. 84. プログラム #include <stdio.h> #include <stdlib.h> #include <string.h> main() {         char buf[1024];         int ch;         fputs(fgets(buf, sizeof(buf), stdin), stdout);         fputs(fgets(buf, sizeof(buf), stdin), stdout);         fputs(fgets(buf, sizeof(buf), stdin), stdout);         while ((ch = getchar()) != EOF) {                 putchar((ch & 1) ? ch / 2 : 255);         } }
  85. 85. プログラム #include <stdio.h> #include <stdlib.h> #include <string.h> main() {         char buf[1024];         int ch;         fputs(fgets(buf, sizeof(buf), stdin), stdout);         fputs(fgets(buf, sizeof(buf), stdin), stdout);         fputs(fgets(buf, sizeof(buf), stdin), stdout);         while ((ch = getchar()) != EOF) {                 putchar((ch & 1) ? ch / 2 : 255);         } } 奇数のときは、明るさ1/2 偶数のときは、白
  86. 86. 実行 % pngtopnm pizza.png | ./a.out  | pnmquant 256 | ppmtosixel
  87. 87. 実行 % pngtopnm pizza.png | ./a.out  | pnmquant 256 | ppmtosixel
  88. 88. まとめ ● CTFはICTを活用した知恵の輪 ● 技術力の向上 ● 腕試し ● セキュリティ意識の向上 ● PC1台で簡単に遊べる ● こわくない
  89. 89. Gunax lbh sbe yvfgravat!
  90. 90. Thnax loh soe yvfgeavat!
  91. 91. Thnnx loh soe yvfgenvnt!
  92. 92. Thank you for listening!
  93. 93. あとがき(追記) ● CTFの出題範囲っぽいものを書き出してみてた けど、本当に多すぎたのでボツ。 次ページ以降に載せてるので、キーワード集と かに使ってみてね。 分類が前のページと違ってるけどキニシナイ。 ● 実在のCTFの紹介をするの忘れてた…。 常設では ksnctf や akictf とか。 オフラインだと ctf4b や SECCON といった活 動があるよ。
  94. 94. 暗号理論 ● 古典暗号 ● 換字式暗号 ● 転置式暗号 ● 現代暗号 ● 共通鍵暗号 ● 公開鍵暗号
  95. 95. 暗号理論 ● 暗号解読, 攻撃法 ● 暗号文単独攻撃 ● 既知平文攻撃 ● サイドチャネル攻撃 ● バースデー攻撃
  96. 96. 符号理論 ● 圧縮, 伸長 ● ハフマン符号 ● LZ法 ● 誤り検出 ● チェックサム, CRC ● パリティ検査 ● ハッシュ関数 (MD5, sha1 など)
  97. 97. 符号理論 ● 誤り訂正 ● リードソロモン, BCH ● 疑似乱数 ● 線形合同法 (rand, random) ● Mersenne Twister ● エンコード, デコード ● Base64, uuencode, BinHex
  98. 98. 信号処理 ● フーリエ変換 ● 変調, 復調 ● AM, FM ● PSK ● PWM ● フィルター ● LPF, HPF
  99. 99. 画像処理 ● 2値化 ● エッジ検出 ● 画像認識 ● 文字認識 ● 図形認識 ● 顔認識
  100. 100. 通信技術 ● 無線技術 ● ネットワーク (プロトコル) ● TCP/IP ● HTTP, HTTPS ● FTP
  101. 101. 組み込み系技術 ● 電子回路 ● トランジスタ, LED ● 論理回路 ● 組み合わせ回路 ● 順序回路 ● FPGA ● Verilog, VHDL
  102. 102. Web技術 ● HTML, CSS, JavaScript ● Cookie ● HTTP ● Headers (Host, Cookie) ● Methods (GET, POST) ● Status codes (200, 404, 401)
  103. 103. 公開鍵基盤(PKI) ● 暗号スイート ● 認証局(CA) ● 証明書, 検証手段 ● SSL, TLS
  104. 104. プログラミング言語 ● C, C++ ● Python ● JavaScript ● アセンブラ ● x86, x86_64 ● arm ● sh3, sh4
  105. 105. オペレーティングシステム UNIX系OS, Windowsなどの OS固有な部分 ● 操作方法, コマンド ● 特殊なファイルの場所 ● 文化 ● ハマりどころ
  106. 106. API ● POSIX ● Win32 API ● socket
  107. 107. ファイルシステム ● FAT, FAT32, VFAT ● FFS ● Ext2fs ● NTFS ● ZFS
  108. 108. ファイルフォーマット ● JPEG, PNG, GIF, BMP ● ZIP, LZH, 7z, CAB ● EXE, ELF, a.out ● WAV ● AVI, MP4
  109. 109. データベース ● SQLite ● MySQL ● PostgreSQL ● Oracle ● MongoDB
  110. 110. 雑学 ● モールス信号, 手旗信号 ● 難解言語 ● パンチカード ● 文字コード (闇) ● バーコード, 2次元バーコード
  111. 111. 各種ツール ● IDA, gdb, binutils ● デコンパイラ ● Metasploit ● tcpdump, wireshark ● nc, wget, curl
  112. 112. 脆弱性, バグ ● メモリ破壊 ● パーミッション不備 ● 入出力の検証, 無害化漏れ ● 設定不備 ● 設計不備
  113. 113. 脆弱性の攻撃手法 ● 既知のexploits ● ディレクトリトラバーサル ● バッファオーバーフロー, ROP ● Code injection ● SQL injection, Command injection ● XSS, CSRF ● 中間者攻撃(MITM)
  114. 114. 情報の秘匿 ● 暗号化 ● 難読化, アンパック ● ステガノグラフィ
  115. 115. 痕跡の情報 ● デバッグ情報 ● ログファイル ● ヒストリーファイル ● タイムライン解析

×