tcptraceroute と呼ばれるユーティリティがあり、この拡張機能は intrace と呼ばれ、標準のtracerouteと同じように使用されますが、TCPで機能します。
TCPのsyn
フラグを使用してtracerouteのような機能を実現します(ICMPがオフの場合)
開示できる情報(またはその他のリスク)
これをどのように軽減できますか? (ルーター、ホスト、...両方?)
これは、-sSフラグが渡された場合のnmapコマンドと同様に説明されています。これが正確な場合、実際にはどういう意味ですか?
すべてのトレースルーティングツールは、次の原則に依存しています。これらのツールは、寿命の短いパケットを送信し、これらのパケットの死を報告するICMPパケットを待ちます。 IPパケットには、 "TTL"( "存続可能時間"と呼ばれる)と呼ばれるフィールドがあり、ホップごとにデクリメントされます。それが0に達すると、パケットは死に、これが発生したルーターは "Time Exceeded" ICMPメッセージ を送り返すことになっています。そのICMPメッセージには、上記のルーターのIPアドレスが含まれているため、それが明らかになります。
一部のファイアウォールが「時間超過」ICMPパケットをブロックしている場合、リンク先のツールは何もできません。ただし、このようなパケットをブロックするとインターネットが壊れる傾向があります(ホストが長いネットワークパスに対処するために、送信するパケットのTTLを適応的に変更し、このプロセスにこれらのICMPが必要になるため)、そのため、一般的には、 "Time Exceeded" ICMPパケットはブロックされません。
ただし、ブロックされることが多いものは、traceroute
が送信する短命のパケットの一種です。これらは、人為的に低いTTLのパケットです。ファイアウォールによってブロックされている場合、「古い」状態で死ぬことはないため、ICMPを超える時間はありません。 TTL処理および「Time Exceeded」ICMPの場合、パケットのタイプは重要ではありません。これはIPレベルで発生します。ただし、ファイアウォールはパケットの内容も調べます。目標は、ファイアウォールをだまして、存続期間の短いパケットが流れるようにしてから、死ぬようにすることです。
単純なtraceroute
は、UDPパケットまたはICMP "エコー"パケットのいずれかを使用します。どちらの種類も、熱狂的なシステム管理者によって定期的にブロックされます。 tcptraceroute
は代わりにTCP "SYN"パケット、つまり の最初のステップとして発生するパケットの種類)[〜#〜] tcp [〜#〜]を使用します 「スリーウェイハンドシェイク」。この種類のパケットは、少なくとも宛先ポートが「許可」されている限り、通常ファイアウォールによってブロックされません。tcptraceroute
は完了しませんTCP =ハンドシェイク; SYNパケットがファイアウォールによってサイト上で発射されないという考えに依存しています。
intrace
は、既存のTCP接続を待機することで、さらに一歩進んでいます(すべてのパケットを検査することにより、 àla tcpdump
)。接続が検出され、ユーザーがEnterキーを押すと、intrace
は、観測された接続の一部として表示される短命のパケットを送信します。intrace
は、パケットを認識し、IPアドレス、ポート、シーケンス番号。関連するすべてのファイアウォールは、これらのパケットを通過させます。これは、(明らかに)観察されたTCP=接続の続行を許可するためです。存続期間が短いパケットは、 TCP接続を中断します(つまり、それらはそれ自体でデータを持たない単純な「ACK」パケットなので、宛先OSはそれらを単に無視します)。
編集:質問の一部に答えなかったことに気づきました。ここに行く:リスクはありません。緩和するものは何もありません。
traceroute
は、パケットのルーティングに関与するルーターのIPアドレスを明らかにします。 IPアドレスは秘密である必要はなく、さまざまな方法で攻撃者が簡単に取得できます(大量のスキャンが頭に浮かぶだけでなく、ネットワークマップの印刷用にゴミ袋を検索します-現代のリサイクル方法は、ごみ収集をはるかに簡単にし、以前よりもきれいな活動)。ただし、比較的一般的な神話では、アドレスを秘密にしておくとセキュリティが確保されるというものがあります。これに対応して、多くのシステム管理者はtraceroute
を重大な違反と見なし、できるだけ早く修正してブロックする必要があります。しかし実際には、これはすべてバロニーです。いくつかの内部IPアドレスを明らかにすることが重大な問題である場合、これはネットワークが破壊されたことを意味します。
IPアドレスの機密性について心配することは、部外者が会社のカフェテリアでメニューを知っているため、主要なインシデント対応計画を開始することに似ています。それは不釣り合いです。確かに、ネットワークインフラストラクチャに関する正確かつ広範な知識を持っていることは、攻撃者を助けるだけです。本当に重要な量ではありません。 IPアドレスを秘密に保つことは、過度のフィルタリングによって接続を切断する価値はありません(たとえば、「必要な断片化」ICMPをブロックすることは、ADSL + PPPoEリンクの背後にあるクライアントにとって致命的です)。
Tracerouteとtcptracerouteはどちらも同じ基本原理で機能します。
唯一の違いは、送信されるパケットのタイプです(デフォルトはLinuxのUDP、WindowsのICMP、およびTCPがより一般的なオプションになりつつあります)。すべてが役立つデバイスからICMPエラーメッセージを生成しますTTLの有効期限が切れるとき。
SYN
フラグが使用されるのは、ファイアウォールなどの介在デバイスがSYN
を許可することが多いが、確立された接続の一部ではない他のTCPパケットをブロックするためです。nmap -sS
はSYNスキャンを実行し、SYNパケットのみが送信されます。ただし、それ自体はtracerouteを実行しません。 --tracerouteオプションと組み合わせる必要があります(そして、tracerouteを実行するだけでなく、まだスキャンしていると思うので、トレースしたい場合はtcptraceroute
またはtraceroute -T
をお勧めしますOSはそれをサポートしています)。
- TCPのsynフラグは、tracerouteのような機能を実現するために使用されます(ICMPがオフの場合)。
TTL値がゼロに達すると、IPパケットが中間ルーターからのICMP "Time Exceeded"応答をトリガーします。これは、TCP、UDP、ICMP、またはその他の可能性があります。介在するルーターが従来のtracerouteはICMPエコー要求を使用しますが、これは慣例によるものです。
宛先サーバーでICMPが許可されているかどうかは完全に無関係であることに注意してください。これは、中間ルーターが時間超過応答。見逃す可能性があるのは、最終的な宛先ホストからの応答だけですが、tracerouteが提供するのは中間ルーターのリストであるため、tracerouteでは最も重要でない応答です。
TCPパケットでSYNフラグを使用すると、ポートが開いていないか、ポリシーがパケットをブロックしている場合は、宛先サーバーからSYN/ACKを取得する可能性があります。 、宛先サーバーは最も重要ではありません。UDPまたはTCP=継続を送信するのは、ホップリストだけが必要だった場合と同じくらい簡単です。
一部のルーターは、PINGパケットを異なる方法で処理するように構成されています。別のルート、別の優先順位など。TCPパケットを代わりに使用すると、別の結果が得られる可能性があります。これは、ルートがより適切であることを示す必要がありますTCPトラフィックが通過します。
- 開示できる情報(またはその他のリスク)
公開されていないものはありません。セキュリティがこの種の情報を秘密にしておくことに依存している場合は、腰を下ろして、ここまでの決断を再検討する必要があります。
- これをどのように軽減できますか? (ルーター、ホスト、...両方?)
緩和するものは何もありません。もちろん、いつでもサーバーのプラグを抜くことができます。そうすれば、あらゆる種類のものが軽減されます。それ以外の場合は、緩和戦略を採用する前に、何を獲得して何をあきらめているかを検討する必要があります。この場合、あなたが得るものは何もないようです。