ネットワークパケット解析ツールの設計・開発

ネットワークパケット解析ツールの設計・開発

 

まとめ

現在、情報技術の発展に伴い、ネットワークセキュリティの問題がますます顕在化し、ネットワーク攻撃がますます横行しているため、ネットワーク情報セキュリティが非常に重要になっています。Web ホストは適切なセキュリティ対策を講じる必要があります。そうしないと、Web の価値が下がってしまいます。このシステムの開発は、ネットワーク ユーザーに有用なネットワーク パケット分析ツールを提供することです。このシステムには、データ パケットのキャプチャ、データ パケットの分析、データ パケットの情報の分析、およびデータ パケットの情報の表示の 4 つの主要な機能があります。システム機能を実現するために、このシステムはubuntu (Linux)、libpcap、apache、mysql、phpのプラットフォーム上で開発されており、オペレーティングシステムとソフトウェア開発キットはすべてオープンソースのフリーソフトウェアであることも重要な特徴です。このシステム。システムは、まず libpcap を使用してデータ パケットをキャプチャし、次に C 言語を使用し、理論的基礎として TCP/IP プロトコルを使用してデータ パケットを分析します。分析から得られた情報は mysql データベースに保存されます。パケット情報分析モジュールは、mysql データベースからデータを読み取り、情報の統計分析を実行し、ネットワーク情報のセキュリティ ステータスを記述します。最後に、データベース情報は、Apache および PHP テクノロジを通じて表示されます。システムをテストすることにより、データ パケットのキャプチャ、分析、情報分析、および情報表示が実現され、ユーザーが現在のネットワーク データ パケットの状態を理解するための優れた参考情報を提供します。

キーワード:ネットワーク データ パケット、TCP/IP、データ パケット分析、データ パケット情報分析、攻撃特性

目次

ネットワークパケット解析ツールの設計・開発

1 はじめに

1.1 主題の背景

1.2 国内外の研究状況

1.3 本研究の意義

1.4 このトピックの理論的根拠

2 ネットワークパケット解析システムの概要

2.1 ネットワークパケット解析の意義

2.2 ネットワークパケット解析の中核となる技術基盤

2.3 ネットワークパケット解析システムの主な機能

3 ネットワークパケット解析システムの設計

3.1 システムモジュールの分割

3.3 データパケット解析ストレージモジュールの設計

3.4 パケット情報解析モジュールの設計

4 ネットワークパケット解析システムのソリューション

4.1 パケットキャプチャモジュールのソリューション

4.2 データパケット分析およびストレージモジュールソリューション

4.3 データパケット情報解析モジュールのソリューション

4.4 データ表示モジュールソリューション

5 ネットワークパケット解析システムの実現

5.1 システム制御モジュールの実現

5.2 パケットキャプチャモジュールの実現

5.3 データパケット分析とストレージモジュールの実装

5.4 パケット情報解析モジュールの実現

5.5 データパケット情報表示モジュールの実現

6 ネットワークパケット解析システムのテスト解析

6.1 テスト計画とテスト環境

6.2 試験結果

6.2.1 パケットキャプチャ

6.2.2 データパケットの分析と保存

6.2.3 パケット情報の簡易解析

6.2.4 データパケット情報表示

結論は

参考文献


1はじめに

1.1主題の背景

今日、ネットワークの急速な発展は誰の目にも明らかですが、この急速な発展の過程には危険な要素もあります。ネットワーク攻撃とウイルス感染の急速な増加、窃盗、詐欺、恐喝、機密窃盗のためのネットワークの使用は年々増加しており、ネットワークの正常な秩序に重大な影響を与え、ネットワークユーザーの利益を著しく損なっている。 ; ネットワークセキュリティの厳しい状況に直面して、ネットワークに接続されたホストが安全かどうかをどのように判断するかが非常に重要になります。トピック選択の目的は、ネットワーク セキュリティの現在の形態を積極的に理解し、一般的なネットワーク プロトコル データ パケットを分析し、ネットワーク データ パケットをキャプチャして分析できるツールを設計し、データ パケット情報を表示してデータの統計分析を実行し、ネットワークプロトコルとセキュリティの知識を深く理解します。

1.2国内外の研究状況

一般的なネットワーク パケット アナライザーは、パケットをキャプチャし、さまざまなプロトコルをデコードし、結果を人間が読める形式で提供します。ほとんどの本格的なアナライザーには、いくつかの統計レポート機能も含まれています。ネットワーク情報の分布を表示し、ネットワークの使用状況と受信接続のダイナミクス、および一連の動作を理解することで、管理者は障害のあるワークステーションとその原因を簡単に特定できます。

1.3本研究の意義

ネットワーク セキュリティの問題は、もはや新しいトピックではなく、高度なトピックでもありません。ネットワーク データ パケットの分析については、データ パケットのキャプチャ、分析、簡単なデータ パケットの提供など、比較的成熟した構造設計がすでに存在しています。 - ビュー形式とシンプルな統計レポート。しかし、ネットワークの発展は日々変化しており、セキュリティ要件も常に進化しています. この論文では主に 2 つのモジュールの密接な接続を実行し、MySQL データベースを使用して統計レポート モジュールの機能を強化します。

1.4このトピックの理論的根拠

データパケット分析ツールは、ubuntu+libpcap+apach+mysql+php のプラットフォーム上で設計されています。libpcap 開発キットを使用してネットワーク機器をセットアップし、データ パケットをキャプチャします。解析モジュールでは、取得したデータ パケットをプロトコル ヘッダーの形式に従って解析し、簡単な説明を行います。 mysql データベースを保存し、後続の統計分析モジュールを待ちます。統計分析モジュールは、データベース内の情報を分類および集計し、必要なデータ情報を取得し、設定されたさまざまな攻撃特性と比較して、現在のホストのセキュリティ状況について簡易統計分析を実行します。手動分析では、このツールは、キャプチャされたデータ パケットのパケット ヘッダー情報を簡単に照会するためのページを提供します。ユーザーはデータを手動で分析してホストの状態を判断できます。

