目的
プロトコル分析ソフトウェアのインストールと使用方法、基本的なデータグラムキャプチャ、フィルタリング、分析方法の習得、 HTTP、TCP、ICMP、その他のプロトコルの分析を学びます。
ラボ環境
インターネット接続でMacOオペレーティングシステムを使用します;
パケットキャプチャソフトウェアWireshark。
実験内容:
- Wiresharkソフトウェアをインストールして学習する
- HTTPプロトコルをキャプチャして分析する
- TCPプロトコルを分析する
- TCPスリーウェイハンドシェイクを分析する
- ICMPプロトコルを分析する
実験手順:
1.Wiresharkソフトウェアをインストールして学習します
(1)まず、公式Webサイトからwiresharkソフトウェアをダウンロードします。
システムバージョンに応じてmacOSArm64bit.dmgを選択し、インストールします
(2)Wiresharkを実行します。初期インターフェースは次のとおりです。
(3)インターフェースリストからキャプチャするインターフェースを選択し、ダブルクリックしてキャプチャを開始します。
ダブルクリック
(4)Wiresharkがメインインターフェイスに入り、パケットのキャプチャを開始します。
左上隅のボタンを使用して、パケット
のキャプチャを開始または停止します。メインインターフェイスには、フィルタ、パケットリストバー、パケット詳細バー、パケットバイトバー、およびステータスバーが表示されます。
(5)フィルターの使用
①httpなどのプロトコルフィルタリング
②IPアドレスフィルタリング
例えば、ip.src == 172.30.208.8
③パターンフィルタリング
たとえば、http.request.method == "GET"は、httpリクエストメソッドがPOSTであるパケットをフィルタリングするために使用されます
④ポートフィルタリング
たとえば、tcp.port == 80は、tcpポート番号が80のパケットをフィルタリングするために使用されます。
(6)グループ化の詳細列
上から順に、物理層、リンク層、ネットワーク層、トランスポート層、アプリケーション層です。
フレーム:物理層のデータフレームの概要
イーサネットII:データリンク層イーサネットフレームヘッダー情報
インターネットプロトコルバージョン4:インターネット層IPパケットヘッダー情報
伝送制御プロトコル:トランスポート層のデータセグメントヘッダー情報T
ハイパーテキスト転送プロトコル:アプリケーション層情報
2.HTTPプロトコルのパケットキャプチャと分析
(1)Wiresharkを開いてパケットをキャプチャし、フィルタにhttpを入力します。つまり、httpプロトコルのパケットをフィルタリングします。
(2)ブラウザを開き、URLを入力します
この実験では、コンピュータネットワークのUOOC Webサイトhttp://www.uooc.net.cn/home/learn/index#/1138570567/962085269/1242952600/1500174221/sectionを例として取り上げ、WebサイトをシークレットモードでChromeで開きます。
(3)HTTPプロトコルパケットがWiresharkパケットリスト列に表示されることを確認します。
(4)詳細ページをクリックすると、グループの詳細列に詳細情報が表示されます。
サーバーのホスト名はwww.uooc.net.cnであり、要求するディレクトリは/ home / learn/indexであることがわかります。
もちろん、httpプロトコル情報からユーザーエージェントを知ることもできます。たとえば、このリクエストは、クライアントホスト情報がMacOSXであることを示しています。
HTTPプロトコル情報を通じて、クライアントとサーバーのさまざまな基本情報を知ることができます。
(5)手順4で取得したパケットから、この通信の送信元IPアドレスと宛先IPアドレスを学習します。
ここで、172.30.208.8はプライベートIPアドレス、つまりユーザーのホストです。宛先IPアドレスは120.78.21.18、つまりサーバーのホストアドレスです。
3.TCPプロトコルを分析します
(1)最初にTCPプロトコル情報を確認します
次の情報などを取得できます
。送信元ポート番号:54378
宛先ポート番号:80
シリアル番号:2642300584
確認番号:572491362
ヘッダー長:20バイト(5)
フラグビット:0x018
ウィンドウサイズ:4096
チェックサム:0xbb4e
(2)TCPフローをトレースします。
右クリックして、ドロップダウンメニューから[TCPストリーム]を選択します。
(3)TCPストリームを確立する
TCP接続の確立はHTTPGET要求の前に完了します
そして、情報情報にフラグビット[SYN、ACK]が表示されます。
4.TCPスリーウェイハンドシェイク
TCPスリーウェイハンドシェイクのプロセスは次のとおりです。
1)クライアントはSYN(SEQ = x)メッセージをサーバーに送信し、SYN_SEND状態に入ります。
2)サーバーはSYNメッセージを受信し、SYN(SEQ = y)ACK(ACK = x + 1)メッセージで応答し、SYN_RECV状態に入ります。
3)クライアントは、サーバーからSYNメッセージを受信し、ACK(ACK = y + 1)メッセージで応答して、確立状態になります。
3ウェイハンドシェイクが完了すると、TCPクライアントとサーバーが正常に接続を確立し、データ送信を開始できます。
(1)最初のハンドシェイク(SYN)
から、HTTPSプロトコルで開かれたWebページが使用されているため、TCPポートが54378であることがわかります。Srcはクライアントであり、Dstはドメイン名がアクセスされた後のIPであるため、これはクライアントからサーバーに送信されるデータです。クライアントがフラグフラグSYNを1に設定し、シーケンス番号としてシーケンス番号= 0の値をランダムに生成し、データパケットをサーバーに送信していることがわかります。クライアントはSYN_SENT状態に入り、サーバーが確認するのを待ちます。 。デフォルトの表示では、シーケンス番号seqは相対値であり、実際の値は2642300583です。
(2)2番目のハンドシェイク(SYNACK)
データパケットのSrcはサーバーであり、Dstはクライアントであり、これがサーバーからクライアントに送信されるデータであることを示します。このとき、SYNはまだ1であることがわかります。次に、サーバーは確認番号をクライアントのシリアル番号seq + 1、つまり0 + 1 = 1に設定し、ACKは1(実際の値は572491361)になり、サーバーがTCP要求を受信したことを示します。この時点で、seqは、相対値0(実際の値は2642300584)でサーバーによってランダムに生成されます。
(3)3回目のハンドシェイク(ACK)
データパケットのSrcはクライアント、Dstはサーバーです。これはクライアントから送信されるデータパケットです。3回目のハンドシェイクでは、クライアントは2回目のハンドシェイクでサーバーから送信されたパケットを受信した後、シーケンス番号Seqが正しいかどうかを確認します。つまり、最初に送信されたシーケンス番号Seqが1増加します(X + 1 = 0)。 + 1 = 1)。そして、フラグビットACKが1であるかどうか。正しければ、クライアントは別のデータパケットをサーバーに送信します。SYN= 0、ACK = 1、シーケンス番号Ack = Y + 1 = 0 + 1 = 1を確認し、シーケンス番号Seqに1を追加します。サーバーから送信されたACKを相手に送信する場合、送信シーケンス番号SeqはX + 1 = 0 + 1=1です。クライアントが確認シーケンス番号の値とACK=1を受信した後、この時点でTCP接続が確立され、データを送信できます。
5.ICMPプロトコルを分析します
(1)端末を使用してそれぞれBaiduにpingを実行すると、wiresharkはicmpプロトコルに従ってフィルタリングし、
最終的に次の情報を取得します。
パケットキャプチャソフトウェアには、要求要求パケットと応答応答パケットがあります。1つはTTLが64で、もう1つはTTLが50です。
表示するパケットの1つを選択します。
パケットはIPヘッダーとICMPパケットで構成されます。IPヘッダーの合計バイト数は20バイトです。
ICMPメッセージ、合計40バイト。
(2)次のことを試しました
10.104.125.345のような存在しないホストにpingを実行しました。
WiresharkでICMPパケットをキャッチできません