TCPシーケンス番号予測攻撃

TCPシーケンス番号予測攻撃とは



TCPシーケンス番号予測攻撃は、TCP通信の仕組みにおける脆弱性を悪用した攻撃の一種です。この攻撃では、攻撃者がTCPシーケンス番号を予測し、それを利用して正規の通信を偽装します。これにより、システムへの不正アクセス、データの改ざん、DoS攻撃など、様々な悪質な行為が可能になります。

TCPシーケンス番号の役割



TCPでは、データの送受信を確実に行うために、フロー制御にスライディングウィンドウという仕組みが用いられています。このスライディングウィンドウの管理に不可欠なのがシーケンス番号です。

例えば、1000オクテットのデータを3つのパケットに分けて送信する場合を考えてみましょう。

項番 送信元 送信先 シーケンス番号 データ長

----
1 A B 1000 1000

2 A B 2000 1000

3 A B 3000 1000

実際には、スライディングウィンドウの制御により、受信側からのACK(確認応答)を待たずに次のパケットが送信される場合もあります。また、受信側で一部のデータしか受信されなかった場合は、ACK番号に1000未満の値が返されることもあります。しかし、ここでは説明を簡略化するために、これらの詳細は割愛します。

実際のTCP通信では、シーケンス番号は0から始まるのではなく、ランダムな値から開始されます。この最初のシーケンス番号をイニシャルシーケンス番号(ISN)と呼びます。また、ACK番号も同様に、セッションの最初のパケットに含まれるシーケンス番号に加算された値が用いられます。例えば、上記の表で最初のパケットのシーケンス番号が990000だった場合、実際の送受信パケットは以下のようになります。

項番 送信元 送信先 シーケンス番号 ACK番号 データ長

----
1 A B 990000 - 1000

2 B A - 991000 -

3 A B 991000 991000 1000
4 B A - 992000 -

5 A B 992000 992000 1000
6 B A - 993000 -

シーケンス番号は32ビットで表現され、上限に達すると0に戻り、サイクリックに使用されます。

攻撃の仕組み



TCP通信では、受信側は受信したパケットのシーケンス番号をACK番号として応答する必要があります。したがって、最初のパケット(上記例の項番1)を受信していない第三者は、最初のパケットに含まれるISNを知ることができず、項番2のパケットを偽造することはできません。ただし、LANアナライザなどを使えば同じセグメント内のパケットを監視できますが、セッション確立を偽装する目的を考えると現実的ではありません。しかし、ISNを予測することができれば、項番2の肯定応答を偽造することができます。さらに、その後のパケットサイズも予測できれば、項番4や項番6のパケットへの応答も偽造可能です。

もし、

認証なしにアクセス可能な信頼関係にある端末が存在する
IPスプーフィングやソースルーティングにより、信頼関係のある端末からの通信を偽装できる
シーケンス番号を予測できる

という3つの条件が揃えば、攻撃者はシステムへの侵入が可能になります。ケビン・ミトニックによる侵入事件は、この脆弱性を突いたことで知られています。

初期のTCP/IP製品では、シーケンス番号の予測が可能なケースがありました。RFC793ではISNの決定方法が規定されており、その中で4マイクロ秒ごとにインクリメントされる32ビットクロックを用いる方法が示されています。この方法では、ISNが端末の稼働時間に依存するため、複数回のセッション確立を試行し、時間経過と応答に含まれるシーケンス番号の増加傾向を分析することで予測が可能になります。

対策



この問題は古くから指摘されており、CERT/CCからも注意喚起(CA-1995-01)がなされていました。初期の対策としては、疑似乱数生成器(PRNG)を用いてISNを生成する方法が採用されました。

しかし、その後、CERT/CCはCA-2001-09で、依然としてISNの予測が可能であると警告しました。これは、統計的な手法を用いることで、疑似乱数生成器で生成されたISNも狭い範囲に絞り込むことができるためです。

現在の製品では、RFC1948で規定されている対策が一般的に適用されています。この対策では、より複雑なアルゴリズムを用いてISNを生成し、予測を困難にしています。

まとめ



TCPシーケンス番号予測攻撃は、初期のTCP/IP実装に存在した脆弱性を利用した古典的な攻撃です。現在では、RFC1948で定義されている対策が講じられているため、この攻撃が成功する可能性は低いと考えられています。しかし、古いシステムや脆弱な設定のシステムを使用している場合は、この攻撃に対する注意が必要です。常に最新のセキュリティ対策を講じ、システムの脆弱性を最小限に抑えることが重要です。

関連項目



Transmission Control Protocol

外部リンク



* 「TCP/IP に係る既知のぜい弱性に関する調査報告書」の公表について (PDF) (アーカイブ)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。