システム全体は TCP/IP プロトコルに基づいています。TCP/IP プロトコルは、OSI 7 層参照モデルに完全には準拠していません。OSI は、通信プロトコルの 7 層の抽象参照モデルであり、各層が特定のタスクを実行します。TCP/IP 通信プロトコルは 4 層の階層構造を採用しており、各層は次の層が提供するネットワークを呼び出して、それぞれのニーズを満たします。[3] インターネット プロトコル IP は TCP/IP の中心であり、ネットワーク層で最も重要なプロトコルです。さらに、TCP 接続プロトコル、UDP、ICMP などのプロトコルがあります。

2ネットワークパケット解析システムの概要

2.1ネットワークパケット解析の意義

古典的な映画「マトリックス」を観て、ネットワーク パケット分析ツールを使用したことのある人なら誰でも、映画の中の多数のコントロール パネルの前に座って、ストリームのように画面を連続的に滑り落ちる信号を解読するという「操作」を経験しているはずです。水の「同じ感覚。

映画のオペレーターは生死にかかわる問題に取り組んでいますが、実際にはパケット分析ツールのユーザーも同様に重要な問題に取り組んでいます。パケットのトラブルシューティングと検査を行う機能は、ネットワーキングとそれに依存する業界にとって非常に重要です。

パケット分析ツールの寿命は依然として長く、その主な理由は、目的を持った 24 時間 365 日のネットワーク管理を必要とする業界にとって、パケット分析ツールは企業が受け入れて消化しやすいネットワーク分析データを提供できるためです。

2.2ネットワークパケット解析の中核となる技術基盤

パケット分析は TCP/IP プロトコルに基づいています。TCP/IP に関して言えば、OSI について言及する必要がありますが、TCP/IP プロトコルは OSI の 7 層参照モデルに完全には準拠していません。OSI は、通信プロトコルの 7 層の抽象参照モデルであり、各層が特定のタスクを実行します。このモデルの目的は、さまざまなハードウェアが同じレベルで相互に通信できるようにすることです。これら 7 つの層は、物理層、データリンク層、ネットワーク層、トランスポート層、音声層、プレゼンテーション層、およびアプリケーション層です。TCP/IP 通信プロトコルは 4 層の階層構造を採用しており、各層は次の層が提供するネットワークを呼び出して、それぞれのニーズを満たします。[3] 4 つのレイヤーは次のとおりです。

アプリケーション層: Simple Email Transfer (SMTP)、File Transfer Protocol (FTP)、Network Remote Access Protocol (Telnet) などのアプリケーション間の通信のための層。

トランスポート層: この層では、伝送制御プロトコル (TCP)、ユーザー データグラム プロトコル (UDP) などのノード間のデータ伝送サービスを提供します。TCP と UDP は、データ パケットに送信データを追加して次のパケットに送信します。 1 つの層では、この層はデータの送信と、データの送受信の確認を担当します。

相互接続ネットワーク層: インターネット プロトコル (IP) など、基本的なデータ パケット送信機能の提供を担当し、各データ パケットが宛先ホストに到達できるようにします (ただし、正しく受信されたかどうかはチェックしません)。

ネットワーク インターフェイス層: 実際のネットワーク メディアを管理し、実際のネットワーク (イーサネット、シリアル ラインなど) を使用してデータを送信する方法を定義します。

2.3ネットワークパケット解析システムの主な機能

ソフトウェアはアプリケーションのために設計されているため、ソフトウェアがどのような機能を提供できるかが非常に重要です。ネットワークデータパケット解析ツールは、データパケットキャプチャ、データパケット解析、データパケット情報解析、データパケット情報表示の4つの機能を実現する必要がある。データ パケットのキャプチャと分析はシステムの基本部分であり、データ パケット情報の分析と表示はデータ処理の一部です。4 つのモジュールは相互に連携して、現在のホストのネットワーク データ パケットを分析します。

ネットワーク パケット分析ツールの設計プロセスでは、ネットワーク速度を考慮する必要があります。ネットワークとネットワーク速度の進化により、ネットワーク監視に新たな課題が生じています。一般的な PC 上の Linux ベースのデータ パケット分析に関連するシステムは、高速リンクの前ではますます無力になります。したがって、データ パケットをいかに迅速にキャプチャするかが非常に重要です。データパケット解析技術はデータパケット解析の基礎です。データ パケットの解析は、データ パケット分析に基づくツールによって解決されるべき中心的な問題です。データ パケットを構築するためのプロトコルは多数あります。パケットは、データ パケットを構築するためのプロトコルに従って処理される必要があり、ネットワーク内で送信されるユニットは、を正しく理解することで、ネットワークユニットの送信を適切に制御し、データパケットの分析を実現します。ネットワーク データ パケットの分析は、出力結果の一部である、キャプチャおよびデコードされたデータ パケット情報の統計分析です。データ パケット情報の表示は、人間化された補助機能として提供されます。

3ネットワークパケット解析システムの設計

多くのプログラムは長すぎたり複雑すぎたりして 1 つのユニットで作成できないため、ネットワーク データグラム分析ツール全体はモジュール設計のアイデアを採用しています。コードをより小さな機能単位に分割すると、プログラミング プロセスが大幅に簡素化されます。一般に、モジュール型プログラムはモノリシック プログラムよりも作成、デバッグ、変更が簡単です。そこでこのシステムはモジュール設計の考え方を採用しています。

モジュール型プログラミングの利点は次のとおりです。

(1) 効率的なプログラム開発: モジュール式のアプローチを使用すると、大きなプログラムよりも小さなサブルーチンの方が理解しやすく、設計し、テストしやすいため、プログラムをより迅速に開発できます。モジュールの入力と出力を定義した後、プログラマはモジュールに必要な入力を提供し、出力を検出することでモジュールの正しさを判断できます。次に、個別のモジュールがリンカによって接続および配置され、絶対アドレスを持つ単一の実行可能プログラム モジュールが生成されます。最後に、モジュール全体をテストします。

