【実務・中級編】 ARPスプーフィングおよび中間者攻撃(MitM)のネットワーク痕跡 – インシデントレスポンス & フォレンジック(DFIR)防御ガイド

LAN内の「透明な盗聴者」を見抜け:ARPスプーフィングと戦うための実践的DFIR

現場でインシデント対応をしていると、意外なほど「ネットワークの信頼」を前提とした設計が仇になっているケースに出くわす。特に、ローカルネットワーク(LAN)内でのARPスプーフィングによる中間者攻撃(MitM)は、ファイアウォールやWAFをすり抜ける「死角」だ。

今日は、ルーターと端末の間に忍び込み、通信を覗き見・改ざんする攻撃者の手口と、それを現場でどう検知・遮断するかについて、綺麗事抜きで語らせてもらう。

—

1. なぜ「ARP」は脆弱なのか?

ARP(Address Resolution Protocol)は、IPアドレスをMACアドレスに変換するためのプロトコルだが、設計思想が「善意の通信」に基づいている。

攻撃者は、特定のターゲットに対して「私がデフォルトゲートウェイ(ルーター)だ」という嘘のARP応答(Gratuitous ARP)を送りつける。ターゲットのARPキャッシュテーブルが書き換えられれば、通信はすべて攻撃者の端末を経由するようになる。これがMitMの入り口だ。

現場で見る「動かぬ証拠」:

  • ARPキャッシュの不整合: arp -a を実行し、ゲートウェイのMACアドレスが本来のものと異なる。
  • 重複するMACアドレス: 同じIPに対して異なるMACアドレスが頻繁に割り当てられている、あるいは一つのMACアドレスが複数のIPに紐付いている。

—

2. 攻撃の手口(PoCのメカニズム)

攻撃者は arpspoof や Bettercap といったツールを使う。Pythonで書くと、この処理は驚くほどシンプルだ。以下は概念的なコードだが、これがネットワーク内で実行されると、いかに恐ろしいか理解してほしい。

# 概念実証: ARPスプーフィングのメカニズム(scapyライブラリを使用)
from scapy.all import ARP, send

def spoof(target_ip, spoof_ip):
    # ターゲットに対して、なりすまし対象のIPと自MACを紐付けるパケットを作成
    packet = ARP(op=2, pdst=target_ip, hwdst="ターゲットのMAC", psrc=spoof_ip)
    send(packet, verbose=False)

# ゲートウェイとターゲットの両方に嘘をつき続ける
# これをループで回すと、通信が攻撃者を経由し始める

この処理がバックグラウンドで走っていると、HTTPS化されていない通信は丸裸になり、SSL/TLSであっても「SSLストリッピング」によって強制的にHTTPへダウングレードされるリスクがある。

—

3. 現場で今すぐ打つべき対策

「LAN内だから安心」という考えは今すぐ捨てろ。具体的な防衛策を3つ提示する。

① 静的ARPテーブルの導入(小規模環境)

サーバー等の重要な機器において、ルーターのMACアドレスを固定してしまうのが最強だ。Linuxであれば以下の設定で静的エントリを追加できる。

# /etc/ethers に MAC IP の形式で記述
# 00:11:22:33:44:55 192.168.1.1
# arpコマンドで読み込み(起動時に実行されるようrc.local等に記述)
arp -f /etc/ethers

② セキュリティスイッチによる「DAI」の有効化

企業ネットワークであれば、スイッチ側の機能を使うのが正攻法だ。DAI(Dynamic ARP Inspection) を有効にすると、スイッチがARPパケットを検証し、正規のMAC/IPバインディングと一致しないARPパケットをドロップしてくれる。

③ 開発レベルでの「HTTPS強制(HSTS)」

ネットワークが盗聴されていても、通信そのものを暗号化・保護していれば被害は最小限に抑えられる。Webアプリ開発者なら、必ずHSTS(HTTP Strict Transport Security)を実装すること。

NginxでのHSTS設定例:

# 1年間HTTPS接続を強制し、サブドメインも対象にする
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

—

4. DFIRアナリストからの教訓:ログだけを見るな

インシデント調査の際、アプリケーションログばかり追いかけるエンジニアが多いが、ARPスプーフィングのようなネットワーク層の攻撃は、「通信の遅延」や「証明書エラーの急増」という形で現れる。

  • 異常の兆候: 突然、特定のセッションでSSL証明書エラーが出始めたら、それはMitMの警告かもしれない。
  • 監視のポイント: ZabbixやPrometheusで、ネットワークインターフェースの「ARPパケットの急増」や「MACアドレス学習のフラッピング」をアラート対象にするべきだ。

最後に

セキュリティは、魔法のツールを一つ入れれば完了するような単純な作業ではない。ネットワークの挙動を正しく理解し、OS、スイッチ、そしてアプリケーションの各層で「相手を疑う」設計を積み重ねること。それが、泥臭いが唯一無二の防御策だ。

今日の解説が、君たちの現場の堅牢性を高める一助になれば幸いだ。何か奇妙なトラフィックを見つけたら、まずは物理層から疑う癖をつけてくれ。それが一流のDFIRへの第一歩だ。

コメント

タイトルとURLをコピーしました