cpawctf 勉強会 network

33
勉強会 - Network - 2016/3/28 1

Upload: takaaki-hoyo

Post on 19-Feb-2017

1.500 views

Category:

Technology


1 download

TRANSCRIPT

勉強会- Network -

2016/3/28 1

ネットワークといえば?

Router

Switch

Packet

Protocol

大きく分けて2つの側面① ハードウェア(通信を行うための機器、ケーブル)② ソフトウェア(通信を行う方法など)

Client

Server

2016/3/28 3

通信を行う方法

■プロトコル(決まり)に従って通信を行う

■なぜプロトコルが必要なのか

– コンピュータは言われたことしか実行できない

– ルールを決めないと正しく会話できない

■プロトコル理解すること ≒ ネットワークを理解すること

■プロトコルの理解は必要不可欠

2016/3/28 4

CTFに必要なネットワークの知識

2016/3/28 5

■ ネットワークプロトコルについての知識

– 基本的なこと

– 学校、本、Webサイトなどで学べる内容

– 今回はこの内容を中心に解説

■ネットワークを流れる通信を解析する方法

– 通信を解析するツールの使い方

– ツールを使ってどう解析するか

– 今回はちょっと触れます

CTFでネットワークの知識は必要か

■問題を解くのに必要

– pcapファイルを読む問題

– パケットを変更して送信する問題

■ただし、、ネットワーク関連の問題は出題が減少している

– 差がつきにくい

– 多くの人が知っている、解ける

■最低限の知識は知っておく必要がある

2016/3/28 6

今回の内容

■ネットワークプロトコルについて

■実際に流れている通信を見るには?

■CTFのネットワーク問題を解いてみよう

■ “CTF初心者”というより、”ネットワーク初心者”向けかも?

2016/3/28 7

ネットワークプロトコル

2016/3/28 8

ネットワークプロトコル

■通信をする時に生じる様々な課題

■決まり(プロトコル)を作って課題を解決

どこに送れば良いかな?

返事が来なかったらどうしよう

どこに送れば良いかな?

どこに送れば良いかな?

どのデータを返そう

どのデータを要求しよう

ServerClient Router返事が来なかったらどうしよう

2016/3/28 9

ネットワークプロトコル

■一つのプロトコルですべて解決しない

– 役割毎にプロトコルの種類(階層)が分かれている

– ぞれぞれの役割のプロトコルを使う

OSI参照モデル TCP/IP 役割

アプリケーション層

アプリケーション層アプリケーションでのデータのやり取りの方法

プレゼンテーション層

セッション層

トランスポート層 トランスポート層通信を行うアプリケーション間の通信、通信の制御

ネットワーク層 インターネット層複数のネットワークを相互接続した環境での機器間の通信

データリンク層 ネットワークインターフェース層

実際のネットワークハードウェアが通信を実現する物理層

2016/3/28 10

プロトコルの階層

■さっきの例に当てはめると…

インターネット層どこに送れば良い

かな?

インターネット層どこに送れば良い

かな?

インターネット層どこに送れば良い

かな?

トランスポート層返事が来なかったらどうしよう

アプリケーション層どのデータを要求し

よう

アプリケーション層どのデータを返そう

トランスポート層返事が来なかったらどうしよう

ServerPC Router

2016/3/28 11

各層の代表的なプロトコル

TCP/IP 役割 プロトコルの例

アプリケーション層アプリケーションでのデータのやり取りの方法

HTTP, FTP, SMTP, POP, TELNET, SSH, NTP,

トランスポート層通信を行うプロセス間の通信、通信の制御

TCP, UDP

インターネット層複数のネットワークを相互接続した環境での機器間の通信

IP, ICMP

ネットワークインターフェース層

実際のネットワークハードウェアが通信を実現する

Ethernet, IEEE802.11, PPPなど

2016/3/28 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

Protocol Data Unit

■プロトコルが扱うデータ単位

■ヘッダ部+データ部で構成されている

■レイヤによって呼び方が変わる

– ネットワークインターフェス層 : フレーム

– インターネット層 : パケット

– トランスポート層 : セグメント