(2) サブルーチンの再利用が可能: あるプログラム用に作成されたコードは、他のプログラムでも使用できることがよくあります。モジュール式プログラミングでは、これらの部分を将来の使用のために保存できます。コードは再配置できるため、保存されたモジュールは、入出力要件を満たす任意のプログラムにリンクできます。シングルブロックプログラムでは、このような部分がプログラム全体の奥深くに埋め込まれているため、他のプログラムからは利用されにくくなります。

(3) デバッグと変更が簡単: モジュール形式のプログラムは、一般に単一ブロックのプログラムよりもデバッグが簡単です。プログラムのモジュール インターフェイスは慎重に定義されているため、問題の原因を特定のモジュールに特定するのは簡単です。問題のあるモジュールを特定したら、問題を修正するのは非常に簡単です。

3.1システムモジュールの分割

ネットワーク データ パケット解析ツールは 4 つのモジュールで構成されます。1 つはデータ パケットのキャプチャで、ネットワーク カードからのデータ パケットの取得を実現します。2 つ目はデータ パケットの分析です。これら 2 つのモジュールは分析ツール全体の基本部分であり、システム全体で重要な役割を果たします。3 つ目は取得した情報の分析です。固有値を比較して単純なデータを描画します。 4 番目は、キャプチャされたデータ パケットの情報を表示することであり、その目的は、手動分析のための便利な方法をユーザーに提供することです。4 つのモジュール間の呼び出し関係を図 1 に示します。

3.2パケットキャプチャモジュールの設計

このモジュールは、まずネットワーク カードからさまざまなデータ パケット情報を取得してキャッシュにコピーし、解析モジュールの呼び出しを待ちます。このモジュールの重要な部分は、データ パケットを迅速にキャプチャし、パケット損失率を減らすことです。

パケット キャプチャはイーサネットに基づいています。イーサネット(Ethernet)は共有媒体としての性質を持ち、情報は平文でネットワーク上を伝送されます。IEEE802.3規格のイーサネットは連続CSMA方式を採用しており、このブロードキャストチャネル競合方式を採用しているからこそ、各局は他局から送信されたデータを取得することができます。この原理を使用すると、情報キャプチャ システムは必要な情報を傍受できます。これは、データ パケットをキャプチャする物理的な基礎です。[1]

イーサネットはバス型ネットワークであり、論理的にはバスと、バスに接続された複数のステーションで構成され、各ステーションは前述の CSMA/CD プロトコルを使用してチャネルを競合および共有します。この機能を実現する各サイト (ここでは特にコンピュータを介したインターフェイス カードを指します) のネットワーク カード。ネットワーク カードの主な仕事は、バスの現在の状態の検出を完了し、データを送信するかどうかを決定し、各物理データ フレームの宛先がステーションのアドレスであるかどうかを判断することです。は、ステーションに送信されず、破棄されることを意味します。「はい」の場合、データ フレームを受信し、物理データ フレームに対して CRC チェックを実行し、データ フレームを LLC サブレイヤに送信します。[1]

3.3データパケット分析ストレージモジュールの設計

前のモジュールでは、データ パケットがキャプチャされ、キャッシュにコピーされました。解析モジュールは主に、データ パケットのプロトコル ヘッダーに従ってデータ情報を分析し、適切な説明を行って、最終的にデータをデータベースに入れることです。分析モジュールがデータを読み取るまで待ちます。現在分析されているプロトコルには、etnernet、LLC、arp/rarp、ip、tcp、udp、icmp、dns、dhcp プロトコル ヘッダーが分析され、データ パケット情報がデータベースに保存されます。

データ パケット ヘッダーの分析は主に、データ パケット プロトコルの形式に従って意味のあるフィールドを読み取ることです。以下では、ARP プロトコル ヘッダーを使用して、解析プロセス全体を説明します。

まず、図 2 に示すように、ARP/RARP プロトコルのヘッダー形式を理解する必要があります。

フィールドの意味

ハードウェア タイプ フィールド: 送信者が知りたいハードウェア インターフェイス タイプを示し、イーサネットの値は 1 です。プロトコル タイプ フィールド: 送信者によって提供された高レベルのプロトコル タイプを示します。IP は 0800 (16 進数)、ハードウェア アドレスの長さとプロトコル長: ARP メッセージを任意のハードウェアおよび任意のプロトコル ネットワークで使用できるように、ハードウェア アドレスと高レベル プロトコルのアドレスの長さを示します。操作フィールド: このメッセージのタイプを示すために使用され、 ARP 要求は 1、ARP 応答は 2、RARP 要求は 3、RARP 応答は 4、送信者のハードウェア アドレス (0 ~ 3 バイト): 送信元ホストのハードウェア アドレスの最初の 3 バイト; 送信者のハードウェア アドレス (4 ~ 5 バイト): 送信元 ホスト ハードウェア アドレスの最後の 3 バイト; 送信者 IP (0 ~ 1 バイト): 送信元ホスト ハードウェア アドレスの最初の 2 バイト; 送信者 IP (2 -3 バイト): 送信元ホスト ハードウェア アドレス バイトの最後の 2 バイト、宛先ハードウェア アドレス (0 ~ 1 バイト): 宛先ホスト ハードウェア アドレスの最初の 2 バイト、宛先ハードウェア アドレス (2 ~ 5 バイト): 最後の宛先ホストのハードウェア アドレスの 4 バイト、宛先 IP (0 ~ 3 バイト): 宛先ホストの IP アドレス。[3]

プロトコルのフォーマット定義に従い、ヘッダーのデータ構造(具体的な定義は後述)。型変換後のデータを読み取り、必要な解釈を行います。ここで最も重要なことは、データ パケットのプロトコル形式の定義です。定義した構造に問題があると、その後のデータ抽出が無意味になってしまいます。

