IPヘッダにあるプロトコル番号でプロトコルを識別できます。

前回の勉強内容

ponsuke-tarou.hatenablog.com

勉強のきっかけになった問題

IPv4において,IPパケットで送られているデータが,ICMPメッセージであることを識別できるヘッダ情報はどれか。

  1. IPヘッダのプロトコル番号
  2. MACヘッダのイーサタイプ値
  3. TCPヘッダのコントロールフラグ
  4. UDPヘッダの宛先ポート番号

平成30年春期問18 ICMPを識別できるヘッダ情報|情報処理安全確保支援士.com

IPv4は、32 ビット (4 バイト) を4つに「.」で区切って表すIPです。

www.weblio.jp

IPv6は、IPv4よりたくさん割り当てられるように128 ビット (16 バイト)で表すIPです。

IPv6アドレスは『128bit』で構成されます。これは2^128通りのアドレス数を保有することになります。
IPv4とIPv6の違いについて | Netassist Blog

ICMPは、IPにおいて制御や調査に用いられるプロトコルです。

  • 正式名称:Internet Control Message Protocol

IPプロトコルの「エラー通知」や「制御メッセージ」を転送するためのプロトコルです。TCP/IPが実装されたコンピュータ間で、通信状態を確認するために使用されます。 ICMPはインターネット層(OSI参照モデルネットワーク層)で動作するプロトコルです。
TCP/IP - ICMPとは

f:id:ponsuke_tarou:20180904164518g:plain
※. ベースの図は、以下のサイト様より拝借いたしました。
TCP/IPをはじめから

ICMP Flood攻撃 と Smurf攻撃は、ICMPのpingを使った攻撃です。

ping の正体は、ICMP の中で一番有名な使われ方である『Ping 要求【Echo Request】』と『Ping 応答【Echo Reply】』で、これは宛先 IP アドレスを 指定して Ping 要求を送り、その宛先まで到達できれば送信元へ Ping 応答を返します。
https://milestone-of-se.nesuke.com/wp-content/uploads/2016/12/icmp-reply.png
【図解】ICMPとは 〜Pingの仕組みやエラー通知によるIP通信の補助〜 | SEの道標

ICMP Flood攻撃は、pingコマンドを用いて大量の要求パケットを発信することによって、攻撃対象のサーバに至るまでの回線を過負荷にしてアクセスを妨害します。
  • 英語 : ICMP Flood(洪水)

攻撃対象となるサーバに対してなるべくサイズが大きくなるようにした「ICMP echo request(ping)」を大量に送り続けることで、攻撃対象および攻撃対象が属するネットワークのリソースを枯渇させることを目的とする攻撃です。
https://www.sc-siken.com/kakomon/29_haru/img/18.gif
情報セキュリティスペシャリスト平成29年春期 午前Ⅱ 問18

Smurf攻撃は、IPアドレスを詐称してICMPの応答パケットを大量に送り付けます。

Smurf攻撃(スマーフアタック)は、ネットワークの疎通確認に使用されるICMP echo request(ping)の仕組みを悪用して、相手のコンピュータやネットワークに大量のパケットを送りつける反射型のDoS攻撃です。
攻撃者は、以下の手順で攻撃対象のサービスを妨害します。
①送信元IPアドレスを攻撃対象のコンピュータに偽装したICMP echo requestを攻撃対象が属するネットワークにブロードキャストで大量に送りつける
②ICMP echo requestを受け取ったネットワーク内の端末が一斉に攻撃対象にecho replyパケットで応答する
③大量の応答パケットの発生により攻撃対象のコンピュータおよびネットワークが過負荷状態になり正常なサービスが阻害される
情報セキュリティスペシャリスト平成26年秋期 午前Ⅱ 問12

http://www.k-fix.jp/skill/network/icmp/img/03_01.gif
株式会社K-fix

ICMP Flood攻撃 と Smurf攻撃の違いは、IPアドレスの詐称と目的です。
ICMP Flood攻撃 Smurf攻撃
IPアドレスの詐称 なし リクエストの送信元IPアドレスに自分ではなく標的のアドレスを設定し、
標的の所属するネットワークのブロードキャストアドレス当てに大量に送りつける
目的 標的のアドレスに対して大量のPing 要求を送りつけることで過負荷にさせる 標的のアドレスに対して大量のPing 応答を送りつけることで過負荷にさせる

プロトコル番号は、IPにおいてプロトコル毎に割り振られた番号です。

プロトコル番号とは、IP(Internet Protocol)で通信する際に、上位層のプロトコルがなんであるかを識別するための番号。IPデータグラムのヘッダ部に8ビットの値として記載されるもので、0から255までのいずれかとなる。
プロトコル番号とは - IT用語辞典 e-Words

プロトコル番号は、上位層のプロトコルを識別するための番号であり、IPヘッダに 8 ビット情報であります。例えばプロトコル番号が 6 の場合はTCP、17 の場合はUDPとなります。プロトコル番号の枠は0~255です。
f:id:ponsuke_tarou:20180904174136p:plain
IPプロトコル番号一覧

プロトコル番号がわかるとプロトコルに何を使っているかがわかります。

IANAのプロトコル番号の一部はこんな感じです。

Decimal Keyword Protocol
1 ICMP Internet Control Message
4 IPv4 IPv4 encapsulation
6 TCP Transmission Control
17 UDP User Datagram
41 IPv6 IPv6 encapsulation
ICMPのプロトコル番号は「1」です。

プロトコル番号は、Internet Protocol(IP)の宛先情報を含めているIPヘッダーに入っています。

https://www.infraexpert.com/studygif/tcpip4.gif
TCP/IP - IPとは

ICMPフレームの部分は、データ本体であるIPペイロードに入っています。

https://www.sc-siken.com/kakomon/30_haru/img/18.gif
平成30年春期問18 ICMPを識別できるヘッダ情報|情報処理安全確保支援士.com

ICMPフレーム部分でタイプ番号とそのコード番号がわかります。

ICMPのタイプ一覧

Type 意味
0 エコー応答(Ping要求 / Echo Request)
3 宛先到達不能
4 始点抑制
5 最適経路への変更指示
8 エコー要求(Ping応答 / Echo Reply)
9 ルータ通知
10 ルータ要求
11 TTL超過によるパケット破棄の報告
12 パケットパラメータにおけるエラー
13 タイムスタンプ
14 タイムスタンプ応答
15 インフォメーション要求
16 インフォメーション応答
17 アドレスマスク要求
18 アドレスマスク応答

f:id:ponsuke_tarou:20180904163142p:plain
TCP/IP通信プログラミング Ver.2 ICMPとPINGコマンド

f:id:ponsuke_tarou:20180904163845p:plain
第12回 TCP/IPプロトコルを支えるICMPメッセージ (1/3):基礎から学ぶWindowsネットワーク - @IT

f:id:ponsuke_tarou:20180904211559j:plain

次回の勉強内容

ponsuke-tarou.hatenablog.com