はじめに
サイバーセキュリティの分野では、疑わしいネットワーク活動を理解し、特定することが、安全で回復力のあるネットワークインフラストラクチャを維持するために不可欠です。このチュートリアルでは、強力なネットワークプロトコルアナライザーである Wireshark を使用して、ネットワーク環境における潜在的な脅威を検出し、分析するプロセスを説明します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
サイバーセキュリティの分野では、疑わしいネットワーク活動を理解し、特定することが、安全で回復力のあるネットワークインフラストラクチャを維持するために不可欠です。このチュートリアルでは、強力なネットワークプロトコルアナライザーである Wireshark を使用して、ネットワーク環境における潜在的な脅威を検出し、分析するプロセスを説明します。
Wireshark は、強力なオープンソースのネットワークプロトコルアナライザーであり、ネットワーク上をリアルタイムで送受信されるデータをキャプチャし、検査することができます。セキュリティ専門家は、以下のような目的で Wireshark を使用します。
まず、Ubuntu システムに Wireshark をインストールすることから始めましょう。ターミナルを開き、次のコマンドを実行します。
sudo apt update
sudo apt install -y wireshark
インストール中に、非スーパーユーザーがパケットをキャプチャできるようにするかどうかを尋ねられます。この実験環境では、利便性のために「Yes」を選択してください。
インストールには数分かかる場合があります。完了すると、Wireshark が正常にインストールされたことを示す出力が表示されます。
Wireshark を root として実行せずにパケットをキャプチャするには、ユーザーを wireshark
グループに追加する必要があります。
sudo usermod -a -G wireshark $USER
変更を有効にするには、ログアウトして再度ログインする必要がありますが、この実験では、次のコマンドで変更をすぐに適用できます。
newgrp wireshark
Wireshark が正しくインストールされたことを確認しましょう。
wireshark --version
次のような出力が表示されるはずです。
Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)
Copyright 1998-2022 Gerald Combs <[email protected]> and contributors.
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiled (64-bit) with Qt 5.15.3, with libpcap, with POSIX capabilities
(Linux), with libnl 3, with Lua 5.2.4, with GLib 2.72.1, with zlib 1.2.11,
with Snappy, with libpcap 1.10.1, with GNUTLS 3.7.3, with Gcrypt 1.9.4.
次に、グラフィカルインターフェースで Wireshark を起動しましょう。
wireshark &
Wireshark アプリケーションが新しいウィンドウで開きます。パケットキャプチャに使用できるネットワークインターフェースのリストが表示されたメインインターフェースが表示されます。
Wireshark のユーザーインターフェースに慣れてください。
次のステップでは、Wireshark を使用してネットワークトラフィックをキャプチャする方法を学びます。
ネットワークトラフィックをキャプチャする前に、どのネットワークインターフェースを監視する必要があるかを理解する必要があります。一般的なシステムでは、いくつかのインターフェースがある場合があります。
eth0
または ens33
: イーサネット(有線)接続wlan0
: Wi-Fi 接続lo
: ループバックインターフェース(ローカルトラフィック)システムで利用可能なネットワークインターフェースを確認しましょう。
ip a
このコマンドは、すべてのネットワークインターフェースを表示します。 eth0
、ens33
、またはその他のネットワークインターフェースを探します(正確な名前は、システム構成によって異なります)。
分析するネットワークトラフィックを確保するために、いくつかの Web リクエストを実行して、基本的な HTTP トラフィックを生成しましょう。
## キャプチャを保存するためのディレクトリを作成します
mkdir -p ~/wireshark_lab
## いくつかの HTTP トラフィックを生成します
curl -s http://example.com > /dev/null
curl -s http://google.com > /dev/null
次に、Wireshark を使用してネットワークトラフィックをキャプチャしましょう。
wireshark &
Wireshark のメインウィンドウで、プライマリネットワークインターフェース(おそらく eth0
または ens33
- 前に ip a
コマンドで特定したインターフェースを使用)を見つけます。
ネットワークインターフェースをダブルクリックして、パケットのキャプチャを開始します。
キャプチャされると、メインウィンドウにパケットが表示され始めます。
Wireshark がキャプチャしている間に、さらにネットワークトラフィックを生成しましょう。
## 新しいターミナルウィンドウを開いて実行します。
ping -c 5 google.com
Wireshark に戻ると、ICMP ping パケットがキャプチャに表示されるはずです。
キャプチャを停止するには、ツールバーの赤い四角いボタンをクリックするか、Capture
> Stop
に移動します。
いくつかのネットワークトラフィックをキャプチャしたので、さらに分析するために保存しましょう。
Wireshark で、File
> Save
に移動するか、Ctrl+S
を押します。
先ほど作成した ~/wireshark_lab
ディレクトリに移動します。
ファイルに basic_capture.pcapng
という名前を付け、Save
をクリックします。
## キャプチャファイルが保存されたことを確認します
ls -la ~/wireshark_lab/
出力に basic_capture.pcapng
ファイルが表示されるはずです。
保存したキャプチャファイルを開く練習をしましょう。
Wireshark で、File
> Open
に移動するか、Ctrl+O
を押します。
~/wireshark_lab/basic_capture.pcapng
に移動して開きます。
キャプチャされたパケットが Wireshark に表示され、分析の準備ができました。
次のステップでは、このキャプチャされたトラフィックをフィルタリングして分析し、特定の種類のネットワーク活動を特定する方法を学びます。
Wireshark の表示フィルターを使用すると、特定の基準に一致するパケットのみを表示できます。これは、関連情報を検索するために、大きなパケットキャプチャを分析する際に不可欠です。
Wireshark 表示フィルターの基本的な構文は次のとおりです。
protocol.field == value
例:
ip.addr == 192.168.1.1
- この IP アドレスを持つパケットを表示しますtcp.port == 80
- TCP ポート 80 を持つパケットを表示しますhttp
- すべての HTTP パケットを表示しますキャプチャしたトラフィックにいくつかの基本的なフィルターを適用する練習をしましょう。
wireshark ~/wireshark_lab/basic_capture.pcapng &
パケットリストの上部にあるフィルターバーを見つけます(空の場合は「Apply a display filter...」と表示されます)。
DNS トラフィックをフィルタリングしましょう。フィルターバーに次のように入力します。
dns
これで、DNS パケットのみが表示されるはずです。これらは、ドメイン名解決のリクエストとレスポンスです。
http
フィルターを適用し、HTTP パケットを観察します。
ip.addr == [replace_with_an_ip_from_your_capture]
例:ip.addr == 93.184.216.34
(example.com へのトラフィックが表示される場合)
論理演算子を使用してフィルターを組み合わせることができます。
&&
または and
は AND 演算用||
または or
は OR 演算用!
または not
は NOT 演算用組み合わせたフィルターを試してみましょう。
http && ip.addr == [replace_with_an_ip_from_your_capture]
これにより、指定された IP アドレスとの間の HTTP トラフィックのみが表示されます。
TCP トラフィックのフィルターを作成して保存しましょう。
tcp
フィルターを適用します。TCP パケットのみが表示されるはずです。
このフィルターを将来使用するために保存しましょう。フィルターバーの右側にある「+」ボタンをクリックします。
表示されるダイアログで、次のように入力します。
TCP Traffic
tcp
「Save」をクリックして、このフィルターを保存します。
Wireshark は、キャプチャ内のプロトコルの便利な可視化を提供します。
Statistics
> Protocol Hierarchy
に移動します。
これにより、プロトコルがパーセンテージとパケット数で内訳表示されます。
レビューが完了したら、このウィンドウを閉じます。
フィルタリングされたキャプチャのビューを保存しましょう。
選択したフィルター(例:http
または dns
)を適用します。
File
> Export Specified Packets
に移動します。
「Packet Range」セクションで「Displayed」が選択されていることを確認します。
~/wireshark_lab/
に移動し、filtered_capture.pcapng
として保存します。
ファイルが保存されたことを確認します。
ls -la ~/wireshark_lab/
元のキャプチャファイルとフィルタリングされたキャプチャファイルの両方が表示されるはずです。
次のステップでは、これらのフィルタリング技術を使用して、疑わしいネットワーク活動を特定します。
セキュリティ目的でネットワークトラフィックを分析する場合、特定のパターンと動作が疑わしいまたは悪意のある活動を示している可能性があります。
学習目的のために、Wireshark で検出できる疑わしいネットワーク活動をいくつかシミュレートしてみましょう。
## セキュリティ分析用のディレクトリを作成します
mkdir -p ~/wireshark_lab/security_analysis
## ポートスキャンをシミュレートします(デモンストレーションのためにいくつかのポートに限定)
nmap -p 80,443,22,21,25 scanme.nmap.org > ~/wireshark_lab/security_analysis/scan_results.txt 2>&1
注:上記の nmap
コマンドは、nmap のテスト用に特別に設定された scanme.nmap.org サーバーの一般的なポートをスキャンします。
wireshark &
Wireshark で、プライマリネットワークインターフェースをダブルクリックして、キャプチャを開始します。
別のターミナルで、シミュレーションコマンドを実行します。
## キャプチャ中に別のポートスキャンをシミュレートします
nmap -p 80,443,22,21,25 scanme.nmap.org > /dev/null 2>&1
コマンドが完了したら、赤い四角いボタンをクリックして Wireshark キャプチャを停止します。
このキャプチャを ~/wireshark_lab/security_analysis/
ディレクトリに suspicious_traffic.pcapng
として保存します。
ポートスキャンは、攻撃者がシステムで実行されているサービスを発見するために使用する一般的な偵察手法です。キャプチャ内のポートスキャン活動を特定しましょう。
tcp.flags.syn == 1 && tcp.flags.ack == 0
このフィルターは、接続を開始するために使用される TCP SYN パケットを表示します。同じホスト上の異なるポートへのこれらのパケットが多数あることは、ポートスキャンを示しています。
tcp.flags.syn == 1 && tcp.flags.ack == 0 && ip.addr contains scanme.nmap.org
簡単なセキュリティ分析レポートで調査結果を文書化しましょう。
## レポートファイルを作成します
nano ~/wireshark_lab/security_analysis/security_report.txt
ファイルに次の内容を追加します。
セキュリティ分析レポート
=======================
日付: [現在の日付]
調査結果:
1. ポートスキャン活動が検出されました
- ソース: [あなたの IP アドレス]
- ターゲット: scanme.nmap.org
- ターゲットポート: 80、443、22、21、25
- 証拠: 複数のポートへの TCP SYN パケット
2. 分析方法:
- Wireshark を使用してネットワークトラフィックをキャプチャしました
- フィルターを適用しました: tcp.flags.syn == 1 && tcp.flags.ack == 0
- 体系的な接続試行のパターンを特定しました
3. 推奨されるアクション:
- 許可されていないスキャン活動を監視する
- ファイアウォールルールを実装して、発信スキャンを制限する
- ネットワーク侵入検知システムの実装を検討する
Ctrl+O
、Enter
の順に押してファイルを保存し、Ctrl+X
で nano を終了します。
潜在的なセキュリティ問題を検出するためのカスタムフィルターを作成しましょう。
(tcp.flags.syn == 1 && tcp.flags.ack == 0) || (dns.qry.type == 1 && dns.qry.name contains "suspicious") || (http.request && ip.addr == 192.168.0.1)
この複雑なフィルターは、以下を検索します。
このフィルターを保存します。
Security Monitoring
今後のために、このフィルター設定をエクスポートします。
## まず、Wireshark プロファイルディレクトリを開いて、保存されたフィルターを見つけます
ls -la ~/.config/wireshark/
セキュリティ分析の成果物を検証しましょう。
## 作成したすべてのファイルを一覧表示します
ls -la ~/wireshark_lab/security_analysis/
以下が表示されるはずです。
scan_results.txt
- nmap スキャンの出力suspicious_traffic.pcapng
- 疑わしい活動の Wireshark キャプチャsecurity_report.txt
- 分析レポートこれらのファイルは、基本的なサイバーセキュリティ分析ワークフローを表しています。
実際のセキュリティ環境では、検出技術を継続的に改善し、より洗練されたフィルターを作成し、Wireshark 分析を他のセキュリティツールと統合して、包括的な脅威検出と対応を行います。
この実験では、サイバーセキュリティで広く使用されている強力なネットワークプロトコルアナライザーである Wireshark の実践的な経験を積みました。以下の方法を学びました。
これらのスキルは、サイバーセキュリティ目的のネットワークトラフィック分析の基礎を形成します。Wireshark を効果的に使用する方法を理解することにより、ネットワークトラフィックを監視し、異常を検出し、重大な損害が発生する前に潜在的なセキュリティ脅威を特定できます。
サイバーセキュリティの旅を続ける中で、より高度なフィルタリング技術を学び、カスタム検出ルールを開発し、Wireshark を他のセキュリティツールと統合して、包括的なネットワーク監視ソリューションを作成することにより、これらの基本を基盤として構築できます。