データパケット情報の保存とは、抽出したデータパケットヘッダ情報を一箇所に保存し、後続のデータパケット情報解析モジュールの問い合わせを待つことである。情報ストレージには、情報の高速な保存と抽出が必要ですが、同時に、分析モジュールのデータ要件を満たす強力なクエリ機能が提供されなければなりません。

3.4パケット情報解析モジュールの設計

このモジュールの機能は、キャプチャされたデータ パケット情報の単純な統計分析を通じて、現在のネットワーク セキュリティ状況を合理的に評価することです。

データパケットを解析することで、データパケットのサイズ、データパケットのヘッダ情報、プロトコル情報、データパケットの内容などを判断できます。ネットワーク セキュリティを研究する人にとって、この知識を習得することは非常に重要です。今日のネットワーク通信では、ほとんどのデータは暗号化されていないため、アカウント番号、パスワード、その他の重要なデータをデータ パケットから簡単に抽出できます。さらに、データ パケットの全体的な情報に関する統計もデータ パケット分析の一部です。前のモジュールでは多くのパケット情報を取得しました。このモジュールでは、この情報を分析に使用します。現在のネットワーク セキュリティ分析結果は、データベース クエリから取得したデータと侵入特性データを比較することによって取得されます。

データパケット情報の分析プロセスを図 3 に示します。

3.5データパケット情報表示モジュールの設計

データパケット情報表示モジュールの目的は、ユーザーがデータパケット情報を閲覧するためのウィンドウを提供することであり、その原則は、データパケットの有益な情報を合理的に表示しようとすることである。パケット情報は、IP 別、ポート別など、さまざまな形式で表示されます。同時に、情報分析モジュールの分析結果は Web ページ形式のドキュメントを生成し、最終的な分析結果は Web ページの形式で表示でき、セキュリティ機能の入力ウィンドウが必要です。

情報の表示はデータベース内のすべての情報を表示する必要はなく、ユーザーが最も見たい情報を中心に提供します。情報の表示モードは表形式であり、ユーザーがデータパッケージの情報をより直観的に理解し、正しく合理的な判断を下すのに役立ちます。

ネットワークデータパケット解析システムの4つのソリューション

システム全体の開発プラットフォームはUbuntu+Libpcap+Apache+Mysql+Phpで、各コンポーネントはFreeまたはOpen Source Software(フリーまたはオープンソースソフトウェア)です。この開発プラットフォームを選択することはシステム全体の大きな特徴であり、まず第一に、フリーソフトウェアは開発コストを削減し、不必要な消費を削減します。繰り返しになりますが、正規のソフトウェアを使用すると、システムの安定性と信頼性が向上し、同時に侵害の問題も回避されます。この無料でオープンソースのアプローチは、企業開発者と個人開発者の両方のユーザー、特により良い技術サポートを望んでいるが十分な財政的サポートがない開発者にとって非常に魅力的です。インターネットに関しては、ソフトウェアのリリースにライセンス料を支払うことなく開発および適用できます。同時に、オープンソース コミュニティの可能性はリソースの共有にあり、何百万人もの自主的な開発者がオープンソース ソフトウェアに貢献し、テクノロジーの継続的な進歩とアップグレードを確実にしています。また、オープンソースの性質により、企業や開発者は独自に使用するためにソース プログラムを自由に変更することができ、プロプライエタリ ソフトウェアや商用ソフトウェアの制限では得られない柔軟性が向上し、プロジェクトの派生が拡大します。

システム設計にはモジュラー設計思想を採用。モジュール化には多くの利点があるためです。効率的なプログラム開発: モジュール式のアプローチを使用すると、大規模なプログラムよりも小さなサブルーチンの方が理解、設計、テストが容易であるため、プログラムをより迅速に開発できます。サブルーチンは再利用可能: あるプログラム用に書かれたコードは、多くの場合、他のプログラムでも使用できます。デバッグと変更の容易さ: モジュール型プログラムは、一般にモノリシック プログラムよりもデバッグが簡単です。

Ubuntu オペレーティング システムには独自の利点があり、Ubuntu を選択した理由は次のとおりです: Ubuntu は常に無料であり、ライセンス料を支払う必要はありません。完全に無料でダウンロード、使用、他の人と共有することができます。新しいデスクトップおよびサーバーのバージョンは 6 か月ごとにリリースされるため、オープンソースの世界が提供する最新かつ最高のアプリケーションを常に楽しむことができます。Ubuntu はセキュリティを非常に重視しています。デスクトップおよびサーバーの各エディションについて、少なくとも 18 か月間の無料のセキュリティ アップデートを入手してください。長期サポート版(LTS)をご利用の場合、デスクトップ版は3年間、サーバー版は5年間のサポートが受けられます。LTS リリースには追加料金はなく、Ubuntu は同じ無料条件ですべての人に最高のサービスを提供します。Ubuntu の新しいバージョンへのアップグレードも常に無料です。

4.1パケットキャプチャモジュールのソリューション

データ パケット キャプチャ モジュールは、libpcap 開発パッケージを使用します。libpcap は、アクセス オペレーティング システムによって提供されるパケット キャプチャ メカニズムの実装とは何の関係もなく、データ リンク層にアクセスするために使用されるパケット キャプチャ関数ライブラリです。このライブラリは、異なるプラットフォームに一貫したプログラミング インターフェイスを提供し、libpcap がインストールされているプラ​​ットフォーム上では、libpcap をインターフェイスとして記述されたプログラムやアプリケーションをプラットフォーム間で自由に使用できます。オペレーティング システムによって提供される主なパケット キャプチャ メカニズムには、BPF (Berkeley Packet Filter)、DLPI (Data Link Provider Interface)、Linux 上の SOCK_PACKET タイプのソケットの 3 つがあります。BSD ベースのシステムは BPF を使用し、SVR4 ベースのシステムは通常 DLPI を使用します。文献によると、BPF は DLPI よりもパフォーマンスがはるかに優れていますが、SOCK_PACKET は劣っています。SCO OpenServer にはカーネル フィルター モジュール BPF はありませんが、カーネルにプッシュできる STREAMS モジュール BPF があり、Berkeley BPF と同じ概念を採用しています。ただし、ioctl 操作に関しては、SCO の BPF は Berkeley BPF のすべての機能を完全には提供しません。

