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.

CpawCTF 勉強会 Network

10,554 views

Published on

CpawCTF勉強会で発表したNetwork講習の資料です。 #CpawCTF

Published in: Technology

CpawCTF 勉強会 Network

  1. 1. 勉強会 - Network - 2016/3/28 1
  2. 2. ネットワークといえば? Router Switch Packet Protocol 大きく分けて2つの側面 ① ハードウェア(通信を行うための機器、ケーブル) ② ソフトウェア(通信を行う方法など) Client Server 2016/3/28 3
  3. 3. 通信を行う方法 ■ プロトコル(決まり)に従って通信を行う ■ なぜプロトコルが必要なのか – コンピュータは言われたことしか実行できない – ルールを決めないと正しく会話できない ■ プロトコル理解すること ≒ ネットワークを理解す ること ■ プロトコルの理解は必要不可欠 2016/3/28 4
  4. 4. CTFに必要なネットワークの知識 2016/3/28 5 ■ ネットワークプロトコルについての知識 – 基本的なこと – 学校、本、Webサイトなどで学べる内容 – 今回はこの内容を中心に解説 ■ ネットワークを流れる通信を解析する方法 – 通信を解析するツールの使い方 – ツールを使ってどう解析するか – 今回はちょっと触れます
  5. 5. CTFでネットワークの知識は必要か ■ 問題を解くのに必要 – pcapファイルを読む問題 – パケットを変更して送信する問題 ■ ただし、、ネットワーク関連の問題は出題が減少し ている – 差がつきにくい – 多くの人が知っている、解ける ■ 最低限の知識は知っておく必要がある 2016/3/28 6
  6. 6. 今回の内容 ■ ネットワークプロトコルについて ■ 実際に流れている通信を見るには? ■ CTFのネットワーク問題を解いてみよう ■ “CTF初心者”というより、”ネットワーク初心者”向 けかも? 2016/3/28 7
  7. 7. ネットワークプロトコル 2016/3/28 8
  8. 8. ネットワークプロトコル ■ 通信をする時に生じる様々な課題 ■ 決まり(プロトコル)を作って課題を解決 どこに送れば 良いかな? 返事が来な かったらどう しよう どこに送れば 良いかな? どこに送れば 良いかな? どのデータを 返そう どのデータを 要求しよう ServerClient Router 返事が来な かったらどう しよう 2016/3/28 9
  9. 9. ネットワークプロトコル ■ 一つのプロトコルですべて解決しない – 役割毎にプロトコルの種類(階層)が分かれている – ぞれぞれの役割のプロトコルを使う OSI参照モデル TCP/IP 役割 アプリケーション層 アプリケーション層 アプリケーションでのデータのやり取りの方 法 プレゼンテーション 層 セッション層 トランスポート層 トランスポート層 通信を行うアプリケーション間の通信、通信 の制御 ネットワーク層 インターネット層 複数のネットワークを相互接続した環境での 機器間の通信 データリンク層 ネットワーク インターフェース層 実際のネットワークハードウェアが通信を実 現する物理層 2016/3/28 10
  10. 10. プロトコルの階層 ■ さっきの例に当てはめると… インターネット層 どこに送れば良い かな? インターネット層 どこに送れば良い かな? インターネット層 どこに送れば良い かな? トランスポート層 返事が来なかった らどうしよう アプリケーション層 どのデータを要求し よう アプリケーション層 どのデータを返そう トランスポート層 返事が来なかった らどうしよう ServerPC Router 2016/3/28 11
  11. 11. 各層の代表的なプロトコル TCP/IP 役割 プロトコルの例 アプリケーション層 アプリケーションでのデータ のやり取りの方法 HTTP, FTP, SMTP, POP, TELNET, SSH, NTP, トランスポート層 通信を行うプロセス間の通信、 通信の制御 TCP, UDP インターネット層 複数のネットワークを相互接 続した環境での機器間の通信 IP, ICMP ネットワーク インターフェース層 実際のネットワークハード ウェアが通信を実現する Ethernet, IEEE802.11, PPPなど 2016/3/28 12
  12. 12. データのカプセル化 ■ 下位層のプロトコルで上位層のプロトコルを包む – 上位層のデータに下位層の情報ヘッダを付与する ■ 例. HTTP通信 – Ethernet、IP、TCP、HTTPプロトコルが使われる Ethernet header IP header TCP header HTTP TCP/IP アプリケーション層 (HTTP) トランスポート層 (TCP) インターネット層 (IP) ネットワーク インターフェース層 (Ethernet) HTTP HTTP HTTP TCP header IP header TCP header 2016/3/28 13
  13. 13. Protocol Data Unit ■ プロトコルが扱うデータ単位 ■ ヘッダ部+データ部で構成されている ■ レイヤによって呼び方が変わる – ネットワークインターフェス層 : フレーム – インターネット層 : パケット – トランスポート層 : セグメント ※赤枠はヘッダ部、それ以外はデータ部 ■ 「データを送る単位」の意味として「パケット」と 呼ぶことが多い 2016/3/28 14 Ethernet header HTTPIP header TCP header HTTPIP header TCP header HTTPTCP header
  14. 14. TCP/IP アプリケーション層 (HTTP) トランスポート層 (TCP) インターネット層 (IP) ネットワーク インターフェース層 (Ethernet) TCP/IP アプリケーション層 (HTTP) トランスポート層 (TCP) インターネット層 (IP) ネットワーク インターフェース層 (Ethernet) パケットの送受信 2016/3/28 15 EthernetIPTCPHTTP IPTCPHTTP TCPHTTP HTTP <html> <body> … </body> </html> <html> <body> … </body> </html> 階層ごとに見るヘッダが異なる Ethernet IP TCP HTTP IP TCP HTTP TCP HTTP HTTP TCPヘッダ を付与 IPヘッダを 付与 Ethernet ヘッダを付与 Ethernet ヘッダを解析 IPヘッダを 解析 TCPヘッダ を解析 パケット パケット ■ 例. Webページの閲覧
  15. 15. 実際の通信を見てみよう ■ Wiresharkを使って通信を見てみる – GUIのプロトコル解析ツール – ネットワークを流れるパケットのキャプチャ – 記録したパケットの表示、解析 – フィルタ機能 – 統計機能 ■ pcapファイルを開く – キャプチャしたパケットを記録したファイル – CTFではよく出題されるファイル形式 ■ 今回は練習用のパケットを使う – https://ctf-study.cpaw.site/questions.php?qnum=4 2016/3/28 16
  16. 16. pcapを開く ■ Wiresharkの入ったPCでexample.pcapを開く 2016/3/28 17
  17. 17. Wiresharkの解析画面 2016/3/28 18 Display Filter ディスプレイフィルタ Packet List パケットの一覧 Packet Details パケットの詳細 Packet Bytes パケットのバイト表示
  18. 18. 実際に流れてるデータ 2016/3/28 19 ■ Packet Bytesの部分 ■ よくわからない…
  19. 19. 実際に流れているデータ ■ Packet Detailで選択 (Wiresharkが解析) – 選択した情報がデータのどの部分かハイライトされる 2016/3/28 20
  20. 20. 実際に流れているデータ 2016/3/28 21 Ethernet IP TCP HTTP
  21. 21. Ethernet ■ ネットワークインターフェス層のプロトコル ■ 一般的なLANで使われている ■ CTFにおいてはあまり重要ではない – ヘッダの構造がシンプル ■ 送信元MACアドレス ■ 送信先MACアドレス ■ インターネット層のプロトコル情報 ■ FLAG情報は入らない – MACアドレスから問題を作った環境を推定できるくらい 2016/3/28 22
  22. 22. IP (Internet Protocol) ■ インターネット層のプロトコル ■ インターネットでデータを伝送するのに使用 ■ ネットワークを知る上では必ず理解 ■ IPのヘッダフォーマット 2016/3/28 23 Version Length Type of Service Total Length Identification Flags Fragment Offset Time to Live Protocol Header Checksum Source Address Destination Address Options Data 0 3116
  23. 23. IP (Internet Protocol) 2016/3/28 24
  24. 24. IP (Internet Protocol) ■ IPアドレス – プライベートIPアドレス ■ 10.0.0.0/8, 172.16.0.0/16, 192.168.0.0/24 ■ オンラインCTF → ファイルの中に答えがある ■ オフラインCTF → そのアドレスにアクセスできる可能性 – グローバルIPアドレス ■ 上記のアドレスとマルチキャスト、グローバルキャストを除いた アドレス ■ オンラインCTF → アドレスにアクセスできる可能性 ■ オフラインCTF → ファイルの中に答えがある可能性 – IPアドレスは答えの場所を探すヒントになる 2016/3/28 25
  25. 25. TCP (Transimission Control Protocol) ■ トランスポート層のプロトコル ■ 役割 – どのアプリケーションに通信を送るか – 通信相手と接続を確立して信頼性のある通信を実現 ■ TCPヘッダフォーマット 2016/3/28 26 Source Port Destination Port Sequence Number Acknowledgment Number header length Reserved U R G A C K P S H R S T S Y N F I N Window Size Checksum URG Pointer Options Data 0 3116
  26. 26. TCP (Transimission Control Protocol) 2016/3/28 27
  27. 27. TCP (Transimission Control Protocol) ■ ポート番号 – アプリケーションを識別する番号 – 0 - 1023 : Well Known Port ■ SSH 22 ■ TELNET 23 ■ DNS 53 ■ HTTP 80 ■ HTTPS 443 ■ など – エフェメラルポート ■ クライアント側が使うポート番号 2016/3/28 28
  28. 28. TCP (Transimission Control Protocol) ■ コネクションの確立 – 3ウェイハンドシェイク 2016/3/28 29 Client Server SYN SYN/ACK ACK
  29. 29. TCP (Transimission Control Protocol) 2016/3/28 30 – パケットキャプチャで確認 – 通信を行う前に3way hand shakeをしている
  30. 30. TCP (Transimission Control Protocol) ■ コネクション確立後 – データの送受信が可能になる – シーケンス番号、確認応答番号を用いて正常か確認 2016/3/28 31 seq = 1, ack = 1, len=389 byte flag = PSH, ACK Data = GET / HTTP/1.1 seq = 390, ack = 957, len=0 byte flag = ACK Client Server seq = 1、ack =390, len=956 byte flag = PSH, ACK Data = HTTP/1.1 200 OK seq = 1、ack =390, len=0 byte flag = ACK
  31. 31. TCP (Transimission Control Protocol) ■ 同じTCPコネクションのデータをまとめて表示 – Follow TCP Stream – CTFにおいては重要な機能 2016/3/28 32 Ethernet IP TCP HTTP Ethernet IP TCP HTTP Ethernet IP TCP HTTP Ethernet IP TCP HTTP
  32. 32. 演習 ■ 今日使った知識を使って問題を解いて下さい – https://ctf-study.cpaw.site/questions.php?qnum=5 2016/3/28 33
  33. 33. まとめ ■ プロトコルの知識は重要 – 特にTCP/IPプロトコルは全員が知っておくべき ■ まずここからネットワークは勉強しましょう – オススメの文献 ■ マスタリングTCP/IP 入門編 ■ 3分間Networking – http://www5e.biglobe.ne.jp/%257eaji/3min/ 2016/3/28 34

×