※赤枠はヘッダ部、それ以外はデータ部

■「データを送る単位」の意味として「パケット」と呼ぶことが多い

2016/3/28 14

Ethernet header HTTPIP header TCP header

HTTPIP header TCP header

HTTPTCP header

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ページの閲覧

実際の通信を見てみよう

■Wiresharkを使って通信を見てみる

– GUIのプロトコル解析ツール

– ネットワークを流れるパケットのキャプチャ

– 記録したパケットの表示、解析

– フィルタ機能

– 統計機能

■ pcapファイルを開く

– キャプチャしたパケットを記録したファイル

– CTFではよく出題されるファイル形式

■今回は練習用のパケットを使う

– https://ctf-study.cpaw.site/questions.php?qnum=4

2016/3/28 16

pcapを開く

■Wiresharkの入ったPCでexample.pcapを開く

2016/3/28 17

Wiresharkの解析画面

2016/3/28 18

Display Filter

ディスプレイフィルタ

Packet Listパケットの一覧

Packet Detailsパケットの詳細

Packet Bytesパケットのバイト表示

実際に流れてるデータ

2016/3/28 19

■ Packet Bytesの部分

■よくわからない…

実際に流れているデータ

■ Packet Detailで選択 (Wiresharkが解析)

– 選択した情報がデータのどの部分かハイライトされる

2016/3/28 20

実際に流れているデータ

2016/3/28 21

Ethernet IP TCP HTTP

Ethernet

■ネットワークインターフェス層のプロトコル

■一般的なLANで使われている

■CTFにおいてはあまり重要ではない

– ヘッダの構造がシンプル

■ 送信元MACアドレス

■ 送信先MACアドレス

■ インターネット層のプロトコル情報

■ FLAG情報は入らない

– MACアドレスから問題を作った環境を推定できるくらい

2016/3/28 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

IP (Internet Protocol)

2016/3/28 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

TCP (Transimission Control Protocol)■トランスポート層のプロトコル

■役割

– どのアプリケーションに通信を送るか

– 通信相手と接続を確立して信頼性のある通信を実現

■TCPヘッダフォーマット

2016/3/28 26

Source Port Destination Port

Sequence Number

Acknowledgment Number

headerlength

ReservedURG

ACK

PSH

RST

SYN

FIN

Window Size

Checksum URG Pointer

Options

Data

0 3116

TCP(Transimission Control Protocol)

2016/3/28 27

TCP(Transimission Control Protocol)■ポート番号

– アプリケーションを識別する番号

– 0 - 1023 : Well Known Port

■ SSH 22

■ TELNET 23

■ DNS 53

■ HTTP 80

■ HTTPS 443

■ など

– エフェメラルポート

■ クライアント側が使うポート番号

2016/3/28 28

TCP(Transimission Control Protocol)■コネクションの確立

– 3ウェイハンドシェイク

2016/3/28 29

Client Server

SYN

SYN/ACK

ACK

TCP(Transimission Control Protocol)

2016/3/28 30

– パケットキャプチャで確認

– 通信を行う前に3way hand shakeをしている

TCP(Transimission Control Protocol)■コネクション確立後

– データの送受信が可能になる

– シーケンス番号、確認応答番号を用いて正常か確認

2016/3/28 31

seq = 1, ack = 1, len=389 byteflag = PSH, ACKData = GET / HTTP/1.1

seq = 390, ack = 957, len=0 byteflag = ACK

Client Server

seq = 1、ack =390, len=956 byteflag = PSH, ACKData = HTTP/1.1 200 OK

seq = 1、ack =390, len=0 byteflag = ACK

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

演習

■今日使った知識を使って問題を解いて下さい

– https://ctf-study.cpaw.site/questions.php?qnum=5

2016/3/28 33

まとめ

■プロトコルの知識は重要

– 特にTCP/IPプロトコルは全員が知っておくべき

■まずここからネットワークは勉強しましょう

– オススメの文献

■ マスタリングTCP/IP 入門編

■ 3分間Networking

– http://www5e.biglobe.ne.jp/%257eaji/3min/

2016/3/28 34