libpcap の構造は単純です。その構造を分析すると、少し大きなプログラムを書くときの基本的な考え方をある程度理解できます。まず第一に、クロスプラットフォーム互換性を提供するために、ソース コードには Makefile はありません。代わりに、Makefile を自動的に生成するために、configure スクリプトを実行する必要があります。configure スクリプトは、一方でシステムの特性を検出して、現在のシステムといくつかの関連構成。書き込まれた Makefile.in ファイルは、現在のプラットフォームに適した Makefile を生成するための青写真として使用されます。[4]

4.2データパケット分析およびストレージモジュールソリューション

データパケット解析では、独自に記述されたデータ構造を完全に使用してデータを変換し、構造のメンバーを使用してデータを読み取ります。これには、イーサネットヘッダー、LLC、ARP/RARP、IP、TCP、UDP、DHCP、DNS、ICMP パケットが含まれます。ヘッダー形式とボディの定義。

データパッケージ情報のストレージにはmysqlデータベースが採用されています。Mysqlの特徴は以下の通りです。

(1) MYSQL は 5,000 万レコードのデータ ウェアハウスをサポートします。

(2) MYSQL があらゆるプラットフォームに適応する利点は、PHP を選択した理由と同じです。

(3) MYSQL はオープンソース ソフトウェアであり、バージョンの更新は商業的な観点からの結論にも影響されます。そして、オープンソースのものは常により実用的であるように思われ、商業的な考慮事項はあまり多くありません。

(4) ほとんどのデータベースは SQL ステートメントを使用するため、学習は簡単ですが、そうは言えないかもしれません。

(5) MYSQL はオープンソースであるため、任意の変更、つまり不要な機能を削除することができ、それによって MYSQL が簡素化され、速度が向上します。これは商用データベースでは実現できない非常に優れた機能と言わざるを得ません。

4.3データパケット情報解析モジュールソリューション

パケット情報分析モジュールは、C 言語を使用して mysql データベースに接続し、データベース データのクエリとカウントを行います。データの統計結果と侵入特徴の比較は、C 言語を使用して実行されます。C言語には次のような特徴があるためです。

C 言語を使用すると、コンピュータ機能の基本要素であるビット、バイト、アドレスを操作できます。C 言語プログラムは移植が非常に簡単です。移植性とは、あるコンピュータ用に作成されたソフトウェアを別のコンピュータでも使用できることを意味します。すべての高級言語はデータ型の概念をサポートしています。データ型は、変数の値の範囲と、変数に対して実行できる一連の操作を定義します。一般的なデータ型は、整数、文字、実数です。C プログラムでは、ほぼすべての型変換が可能です。たとえば、ほとんどの式では文字データと整数データを自由に混合できます。これは、厳密に型指定された高級言語では許可されません。C 言語のもう 1 つの重要な特徴は、キーワードが 32 個しかなく、これらのキーワードが C 言語を構成するコマンドであることです。C は構造化言語 厳密に学術的な観点から見ると、C はブロック構造化言語ですが、構造化言語と呼ばれることがよくあります。[6]

4.4データ表示モジュールソリューション

データパケット情報の表示はApache+php技術により実現されています. PHPは埋め込みコードを含むWebページを記述できるスクリプト言語です. これらのコードはページにアクセスしている限り実行可能であり、これらのコードは動的コンテンツを生成することもできます.出力の一部はクライアントの Web ブラウザに送信されます。

(1) 高いセキュリティ、プロフェッショナルな mysql データベースのセキュリティは他のデータベースよりもはるかに高いです。

(2) 制作スタイルはシンプルです。基本的な HTML 言語と特定のデザイン手法を知っていれば、独自のフォーラム スタイルの完全なセットを簡単に作成できます。

(3) 速度が速い。もちろん、これは絶対的なものではなく、他の多くの要因の影響を受けます。

5ネットワークパケット解析システムの実現

システム実現の過程で、開発プラットフォームはUbuntu (6.10) + Libpcap (0.8) + Apache (2.0) + Mysql + Php5、エディタはEmacs、コンパイラはgcc、デバッグツールはgdbが選択されます。オペレーティング システムから開発キット、編集およびコンパイル ツールに至るまで、選択されたツールはすべて無料の正真正銘のオープン ソース ツールであり、システム開発の成功を有利に保証し、同時に開発コストを削減します。これも他のシステムとの違いの一つです。

5.1システム制御モジュールの実現

モジュール設計の利点については第 4 章で説明しますが、モジュールをどのように分割するかは依然として重要な問題です。モジュール分割が無理があると実装が非常に面倒になってしまいます!システムは機能別に分かれており、4 つのモジュールがあります。1 つはデータ パケットのキャプチャ、もう 1 つはデータ パケットの分析、3 つ目はキャプチャされた情報の分析、4 つ目はキャプチャされたデータ パケットの情報の表示です。 。キャプチャモジュールはlibpcapを使用して実装され、データパケットの分析と保存はCとmysqlで使用され、データパケット情報の分析はC言語で使用され、データパケット情報の表示はphpで使用されます。4 つのモジュール間の呼び出し関係を図 4 に示します。

モジュール間の接続には、スレッド操作といくつかの重要なグローバル変数が使用されます。操作プロセスを図 5 に示します。

スレッド操作のコアコードは次のとおりです。

スレッドを開いてプログラムを実行します。

//パケットキャプチャ関数を実行するスレッドを作成する

void p_click(GtkWidget * ウィジェット,gpointer データ)

