MENU

TCPセッションハイジャックとは?シーケンス番号を悪用した通信乗っ取りの仕組みと現代ネットワークでの対策ガイド

社内サーバーとの通信が突然切断されたとき、再接続してみると操作ログに身に覚えのない書き込みが残っていた——こんなシナリオが現実になる攻撃手法があります。その名が「TCPセッションハイジャック」です。

TCP/IPは今のインターネットを支える基幹プロトコルですが、設計当初からセキュリティよりも信頼性・効率を優先した部分があります。TCPセッションハイジャックはその性質を突き、正規の通信セッションを横から奪い取る攻撃です。

この記事では、TCPセッションハイジャックの仕組みを防御目的で解説し、現代のネットワーク環境でリスクを実際にどこまで下げられるかを、インフラエンジニアや情シス担当者が明日から使えるレベルで解説します。

TCPセッションハイジャックとは?シーケンス番号を悪用した通信乗っ取りの仕組みと現代ネットワークでの対策ガイド - 解説

目次

TCPセッションハイジャックとは?

TCPセッションハイジャックとは、TCP(Transmission Control Protocol=通信の信頼性を保証するプロトコル)が確立した通信セッションに攻撃者が不正に割り込み、セッションの「主役」を正規ユーザーから奪い取る攻撃手法です。

TCPセッションが乗っ取られると、攻撃者は認証済みのセッションをそのまま流用できます。つまり、ログイン認証をパスした後の状態から操作を続けることが可能になります。影響を受けやすいのは、暗号化されていないプロトコル(HTTP・Telnet・FTPなど)を使っているシステムです。

TCP/IPの「シーケンス番号」とは何か

TCPは通信の相手と「コネクション(接続)」を確立してからデータをやり取りします。この確立に使われるのが「3ウェイハンドシェイク」と呼ばれる手順です。

# 3ウェイハンドシェイクの流れ(概念図) クライアント サーバー | ─── SYN (ISN=1000) ──> | # ①接続要求(初期シーケンス番号を提示) | <── SYN-ACK (ISN=5000) ─| # ②受け入れ(サーバーの初期シーケンス番号を提示) | ─── ACK ──────────────> | # ③確認(接続確立)

ここで登場する「ISN(Initial Sequence Number=初期シーケンス番号)」が重要です。TCPは送受信するデータに通し番号(シーケンス番号)を付けており、「次に届くべきパケットのシーケンス番号」を相互に把握することで通信の整合性を保ちます。

攻撃者がこのシーケンス番号を正確に予測・取得できれば、正規のクライアントになりすましたパケットをサーバーに受理させることが可能になります。これがTCPセッションハイジャックの本質です。

攻撃の仕組み(敵を知る)

1. ブラインドTCPハイジャック(ISN予測攻撃)

攻撃者が通信経路の外側にいる場合(パケットを直接見られない状況)に使われる手法です。

TCP/IPが初期設計されたRFC 793(1981年)の実装では、多くのOSがISNを「時刻ベース」や「単調増加の数値」で生成していました。攻撃者が事前に複数の接続を試みてISNのパターンを収集すれば、次のISNを統計的に予測できたのです。

この手法で成立した攻撃として知られる想定例として、「Xmasツリー攻撃」や「Kevin Mitnick事件(1994年)」が挙げられます。現代のOSはISNに暗号論的乱数を用いるため、外部からの予測はほぼ不可能になっています。ただし古いOSや組み込み機器・IoT端末の中には未改善のものが残っており、引き続き注意が必要です。

2. ARPスプーフィングを経由したセッション乗っ取り

同一ネットワーク内の攻撃者が使う手法です。ARPスプーフィング(ARPテーブル汚染)によって通信を自分のPCに誘導し、シーケンス番号を傍受してセッションに割り込みます。

ARPスプーフィングについての詳しい解説は、こちらの記事をご参照ください:ARPスプーフィングとは?同一ネットワーク内の通信を傍受する中間者攻撃の仕組みと対策ガイド

3. パケット傍受+リアルタイム注入

通信経路上(スイッチのミラーポートや無線LANなど)でパケットを傍受できる場合、リアルタイムでシーケンス番号を読み取り、タイミングよく不正パケットを注入します。Telnet・HTTPなど平文プロトコルで通信している場合に特に有効で、現在の企業ネットワークでは平文通信をどれだけ残しているかが直接リスクに直結します。

具体的な防御手順

1. 全通信をTLS/SSHで暗号化する

TCPセッションハイジャックに対する最も効果的かつ根本的な対策は「暗号化」です。攻撃者がシーケンス番号を取得してパケットを注入できたとしても、TLSセッション内のメッセージには別途MACによる完全性検証が付加されています。平文が見えない状態では、意味ある操作を行うことが著しく困難になります。

・HTTP → HTTPS:Webサーバー・内部管理画面を含め全てHTTPS化する
・Telnet → SSH:Telnetは平文プロトコルのため即刻廃止を検討する
・FTP → SFTP・FTPS:ファイル転送も暗号化プロトコルに移行する

Linuxサーバー上でのSSH強化設定については、姉妹サイトLinuxMaster.JPでも詳しく解説しています。

2. LinuxカーネルのTCPタイムスタンプとISN設定を確認する

現代のLinuxカーネルはデフォルトで暗号論的に安全なISNを生成しますが、設定が変更されていないか確認しておくことをお勧めします。

