Your SlideShare is downloading. ×
CTF超入門 (for 第12回セキュリティさくら)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

71
views

Published on

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

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

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
71
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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