{

   pthread_mutex_lock(&mutex);

   stop=1;// キャプチャ条件

   pthread_mutex_unlock(&mutex);

  pthread_create(&p_thread,NULL,panalyzer,NULL);//スレッドを作成

}

//指定したスレッドの実行を停止するには stop を設定します。

void pexit(GtkWidget * ウィジェット,gpointer データ)

{

   pthread_mutex_lock(&mutex);

   stop=0;// キャプチャ条件

   pthread_mutex_unlock(&mutex);}

5.2パケットキャプチャモジュールの実現

パケットキャプチャはLibpcap開発キットの関数で実装されており、使用する関数は以下のとおりです。

pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)

ネットワーク パケットをキャプチャするために使用されるパケット キャプチャ記述子を取得します。device パラメータは、指定されたオープン ネットワーク デバイス名です。snaplen パラメータは、キャプチャされたデータの最大バイト数を定義します。promisc は、ネットワーク インターフェイスを無差別モードにするかどうかを指定します。to_ms パラメータはタイムアウトをミリ秒単位で指定します。ebuf パラメータは、pcap_open_live() 関数がエラーで NULL を返した場合にエラー メッセージを渡すためにのみ使用されます。  

char *pcap_lookupdev(char *errbuf)

pcap_open_live() または pcap_lookupnet() 関数によって呼び出すことができるネットワーク デバイス名ポインタを返すために使用されます。関数が失敗すると、NULL が返され、関連するエラー メッセージが errbuf に保存されます。

int pcap_lookupnet(char *device, bpf_u_int32 *netp, bpf_u_int32 *maskp, char *errbuf)

指定したネットワークデバイスのネットワーク番号とマスクを取得します。netp パラメータとマスクパラメータは両方とも bpf_u_int32 ポインタです。関数が失敗すると、-1 が返され、関連するエラー メッセージが errbuf に保存されます。  

int pcap_loop(pcap_t *p, int cnt,pcap_handler コールバック, u_char *user)

この関数は基本的に pcap_dispatch() 関数と同じですが、この関数は cnt データ パケットが処理されるかエラーが発生した場合にのみ戻り、読み取りタイムアウトは戻りません。また、pcap_open_live() 関数にゼロ以外のタイムアウト設定を指定した場合は、  

int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int 最適化, bpf_u_int32 ネットマスク)

str パラメータで指定された文字列をフィルタ プログラムにコンパイルします。fp は、pcap_compile() 関数で割り当てられる bpf_program 構造体へのポインタです。optimize パラメーターは、結果として得られるコードの最適化を制御します。netmask パラメーターは、ローカル ネットワークのネットマスクを指定します。[4]

パケットのコア コードをキャプチャします。

void panalyzer()

{

………………

  char *device=pcap_lookupdev(ebuf);//ネットワークカードを取得

  void catch_packet(u_char *args,const struct pcap_pkthdr *header,u_char *packet);

  pcap_lookupnet(device,&localnet,&netmask,ebuf);//ネットワーク情報を読み取る

  ………………

  pcap_t *pd=pcap_open_live(device,BUFSIZ,0,1000,ebuf);//オープンネットワークデバイス

  始まる時間();

  while(stop==1)

    {

      pcap_loop(pd,packet_number,catch_packet,NULL);//パケットをキャプチャする

    }

  終了時間();

  構造体 pcap_stat 統計;

  pcap_stats(pd,&stat);//統計キャプチャパケット

  ………………

  pcap_close(pd);

  戻る;}

関数呼び出しの関係を図 6 に示します。

5.3データパケット分析とストレージモジュールの実装

解析およびデータ ストレージ モジュールは C 言語を使用して、データ パケットの解析とデータベースへの接続を完了します。解析できるプロトコル ヘッダーは、イーサネット ヘッダー、LLC、ARP/RARP、IP、TCP、UDP、DHCP、DNS、ICMP ヘッダー形式です。同時に、ストレージ モジュールは mysql データベースに接続し、解析されたデータをデータベースに置きます。データベース設計からテーブル作成まで。

ヘッダー解析全体の基本プロセスを図 7 に示します。

DHCP ヘッダー データ構造の定義:

typedef 構造体 _DHCPHdr

{

#定義されている場合(WORD_BIGENDIAN)

  U_int8_t ホップ;

  U_int8_thlen;

  u_int8_t htype;

  u_int8_t 演算;

#それ以外

  U_int8_t 演算;

  u_int8_t htype;

  u_int8_thlen;

  u_int8_t ホップ;

#endif

  u_int32_t xid;

  u_int16_t 秒;

  u_int16_t フラグ;

  u_int32_t ciaddr;

  u_int32_t yiaddr;

  u_int32_t siaddr;

  u_int32_t giaddr;

  unsigned char chaddr[16];

  文字名[64];

  文字ファイル[128];

}DHCPHdr;

mysql データベースに接続するための主要なステートメント:

………………

MYSQLmysql;

  char str[1024];

     mysql_init(&mysql);//データベースを初期化する

  if(!(mysql_real_connect(&mysql,"localhost","root","159753","packet",0,NULL,0))) //データベースに接続します

    printf("エラー!\n");

………………

  if(mysql_query(&mysql,str)) printf("Dhcp 挿入エラー!\n");

 //insert文を実行する

  mysql_close(&mysql);

//データベースを閉じる

………………

5.4パケット情報解析モジュールの実現

データ パケット情報分析モジュールは、主にデータ パケット情報のデータ統計と分析を実行し、一般的な侵入方法の特性を比較します。関連する機能は次のとおりです: Land 攻撃、TCP SYN 攻撃、Ping Of Death 攻撃、WinNuke 攻撃、TCP/UDP ポート スキャン、synscan ポート スキャンなど。関数呼び出しプロセスを図 8 に示します。

コアデータのクエリと比較の機能コード:

………………

/*次のコードはデータベースに接続して機能比較を行うコードです。比較される機能は synscan のスキャン機能です*/