# TCPタイムスタンプの確認(RFC 7323準拠・デフォルトで有効) sysctl net.ipv4.tcp_timestamps # 出力: net.ipv4.tcp_timestamps = 1 ← 1が有効(推奨) # TCPシーケンス番号の乱数性の確認(rfc1337なども確認) sysctl net.ipv4.tcp_rfc1337 # 出力: net.ipv4.tcp_rfc1337 = 0 ← 1に設定することを推奨

# /etc/sysctl.conf または /etc/sysctl.d/99-security.conf に追記 # (変更点のみコメント付きで記載) net.ipv4.tcp_rfc1337 = 1 # タイムウェイト暗殺攻撃への対策 net.ipv4.tcp_timestamps = 1 # デフォルト有効だが明示的に記載

# 設定を即時反映 sudo sysctl -p

3. ステートフルファイアウォールを確認する

ステートフルファイアウォールは「確立済みコネクションのシーケンス番号の範囲」をステートテーブルで追跡します。範囲外のシーケンス番号を持つパケットは不正とみなして破棄するため、外部からの不正パケット注入に対する防御線として機能します。

Linuxでは nftables(または firewalld)がデフォルトでステートフル動作をします。iptables・nftablesの `conntrack` モジュールが有効になっているか確認してください。

# ステートフルトラッキングの確認(nftables) nft list ruleset | grep ct # 出力に "ct state established,related accept" が含まれていればOK

4. ARPスプーフィング対策を施す

同一ネットワーク内の乗っ取りリスクには、ARPスプーフィング対策が直接的に効きます。L2スイッチで「Dynamic ARP Inspection(DAI)」を有効化すること、またネットワーク内にSnortやSuricataなどのIDSを設置してARPパターン異常を検知することが有効です。

IPスプーフィングへの対策についてもIPスプーフィングとは?なりすましパケットを使った攻撃の仕組みとネットワーク・Linuxサーバーでの対策で詳しく解説しています。

中小企業でも今日からできること

・HTTPS化の確認:社内ツール・管理画面を含め全URLが https:// であるかブラウザのアドレスバーで確認する
・Telnet・FTPの廃止:ネットワーク機器の管理ポートでTelnetを使っていないか棚卸しし、SSH・SFTPへ切り替える
・OS・ネットワーク機器のアップデート:古いOSや組み込み機器はISN乱数性が弱い場合があるため、最新ファームウェアを適用する
・Wi-Fiは暗号化プロトコルをWPA3に設定:WEP・WPA(TKIP)のままでは傍受リスクが高い。WPA2/WPA3かつ企業向け802.1X認証が推奨
・ファイアウォールのステートフル設定確認:境界ファイアウォールがステートフルインスペクション対応か確認する

よくある誤解と注意点

【注意1】「社内ネットワークだから安全」は誤り

TCPセッションハイジャックの現実的な攻撃経路の多くは、社内ネットワーク内部からです。ARPスプーフィングを使った乗っ取りは同一LANにいないと成立しません。つまり、内部からの攻撃(侵害済み端末・悪意ある内部者・不審なUSBデバイス等)が主な脅威となります。「内側は信頼する」という境界型セキュリティの考え方では防ぎきれません。

【注意2】「TLSさえかけていれば完全に防げる」ではない

TLSはTCPセッション上に構築されるため、TCPレイヤーのセッション自体が乗っ取られる可能性は技術的にゼロではありません。ただし、TLSには証明書の検証・セッション鍵の確立・メッセージ認証コード(MAC)が含まれており、攻撃者がTCPパケットを注入しても正しいTLSレイヤーのやり取りを再現することは現実的に非常に困難です。TLSを使うことで「TCPハイジャックによる実害」を大幅に封じ込められると理解してください。

【注意3】シーケンス番号乱数化だけでは内部攻撃に無力

OSがISNをランダムに生成しても、傍受可能な同一ネットワーク環境では攻撃者がリアルタイムでシーケンス番号を読み取れます。ISN乱数化は外部からのブラインド攻撃への対策であり、内部ネットワークの傍受リスクには別の対策(暗号化・ARPスプーフィング対策)が必要です。

TCPセッションハイジャックとは?シーケンス番号を悪用した通信乗っ取りの仕組みと現代ネットワークでの対策ガイド - まとめ

本記事のまとめ

攻撃手法 主な前提条件 有効な防御策
ブラインドISN予測(外部) 通信経路の外側 ISN乱数化(現代OS標準)、ステートフルFW
ARPスプーフィング経由 同一ネットワーク内 Dynamic ARP Inspection(DAI)、HTTPS/SSH
パケット傍受+注入 通信経路上のアクセス TLS/SSH暗号化、スイッチ構成の見直し

TCPセッションハイジャックは「昔の攻撃」と思われることもありますが、古いネットワーク機器・平文プロトコルが残る環境では今でも現実的なリスクです。根本的な対策は「暗号化の徹底」と「内部ネットワーク対策(ARPスプーフィング防止)」の2本柱です。まずHTTPS化とTelnet廃止から着手してみてください。

PR

実践 パケット解析 第3版(Chris Sanders/オライリー・ジャパン)

Wireshark・tcpdumpを使った実践的なパケット解析技術を体系的に学べる一冊。TCPセッションの流れを可視化して攻撃の痕跡を追うスキルが身につきます。ネットワークセキュリティの現場知識を深めたい方に強くお勧めします。

関連記事をもっと読む

同じテーマの記事をまとめています。あわせて読みたい記事はこちらからご覧いただけます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次