The Basics Of Networking
Network Atchitecture and Protocols
ネットワークとは何か? 情報共有のため互いに接続された2台以上のコンピュータのセット. ノードはOS, ハードが異なってもプロトコルを正しく理解し従う限り正しく通信できる. 例として,プロトコルはこれらの1つ以上を達成する.
- セッションの維持: 接続の確立と終了
- アドレスによるノードの識別: ネットワーク上の正しいノードの識別
- フロー制御: ネットワークで転送可能なデータ量は限られるため,フロー管理によりスループットを向上させ,レイテンシを短縮する.
- データ到着順序の保証: ネットワークはデータの順序を保証しないため,正しい順序で配信されるようにデータを並び替える.
- エラー検知と修復
- データの形式と変換: データのフォーマットとエンコード.デコード方式を指定可能
The Internet Protocol Suite
TCP/IPは現代ネットワークの標準である.これはインターネット上でトラフィックを4層に分割するモデルの一部である.
Link Layer
ローカルネットワークのノード間で情報転送のための物理機構を規定する.Ethernet,Point-to-Point Protocol(PPP) 物理的なネットワーク接続と強調し電気信号,光信号などの物理媒体でデータを送信する.
Internet Layer
ネットワークノードのアドレッシング機構を規定.IPv4, IPv6
Transport Layer
クライアント,サーバー間の接続機構を規定.場合によっては,データの転送順序保証や.サービス毎にナンバリングすることでサービスの多重接続性を提供する.TCP, UDP
Application Layer(本書は主にこのレイヤーを扱う)
ユーザーアプリケーションと対話する.
- HyperText Tramsport Protocol(HTTP): Webページのコンテンツの転送形式,方法を規定.
- Simple Mail Transport Protocol(SMTP): メール転送方式を規定.
- Domain Name System(DNS) Protocol: 名前をノード識別番号に変換.
アプリケーションはユーザにサービスを提供する関連機能の集合である. メールアプリケーションが提供するサービスはネットワークを介したメッセージの送受信である.
アプリケーションは以下の要素を含む.
Network communication
ネットワークを介して通信し,送受信されるデータを処理する.(SMTTP, POP3)
Content Parsers
ネットワークから受信するデータは内容を抽出し処理する必要がある.メールでは本文としてテキストデータ,画像,動画などを含む.
User interface
ユーザに受信データを表示し,新規送信データの作成を可能にする.Webブラウザ内でHTMLを使ったメールを表示するなど.
Data Encapsulation
各レイヤーは上からのデータをカプセル化するためレイヤー間で通信可能である.各レイヤーで送受信されるデータはプロトコルデータユニット(UDP)と呼ばれる.
Headers, Footers, and Addresses
PDUにはペイロードが含まれ,先頭にはデータ送信に必要なデータ,末尾にはエラーチェック情報などを含める. TCPヘッダにはポート番号が含まれる.これによる1ノードが複数のネットワーク接続を持てる.TCPペイロードとヘッダはセグメントと呼ばれ,UDPペイロードとヘッダはデータグラムと呼ばれる. IPヘッダにはアドレスが含まれる.宛先アドレスでデータをネットワーク上の特定のノードに送信できる.送信元アドレスにより返信が実現される.IPペイロードとヘッダはパケットと呼ばれる. EthernetヘッダにはMACアドレスが含まれる.イーサネットアダプタ製造時に設定される.ペイロードとヘッダはフレームと呼ばれる.
Data Transmission
1から2にIPによりデータを送信する.(3のスイッチは全ノード間でフレームを転送する.スイッチはリンク層でのみ稼働するためIPアドレスは不要)
- 1のOSはアプリケーション, トランスポート層のデータを送信元’192.1.1.101’, 宛先’192.1.1.50’でカプセル化し,パケットを生成.
- 1のOSはパケットをフレームとしてカプセル化するが,宛先MACアドレスがわからない.IPからMACアドレスを特定するため,Address Resolution Protocol(ARP)リクエストをネットワーク全域に送信する.
- 1がARPレスポンスを受け取ると,送信元’00-11-22-33-44-55’, 宛先’66-77-88-99-AA-BB’からフレームを構築し,送信する.
- 3のスイッチはフレームを受信すると,宛先ノードへ転送する.2のOSはフレームからIPパケットを取り出し宛先の正当性を確認する.正しければ,IPペイロードを取り出し,アプリケーションに届けるため上層に処理を渡す.
Network Routing
イーサネットでは,全ノードが同じローカルネットワークに直接接続される必要がある. しかし,インターネット上の全ノードを物理的に接続することは現実的ではないため,ネットワーク同士を接続する必要がある. アドレスによってデータを目的のネットワークに届けることが可能である. 2種類のアドレス範囲によって構築されたネットワークで1から2にデータを送信する.
- 1のOSはデータを送信元’192.1.1.101’,宛先’200.0.1.50’でカプセル化しパケットを生成する.
- 1のOSはフレームを構築する際, フレームを構築するが宛先アドレスが自ネットワーク外であるため(アドレスとサブネットマスクから判断可能)OS内のルーティングテーブルを参照する.ルーティングテーブルは例えば,’200.0.1.50’のための情報をもつ.つまり,’192.1.1.1’のルーターが’200.0.1.50’を取り扱えるという情報.
- OSは’192.1.1.1’のMACアドレスを知るため’192.1.1.1’に対してARPリクエストを生成する.パケットをルーターのMACアドレスを用いてカプセル化する.
- 3のルーターはフレームを受け取り,パケットを取り出す.ルーターは宛先アドレスを確認し,自分宛でなく別のネットワークのノード宛であると判断する.ルーターは’200.0.1.50’のMACアドレスを検索し,パケットを新しいフレームにカプセル化しネットワーク2に送信する.
- 2の宛先ノードがフレームを受信し,パケットを取り出す.
このプロセスは複数回繰り返されうる.ルータが’200.0.1.50’を含むネットワークに直接接続されていない場合は自分のルーティングテーブルを調べてパケットを送信できる次のルーターを特定し送信する.ノードやルーターがインターネット上の全ノードへのアクセス方法を知るのは現実的ではないため,デフォルトゲートウェイと呼ばれる,デフォルトルーティングテーブルエントリを持つ.
My Model for Network Protocol Analysis
インターネットプロトコルスイートはネットワーク通信方式を記述するが,分析目的ではあまり役に立たない. 分析のためのモデルを用いてアプリケーションネットワークプロトコルの動作を理解する方が簡単である.上図はHTTPリクエストの分析方法を示す.
Content Layer
通信の意味を示す.ファイル’image.jpg’に対してHTTPリクエストを送信することを意味する.
Encoding Layer
コンテンツの表現方法のための規約を示す.HTTPリクエストは取得ファイルを指定するHTTP GETリクエストにエンコードされる.
Transport Layer
ノード間でデータを転送する方式の規約を示す.HTTP GETリクエストはTCP/IPを通してリモートノードの’216.58.213.68:80’に送信する.
このように分類することで,関係のないネットワークプロトコルの詳細を除外できるため,アプリケーション固有プロトコルの見通しが良くなる.(TCP/IPによる転送の成功は前提) 本モデルの有用性をもう1つ例を挙げて示す. マルウェアからのネットワークトラフィックを調査しているとする. マルウェアはHTTPによりサーバー経由でクラッカーからコマンドを受信している. クラッカーがマルウェアに間感染したコンピュータのハードドライブにある全ファイルを列挙するようリクエストする. ファイルのリストはサーバーに送り返すことが可能で,クラッカーは特定のファイルをサーバーにアップロードするようリクエストする. などのクラッカーとマルウェアの対話方式の観点からプロトコルを分析すると,新しいプロトコルは下図のように分類可能である.
Content Layer
マルウェアが窃盗したファイル’secret.doc’をサーバーに送信している.
Encoding Layer
コマンドは’SEND’, ファイル名,ファイルデータからなる単純なテキスト文字列でエンコーディングされている.
Transport Layer
プロトコルはHTTPリクエストを用いてコマンドを転送する.標準の’%’を用いたエンコーディング機構を利用している.
マルウェアコマンド解析にとって重要ではないため,TCP/IPはHTTPとともにTransport Layerにまとめた. このように分析する必要があるプロトコル層に焦点を合わせる.
Final Words
2章の内容: トラフィックキャプチャの目的は,分析のために必要なデータにアクセスし,使用されているプロトコルを特定し,そして分析したプロトコルを用いてアプリケーションを脅かすために利用できるセキュリティ問題を発見するため.