MyUtils

View on GitHub

Networkについて

OSI参照モデル--------------|
|     アプリケーション層    | <- HTTP通信はここ
|    プレゼンテーション層  |
|       セッション層       | <- Cとかで扱うソケットはこの層
|------------------------|
|     トランスポート層      | <- TCP/UDP通信はここ,トランスポートプロトコルを提供
|                        |
|------------------------|
|                    | <- IP(IPプロトコル)はここ、パケットレベルの通信を扱う
|       ネットワーク層     |    ICMP(Pingとかで使うプロトコル)はこの層を使う
|                        |    パケットサイズに制限がある場合のパケット分割機能も提供している。
|                        |    コネクションの維持、パケットの確実な配送の確立はトランスポート層が担う。
|------------------------|
|      データリンク層      | <-イーサネットのプロトコルがこの階層にあたる。
|                        |    この辺でMACアドレスとかを管理してる。
|                        |    arpはここと、ネットワーク層を使ってIPから
|                        |    MACアドレスを割り当ててIPに対応したMACアドレス宛に通信を行う
|------------------------|    
|          物理層         |
|                        |
|------------------------|


TCPとUDPの差異について

ソケットについて

ARP(Address Resolution Protocol)とは

ネットワークのスニッフィング

『スニッフィング(snifing)』 : 他の機器宛てに送られるパケットをキャプチャする行為。

tcpdump -l -X 'ip host 172.17.0.2'
dsniff -n

生のソケットのスニッフィング

生のソケットに関する問題はlibpcapを使うことで緩和できたりする。 BSDやSolarisなどプラットフォームでの問題も緩和してくれる。

また、生のソケットを使用して偽のパケットを作成し、ネットワークに注入するのに libnetというライブラリを使える。これもプラットフォーム間の非互換性を吸収してくれる。

アクティブスニッフィング

スイッチングネットワーク環境では、パケットは宛先となっているMACアドレスに対してのみ送られる。そのため、プロミスキャストモードでのスニッフィングの心配がなくなる。 しかし、送信元のアドレスが実際に送信したアドレスであることを保証していないため、 送信元を詐称することでハッキングが可能となる。 このように送信元を詐称することをスプーフィングという。

で、以下のようにシステムCがA,Bのパケットをスニッフィングする場合、以下のようにして MACアドレスを詐称し、A,B間の通信でCを経由させるようにすることで、パケットのキャプチャを実現できる。 このようにしてARPキャッシュを書き換える行為をARPキャッシュポイズニングと呼ぶ。 また、ローカルのネットワークから外部のインターネットに接続する際に「ゲートウェイ」を通るようにルーティングされる。 そのため、ゲートウェイのIP,MACアドレスと監視対象の機器のIP,MACアドレスを使うことで外部とのやりとりをスニッフィングすることができる。

システムA------------------|    システムB------------------|
|    IP : ipA             |   |    IP : ipB             |
|    Mac: macA            |   |    Mac: macB            |
| 内部APRキャッシュ------|   |   | 内部APRキャッシュ------|  |
| | IP : ipB           |  |   | | IP : ipA           |  |
| | Mac: macC          |  |   | | Mac: macC          |  |
| | (Macアドレスを詐称)  |  |    || (Macアドレスを詐称)   |  |                 
| |------------------- |  |   | |--------------------|  |
|-------------------------|   |-------------------------|

              ↑ (BからAへパケットを送信する場合) ↓
                ↓ (AからBへパケットを送信する場合) ↑

            システムC(攻撃者)-----------|
            |    IP : ipC             |
            |    Mac: macC            |
            | 内部APRキャッシュ------|  |
            | | IP : ipA           |  |
            | | Mac: macA          |  |
            | | IP : ipB           |  |
            | | Mac: macB          |  |
            | |--------------------|  |
            |-------------------------|

ネットワークの攻撃形態について

02_Network(その2)に続く