スニッフィング
Sniffing
ネットワーク上のパケットを取得・観察して通信内容や動作を調べることです。許可された障害調査にも使いますが、第三者の通信を不正に収集すれば盗聴になります。
🐾 猫で例えると?
レースのカーテン越しに見える茶トラ。この姿を「間にある場所から、やり取りを観察する」イメージに重ねます。通信のスニッフィングは、観測できる経路でパケットを取得して調べることです。隠れていること自体が要件ではなく、許可された調査か、取得した情報をどう扱うかも区別します。
💻 プログラミング / IT現場における「スニッフィング」とは?
「スニッフィング」という言葉自体は「匂いを嗅ぐ」という意味から来ており、ITの現場ではネットワーク上を流れるパケット(データの欠片)を収集・解析することを指します。実は、この技術自体は悪者ではありません。
システムエンジニアやインフラエンジニアは、「Wireshark」や「tcpdump」といったツールを使い、システムの不具合調査やネットワークの遅延原因を特定するために日常的にパケットキャプチャを行います。しかし、この強力な「中身を見る技術」を悪意のある攻撃者が利用した時、それは「盗聴(スニッフィング)」という深刻なセキュリティインシデントに変わります。
⚠️ スニッフィングの仕組みと注意点
プロミスキャスモードは、ネットワークとの接続部品(NIC)に届いた、自分宛て以外の通信データ(フレーム)も取り込む設定です。同じネットワークの通信がすべて自動的に見えるわけではありません。スイッチの転送先やミラーポート、取得する場所によって観測できる範囲が変わります。
特に危険なのが、パスワードや個人情報が「平文(暗号化されていない状態)」で送信されている場合です。攻撃者にパケットを覗き見られた瞬間、情報がそのまま読み取られてしまいます。カフェなどのフリーWi-Fi環境は、同じネットワークに不特定多数が接続しているため、スニッフィングの標的になりやすい典型的な場所です。
パケットをキャプチャする(調査目的の例)
自分が管理し、取得を許可されたLinuxの検証環境での例です。eth0は実際のインターフェース名へ置き換えます。通信内容には認証情報等が含まれ得るので、対象と保存期間を絞ります。
# HTTPの通信を最大100パケット保存する例
sudo tcpdump -i eth0 -c 100 port 80 -w capture.pcap このコマンドを実行すると、指定したネットワーク出入口を通るデータが記録されます。運用保守には不可欠な作業ですが、機密情報が含まれる可能性があるため、取得したデータの取り扱いには細心の注意が求められます。
🛠️ スニッフィングを防ぐためのポイント
スニッフィングによる被害を防ぐための最も効果的な対策は、「見られても意味がわからない状態にする」ことです。
- TLSで内容を保護する: HTTPSは通信経路上で本文等を読み取られる危険を減らします。接続先IPや通信量など、暗号化しても観測できる情報は残ります。
- セキュアなプロトコルの利用: TelnetやFTPなどの平文で通信する古いプロトコルは避け、SSHやSFTPなどの暗号化通信をサポートするプロトコルを利用します。
- VPNの保護範囲を理解する: VPNは端末とVPN接続先の間を保護します。その先の経路や接続先サイトの信頼性まで保証するものではないため、HTTPSの確認も続けます。
隙間から覗く茶トラのように、パケットを見ると通信の動きを調べられます。調査では取得する範囲と許可を確認し、記録したデータの保管先にも気を配りましょう。通信内容の保護にはHTTPSなどを使い、VPNが保護する経路とその外側を区別して考えます。