WiresharkとTcpDumpのキャプチャ分析



Wireshark Tcpdump Capture Analysis



WiresharkとTcpDumpのキャプチャ分析

1.Wiresharkとtcpdumpの概要



Wiresharkは、WindowsプラットフォームとUnixプラットフォームをサポートするネットワークプロトコル検出ツールです。私は通常、WindowsプラットフォームでのみWiresharkを使用します。 Linuxの場合、tcpdumpを直接使用します。これは、作業環境のLinuxには通常文字インターフェイスしかないためです。一般的にLinuxに関しては、tcpdumpが付属しています。または、tcpdumpでパケットをキャプチャした後、Wiresharkを使用して分析を開くことができます。

Windowsプラットフォームでは、WiresharkはWinPcapを介してパケットをキャプチャします。WinPcapは非常によくパッケージ化されており、使いやすいです。以下に説明するように、パケットをキャプチャしたり、フィルタを表示したりするために簡単に開発できます。 Wiresharkは、シングルクリックでダウンロードを簡単に見つけることができる無料のツールです。



Tcpdumpは、Unixシステムに基づくコマンドラインパケットスニッフィングツールです。 tcpdumpを使用して他のホストMACアドレスのパケットをフェッチする場合は、NICプロミスキャスモードを有効にする必要があります。最も単純な言語でのいわゆるプロミスキャスモードは、パケットが送信されたかどうかに関係なく、NICが通過するすべてのパケットをキャプチャできるようにすることです。または発行された場合は、[ http://en.wikipedia.org/wiki/Promiscuous_mode 無差別パターンに関する詳細情報を入手してください。一般に、Unixでは通常のユーザーがプロミスキャスモードを設定することはできません。これは、telnetのユーザー名やパスワードなど、セキュリティ上の問題を引き起こす他のユーザーの情報を見る可能性があるため、rootユーザーのみがプロミスキャスモードを開いてハイブリッドを開くことができるためです。 modeコマンドは次のとおりです。ifconfigeth0promisc、eth0は、無差別モードを開きたいネットワークカードです。確かに誰かがあなたがWindowsの下で無差別モードを開きたいかどうか尋ねます。 WindowsのNICにはプロミスキャスモードはありません。 Wiresharkを使用してパケットをキャプチャする場合など、アプリケーション自体は、無差別モードでパケットをキャプチャするように設定できます(これが、ARPスプーフィングウイルスが蔓延する理由です)。もちろん、Tcpdumpはパケットキャプチャフィルタを指定することもできます。そのフィルタ言語は非常に有名で、Berkeleyパケットフィルタリングと呼ばれ、BPF言語と呼ばれます。

2.簡単な例

訪問します www.google.com.hk キャプチャの結果を表示するためのこのURL。



2.1 tcpdump

上記のように、Linuxには通常tcpdumpが付属していますが、小さな確率のイベントが発生し、tcpdumpがないことがわかった場合は、次のことができます。 http://www.tcpdump.org ソースコードをダウンロードし、コンパイルしてインストールします。

rootユーザーとしてログインし、tcpdumpコマンドを実行してパケットのキャプチャを開始します。ここで、SSHを使用してリモートLinuxにログインし、tcpdumpを直接実行すると、多数のパケットがキャプチャされ、速度が明確でないことがわかります。これは、tcpdumpによってキャプチャされたパケットが表示のためにリモート端末に送信されるためです。バッグをもう一度つかみ、それを表示してからつかみ、ループクロールを引き起こします。もちろん、ネットワークが開いていることを証明する場合を除いて、この方法でパケットをキャプチャする意味はありません。

ネットワークカードを開く無差別モードがないため、このマシンがネットワークにアクセスするプロセスがない場合、パケットをキャプチャできません。文字インターフェースにある場合は、wgetを使用します。 http://www.google.com.hk URLにアクセスします。GUIをお持ちの場合は、Firefoxブラウザを開いてアクセスできます。 http://www.google.com.hk

デフォルトでは、tcpdumpはパケットをキャプチャするために最初のNIC(eth0)を選択し、各行には次のようなキャプチャされたパケットが表示されます。

0.003183 192.168.21.137 72.14.203.147 TCP 38039> http [SYN] Seq = 0 Win = 5840Len = 0 MSS = 1460 SACK_PERM = 1 TSV = 36941509 TSER = 0 WS = 6

0.011707 72.14.203.147 192.168.21.137 TCP http> 38039 [SYN、ACK] Seq = 0 Ack = 1 Win = 64240 Len = 0 MSS = 1460

0.011770 192.168.21.137 72.14.203.147 TCP 38039> http [ACK] Seq = 1 Ack = 1Win = 5840 Len = 0

上記の3つのデータパケットは、よく知られているTCPスリーウェイハンドシェイクデータパケットであり、そのうち38039はクライアントのTCPポートであり、httpのデフォルトポートは80です。tcpdumpが/内のポートに対応するサービス名を見つけた場合etc / services、それは自動的に切り替わります。名前はhttpと表示されます。クライアントのポート38039とサーバーのhttpポートがTCPスリーウェイハンドシェイクを実行することを示します。

前述のように、tcpdumpはデフォルトでパケットをキャプチャする最初のNICを選択します。 -iパラメーターを使用して、パケットをキャプチャするNICを指定できます(#は入力したコマンドを示し、Linuxでのrootユーザーのプロンプトは#です)。

#tcpdump –i eth1

または

#tcpdump –i any

パケットのキャプチャに使用できるNICを知りたい場合は、次のような-Dパラメータを使用できます。

#tcpdump –D

1.eth0

2.任意

3.lo

私のマシンにはネットワークカードが1つしかないため、eth0のみです。複数のネットワークカードアクティビティがある場合は、eth1、eth2が順番に存在します。任意のネットワークカードを介してパケットをキャプチャする任意の手段。loはループバックインターフェイスです。 (TCPスリーウェイハンドシェイクやループバックインターフェイスなどのネットワークの問題については、「TCP / IPプロトコルの詳細」を参照してください)。

デフォルトでは、tcpdumpのキャプチャ結果が画面に表示されます(厳密なポイント、専門的なポイントは標準出力と呼ばれる必要があります)。これは明らかにデータ分析に役立たないため、キャプチャの結果をファイルに保存する必要があります。ただし、-wコマンドを使用して、結果を次のようなファイルに保存します。

#tcpdump –w google.cap

このコマンドは、キャプチャの結果をgoogle.capファイルに保存します。終了後、Wiresharkで開くことができます。同僚、パケットキャプチャからのtcpdump、-rパラメータを使用してパケットキャプチャデータファイルを作成し、フィルタと組み合わせて次のようなパケットキャプチャデータを分析することもできます。

#tcpdump –r google.cap http

このコマンドの意味は、tcpdumpにgoogle.capファイルを読み取らせ、httpプロトコルのパケットをフィルターで除外することです。フィルタについては、以下で詳しく説明します。

2.2 Wireshark

私はWindowsシステムでWiresharkを使用していますが、最初はインターフェースに精通しています。図1は、Wiresharkを使用してgoogle.capファイルを開くためのインターフェースです。

図1Wiresharkインターフェース

図1では、3つの高速領域がマークされています。 R1領域は、単純なパケット情報を表示するために使用されます。 tcpdumpを使用してパケットをキャプチャすると、デフォルトで表示されます。 R2領域は、選択したパケットの詳細情報を表示するために使用されます。注意深く、彼はTCP / IP4層構造に従って表示されていることに気付くでしょう。 1行目はデータリンク層情報、2行目はネットワーク層情報(IPプロトコル)、3行目はトランスポート層情報(TCPプロトコル)です。 4行目はアプリケーション層情報(HTTPプロトコル)です。各行を展開して、データパケットの実際の面を表示するためにR3領域が使用される特定のコンテンツを観察できます。 R1およびR2領域で見た情報は、Wiresharkの終了後に表示されました。パッケージによってキャプチャされた実際のデータは、実際には一連のバイナリシーケンスです。図2に示すように、ultraeditを使用してgoogle.capファイルを開き、いくつかの数値を確認します。

図2キャプチャファイルの外観が長い。

Wiresharkでパケットを取得するのは非常に簡単です。ボタンをクリックするだけです。 (ツールバーの3番目のボタン) (ツールバーの最初のボタン)がパッケージのキャプチャを開始し、このボタンをクリックするとすぐにパッケージがキャプチャされていることがわかります。これは、ネットワークカードのデータパケットがキャプチャされている限り、Wiresharkがデフォルトで無差別モードでパケットをキャプチャするためです。それを降ろし(もちろん、このマシンはネットワークに接続されている必要があります。データが流れていない場合、もちろん、取得するパッケージはありません)、ボタンをクリックします このキャプチャを停止します。

マシンに複数のNICがインストールされている場合、Wiresharkはデフォルトでパケットをキャプチャする最初のNICを選択します。パケットキャプチャが完了すると、間違ったNICが非常に気のめいるようになっていることがわかります。パッケージをキャプチャする前に、ボタンをクリックして、取得するネットワークカードを選択します。

図3ネットワークカードの選択

マシンにネットワークカードが1つしかないので、VMwareをインストールするときに他の2つは仮想ネットワークカードです。パケットにはすでにデータがありますが、実際には[開始]をクリックしてパケットのキャプチャを開始する必要があることがわかります。

ネットワークカードの選択の問題を解決した後、キャプチャされたパッケージのコンテンツをフィルタリングすることを検討してください。図4に示すように、メニューバーの[キャプチャ]> [オプション]をクリックして、キャプチャルールを作成するためのインターフェイスを表示します。

図4キャプチャルールの作成

図4は、デフォルトで選択されているプロミスキャスモードのCaputreパケットを示しています。これは、Wiresharkがデフォルトでプロミスキャスモードのパケットをキャプチャすることを示しています。キャプチャするネットワークカードを選択することもできますが、これらは焦点ではありません。最も重要なのはCaupture Fileterです。このボタンをクリックすると、いくつかの定義済みフィルターがポップアップ表示されます。たとえば、「HTTP TCPポート(80)」を選択します。次のフィルター文字列:tcp porthttpはフィルターの表現です。ポートが80パケットであることを示します(httpプロトコルのデフォルトポートは80です)。

3.フィルターの使用(BPF言語)

主にtcpdumpでフィルターの使用を紹介します。これを理解すると、Wiresharkを便利に使用できるからです。

最も単純な観点から、BPF言語は、主にロゴまたは数字と修飾子で構成されます。修飾子には次の3つのタイプがあります。

最初のタイプ:指定されたタイプ

ホストは、取得するIPアドレスを定義します(Macアドレスを指定することもできます。形式は00:00:00:00:00:00です)。たとえば、192.168.0.148のIPアドレスを取得したい場合は次のようになります。 tcpdumpホスト192.168.0.148として記述され、ホストは修飾子であり、192.168.0.148はフラグです。このコマンドはから取得します 192.168.0.148に送信または送信されたパケット。

ネットは、ネットワークのデータパケットを定義し、ネットワーク番号を提供します。 tcpdumpなど、指定されたネットワーク番号のバイト数に応じて、クラスAアドレス、クラスBアドレス、またはクラスCアドレスを判断します。ネット10.1.1、これはクラスCアドレスであると考えています。

ポート、tcpdumphostなどのポートを指定します ポート22、これはポート22のパケットです。TCPかUDPかに関係なく、ここで少し前に論理演算を行いました。J、TCPのみをキャッチしたい場合は、tcpdump host192.168.0.148とtcpport 22。

ポートレンジは、その名前が示すように、指定されたポート範囲であり、tcpdumpポート1025-8080などの範囲を指定するハイフン「-」が付いています。

2番目:方向を指定します

以前の注文では、「このコマンドは192.168.0.148からフェッチされるか、192.168.0.148に送信されます」と言っていたので、キャッチするようにポイントすると 発信パケットは、修飾子src、コマンド:tcpdumpsrc host 192.168.0.148を使用できます。逆に、修飾子dst、コマンド:tcpdumpdst host 192.168.0.148を使用して、パケットを192.168.0.148にフェッチする必要があります。

3番目:契約を指定します

ネットワークプロトコルにはN種類あることがわかっています。 。 。私はいくつかの一般的に使用されるものをリストします、他のものはグーグルJに行くことができます

Etherおよびfddi、イーサネットプロトコル

Tr、TR合意

IP、IPプロトコル

Ip6、IPv6プロトコル

Arp、ARPプロトコル

さて、最後に注意するのは論理演算、and、or、not(and、or、not)です。上記の例はすでにあります。それはもはや厄介ではなく、通常のプログラミング言語と何ら変わりはありません。

さらに、TCPで特定の識別子を指定するなど、cow Xにはさらに多くの機能があります。このアプリケーションはめったに使用されず、厄介ではなくなりました。