res = mysql_query(&mysql,"select sourceip from ip where ");// mysql语句生成

  if(!(result = mysql_store_result(&mysql)))//クエリ結果を返す

    {

      printf("エラー!\n");

    }

  それ以外

    {

      numRecords=mysql_num_rows(結果);

      for(count=0;count<numRecords;count++)//クエリデータを抽出する

{

  行=mysql_fetch_row(結果);

  if(atoi(row[0])==39426&&atoi(row[1])==1028)//特性条件を設定

    {

      n++;

    }

}

      fputs("<br>",fp);

      if(n>0)

//解析結果の説明を出力する

fprintf(fp,"ホストは synscan パケットを受信しました。synscan ポートによってスキャンされる可能性があります!\n");

      それ以外

fprintf(fp,"ホストはデータ パケットを受信しましたが、synscan ポート スキャンが見つかりませんでした!\n");

………………

5.5データパケット情報表示モジュールの実現

データパケット情報表示モジュールはphp技術を利用して実現しています。合計 14 ページあり、パケット情報が異なる順序で表示されます。ホーム ページ、分析ルール、分析結果、キャプチャ順表示、IP ソース別表示、IP 宛先別表示、TCP ソース ポート別表示、TCP 宛先ポート別表示、UDP ソース ポート別表示、UDP 宛先ポート別表示、 ICMP情報表示、ARP/RAPR情報表示、DNS情報表示、DHCP情報表示。ユーザーが見たい有益な情報を可能な限り表示するのが原則です。

コア表示コード:

/*次のコードは、データをクエリしてフォームにデータを表示するためのコア コードです*/

………………

<?php

$conn = new mysqli ('localhost', 'root', '159753', 'packet');//データベースに接続します

$conn->query ("SET NAMES 'utf8'");

$query_str = "SELECT packetnumber,cli_addr,y_addr,n_s_addr,r_a_addr,rou_addr,dns_addr,le_time,re_time,reb_time,cli_id FROM dhcp order by cli_addr";//設定查询语句

$result = $conn->クエリ ($query_str);

    ………………

//出力形式を設定する

<テーブル>

  <tr>

    <td>パケット ID</td>

    <td>顧客の住所</td>

    <td> 自分のアドレス</td>

    <td>次のサーバー アドレス</td>

    <td>プロキシ アドレス</td>

    <td>ルーターアドレス</td>

    <td>DNS アドレス</td>

    <td>IP アドレスのリース時間</td>

    <td>更新時間</td>

    <td>再バインド時間</td>

    <td>顧客 ID</td>

 </tr>

EOM;

  while(($row_data=@$result->fetch_assoc())!==NULL)

{

エコー <<<EOM

<tr>

<td>{$row_data['パケット番号']}</td>

<td> {$row_data['cli_addr']}</td>

<td> {$row_data['y_addr']}</td>

<td> {$row_data['n_s_addr']}</td>

<td> {$row_data['r_a_addr']}</td>

<td> {$row_data['rou_addr']}</td>

<td> {$row_data['dns_addr']}</td>

<td> {$row_data['le_time']}</td>

<td> {$row_data['re_time']}</td>

<td> {$row_data['reb_time']}</td>

<td> {$row_data['cli_id']}</td>

………………

6ネットワークパケット解析システムのテスト解析

6.1テスト計画とテスト環境

この主題で設計および開発されたネットワーク データ パケット分析システムには、データ パケットのキャプチャ、データ パケットの分析と保存、データ パケット情報の統計分析、およびデータ パケット情報の表示が含まれます。システムの主な機能を目的として、データパケットのキャプチャテスト、データパケットの分析と保存テスト、データパケット情報の統計分析テスト、データパケット情報の表示テストを開発したテスト計画です。

試験はキャンパスネットワークの寮内で行われ、ホストシステムはVMWARE5.1を搭載し、ゲートウェイに相当するUnbuntu6.10を使用したWindowsXPです。

ネットワークパケット解析システム:Ubuntu6.10+libpcap0.8+mysql+apach2.0+php5.0

ネットワーク環境:キャンパスネットワーク10Mイーサネット。

コンピュータハードウェア:AMD1.6+512M+8G+100Mネットワークカード。

6.2試験結果

6.2.1パケットキャプチャ

テストの目的は、システムがネットワーク カードに到着するデータ パケットをキャプチャできるかどうかを確認することです。

テスト要件は、システムを開き、ホスト上で通常のネットワーク操作を実行して必要なネットワーク データ パケットを生成し、キャプチャ結果を観察することです。

テストの結果、システムがキャプチャしたデータを表示すると、すべてのデータが相互に接続されており、区別して表示するのが容易ではないことがわかりました。改良後は、データの前に分割記号とデータパケットのIDが追加され、データが非常にわかりやすくなりました。改善後、システムはデータ パケットのキャプチャを正常に完了し、図 6-1 に示すようにキャプチャ結果を端末に表示します。

6.2.2パケットの分析と保存

テストの目的は、システムがキャプチャされたデータ パケットを解析し、解析されたデータ情報をデータベースに保存できるかどうかを検証することです。

テスト要件は、システムを開き、ホスト上で通常のネットワーク操作を実行して、必要なネットワーク データ パケットを生成することです。通常の状況では、複数の種類のデータ パケットを生成できない場合があります。現時点では、いくつかの特別な操作が必要です。さまざまなプロトコルのデータを生成します。ターミナルでキャプチャ結果を確認し、mysql データベースを開いてデータがあるかどうかを確認します。分析のスクリーンショットを図 9 に示します。

テストを通じて、システムが最も一般的なネットワーク データ パケットの分析と保存を完了できることが判明しました。現在、解決できるデータ パケットには、イーサネット ヘッダー、LLC、ARP/RARP、IP、TCP、UDP、DHCP、 DNS、ICMP。問題は、私の知識が乏しいため、すべてのプロトコルヘッダーを解析できないことですが、今後さらに研究してシステムを改善したいと考えています。

6.2.3データパケット情報の簡易解析

テストの目的は、分析結果の正確性と合理性を検証することです。

テスト要件は、システムを開き、ホスト上で通常のネットワーク操作を実行して必要なネットワーク データ パケットを生成し、データ パケットがキャプチャされるのを待ち、クリックしてデータ パケット情報を分析することです。分析モジュールは HTML ドキュメントを生成します。 apach ディレクトリ内で結果を表示します。次に、apachh+php Web ページを通じてパケット情報の分析結果を表示します。

テストを通じて、パケット情報分析モジュールは、Land 攻撃、TCP SYN 攻撃、Ping Of Death 攻撃、WinNuke 攻撃、TCP/UDP ポート スキャン、synscan ポート スキャンなどの一般的なネットワーク攻撃を検出できることがわかりました。しかし、これらの判定は比較的単純で感度に欠ける一方、ホストの業務内容や環境に依存するホストでは、システムの正常な状態における正確な動作特性データを提供する必要がある。解析結果を図 10 に示します。

6.2.4データパケット情報表示

テストの目的は、表示モジュールがキャプチャおよび解析されたパケット情報と分析結果の表示を正常かつ合理的に表示できるかどうかを観察することです。

テスト要件は、システムを開き、ホスト上で通常のネットワーク操作を実行して必要なネットワーク データ パケットを生成し、データ パケットがキャプチャされるのを待ち、クリックしてデータ パケット情報を分析し、分析情報と分析結果を表示することです。 Web ページを介したデータ パケット情報。14 ページ。

テストの結果、パケット解析と情報解析結果を経て、14 ページすべてが正常に表示できることがわかりました。情報表示の原則は、ユーザーが頻繁に使用する情報をできるだけ合理的に表示することです。データベースには情報が多すぎるため、表示されるデータがデータベースのすべての情報ではなく、すべてのデータが役立つとは限りません。このページには、頻繁に閲覧される情報のみが表示されます。表示結果を図 11 に示します。

結論は

この文書では、主にネットワーク データ パケット分析ツールの設計、実装、テストについて紹介します。さらに、このホワイトペーパーでは、関連する理論的知識と開発ツールも紹介します。

この文書では、まずネットワーク データ パケット解析の意味と機能を紹介し、次にネットワーク データ パケット解析システムの基本構造と実装プロセスで一般的に使用されるテクノロジ (主に libpcap、apach、mysql、php などのテクノロジを含む) を紹介します。 。

次に、この論文のコア システムの設計と実装では、主に libpcap を使用してデータ パケットをキャプチャし、etnernet、LLC、arp/rarp、ip、tcp、udp、icmp、dns、dhcp プロトコル ヘッダーを分析し、データ パケット情報を変換します。をデータベースに格納し、解析モジュールでパケット情報の統計解析を実現し、解析結果を表示モジュールに表示すると同時に、表示モジュールでキャプチャしたパケット解析情報を表示する機能を提供し、システムの機能。システム開発プラットフォームはUbuntu (6.10) + Libpcap (0.8) + Apache (2.0) + Mysql + Php5、エディタはEmacs、コンパイラはgcc、デバッグツールはgdbです。選択されたツールと開発キットはすべてオープン ソースまたはフリー ソフトウェア ツールであることがわかり、開発コストが削減されるだけでなく、著作権の問題も回避されます。これもこのシステムの特徴の一つです。

最後に、著者のレベルが限られているため、論文にはエラーや欠陥が避けられません。これは主に以下の点に反映されています。データ パケット キャプチャ モジュールはソフトウェア キャプチャを使用しており、ネットワーク速度が速いホストはパケットを失い、ネットワーク速度に影響を与えます。解析モジュールでは、このシステムで解析できるプロトコルは最も一般的なプロトコルのみであり、すべてのプロトコルではありません。今後の研究でこのシステムを完成させる機会があれば幸いです。

論文の不備につきましては、専門家の皆様、先生方に訂正、ご批判を賜りますよう心よりお願い申し上げます。心より感謝申し上げます。

参考文献

[1] Xie Xiren、コンピューター ネットワーク [M]、北京: 電子産業新聞、2005.8

[2] Han Donghai. 侵入検知システムの例の分析 [M]. 北京: 清華大学出版局、2002.5

[3] W. Richard Stevens [米国]. TCP/IP の詳細な説明 第 1 巻 [M]. Fan Jianhua、Xu Guanghui、Zhang Tao 訳、北京: Mechanical Industry Press、2004.4

[4] Liu Wentao、Linux ネットワーク侵入検知システム [M]、北京: 電子工業新聞、2004.10

[5] Vikram Vaswani[US]. MySQL Complete Manual [M]. Xu Xiaoqing、Lu Xiaocun 訳、北京: Electronic Industry Press、2004.11

[6] StephenPrata [US].C Primer Plus[M]. 北京: Yundian Studio 翻訳、2005.2

[7] Gary R.Wright [米国]、W.Richard Stevens、TCP/IP の詳細な説明、第 2 巻 [M]、北京: Mechanical Industry Press、2006.2

[8] Yu Zhihu. UNIX プラットフォームでの C プログラミング [M]. 北京: 清華大学出版局、2001.10

[9] Marc Wascheider [US]. PHP および MySQL Web アプリケーション開発コア テクノロジ [M]. Ma Zhaohui、Wen Jiwen. 北京: Mechanical Industry Press、2006.9

[10] Cao Tianjie、Zhang Yongping、Su Cheng、コンピュータ システム セキュリティ [M]、北京: Higher Education Press、2003.6

 

ブロガーに注目してください。次の記事はもっとエキサイティングです

ワンクリックでスリーインワン!

ワンクリックでスリーインワン!

ワンクリックでスリーインワン!
ワンクリックトリプルありがとうございます!

おすすめ

転載: blog.csdn.net/m0_56073435/article/details/131478209