web-dev-qa-db-ja.com

リクエストごとにIPを変更することは可能ですか

Webアプリケーションを開発しています。ユーザーエクスペリエンスを向上させるために、IPによる最初のサインアップではCAPTCHAをスキップすることを計画しています。これを行うことでセキュリティリスクを招くのではないかと思っていました。悪意のあるユーザーがリクエストごとに新しいIPを使用して多数のサインアップを行うことは可能ですか?また、攻撃者がこれを達成することはどのくらい難しいですか?

4
VarunAgw

はい、できます。ささいなことです。

ユーザーまたは攻撃者が複数のIPアドレスを取得したり、IPアドレスを共有したりするには、多くの方法があります。これが私の頭の上のリストです。

これらはすべて、ターゲットシステムのIPアドレスがサーバーに公開されていることを前提としています。 (JavaScriptなどの)コードを実行してIPアドレスを検出している、またはクライアントがシステムからの接続を中断せずに直接許可している。

共有アドレス

このリストは、1つのIPアドレスを複数のシステムで使用する方法です。

  • マルチユーザーホスト。多くのホストが複数のユーザーによって使用されています。定義により、これらはすべて同じインターフェースを使用してサーバーに接続するため、IPアドレスを共有します。
  • [〜#〜] dhcp [〜#〜]。 DHCPは、IPアドレスのプールを作成することによって機能し、そこからクライアント(最終的にはユーザーに接続するシステム)にアドレスの1つが割り当てられます。このシステムで使用されるIPアドレスは、最終的にプールに返されます。この時点で、他の誰かがIPアドレスを取得できます。両方のシステムがシステムに接続している場合、IPアドレスを持っているときにそれぞれが同時に接続できます。
  • 手動IP構成。誰でも、必要なIPアドレスを使用するようにネットワークインターフェイスを構成できます。別のシステムで使用されているIPアドレスを使用するように、システムが意図的に構成されている可能性があります。
  • 誤った情報。クライアントでコードを実行してIPアドレスを検出している場合、クライアントはコードに誤った情報を提供する可能性があります。たとえば、GreasemonkeyスクリプトはJavaScriptを変更し、攻撃者が望むIPアドレスを返すようにすることができます。
  • [〜#〜] nat [〜#〜]。ネットワーク内でまったく異なるアドレスを使用しながら、ネットワークアドレス変換を使用して、インターネットに再利用された非常に少数のIPアドレスを表示するネットワークがあります。これは非常に一般的です。クライアントがNATサーバーを介してサーバーに接続すると、すべて同じIPアドレスから送信されたように見えます。
  • 予約済みIPアドレス。 NATと予約済みIPアドレスをペアにすることは非常に一般的です。予約済みIPアドレス(192.168。*。*など)は多くの組織で再利用されます。これらのアドレスはローカルネットワーク内でのみルーティング可能ですNAT=サーバーはリモートでルーティング可能なアドレスを持つ他のネットワークを提示します。JavaScriptコードのようなものを使用してクライアントのIPアドレスを検出する場合、これらのアドレスを再利用する多くのクライアントが存在します。

複数のアドレス

このリストは、単一のホストが複数のIPアドレスを持つように見える方法です。

  • [〜#〜] dhcp [〜#〜]。最初のリストで説明したように、IPアドレスは最終的にそれを使用するシステムによって解放され、プールに返されます。システムがネットワークに再接続すると、新しいアドレスが付与されますが、古いアドレスと同じであるとは限りません。
  • 手動IP構成。誰でも、必要なIPアドレスを使用するようにネットワークインターフェイスを構成できます。あるIPアドレスを使用するようにシステムを意図的に構成し、5分後に別のアドレスを使用するようにすることができます。
  • 誤った情報。クライアントでコードを実行してIPアドレスを検出している場合、クライアントはコードに誤った情報を提供する可能性があります。たとえば、GreasemonkeyスクリプトはJavaScriptを変更し、攻撃者が望むIPアドレスを返すようにすることができます。
  • [〜#〜] nat [〜#〜]。 NATは、同じクライアントに対して毎回同じアドレスを使用する必要はありません。単一のクライアントがNATを介してサーバーに接続し、毎回異なるIPアドレス。
  • ネットワーク間でのラップトップのローミング。システムがあるネットワークから切断して別のネットワークに接続すると、システムは新しいネットワークから新しいIPアドレスを取得します。古いネットワークから予約されたローカルルーティング可能なアドレスと完全に一致する新しいネットワークから予約されたローカルルーティング可能なアドレスを取得する可能性は低いですが、これは保証されていません。おそらく、アドレスは異なります。 NATtedアドレスは異なることが「保証」されています。
  • マルチホームマシン。マルチホームマシンは、複数のネットワークカードを介してネットワークに接続されているか、複数のインターフェイスを持つ複数のネットワークに接続されています。このマシンは、定義により、複数のIPアドレス(各インターフェースに1つ)を持っています。トラフィックが1つのネットワークを介して一度に到着し、次に別のネットワークを介して別の時間に到着した場合、同じホストが複数のアドレスを使用して接続します。これはありそうもないことですが、適切なネットワーク構造を前提として発生する可能性があります。
  • ボットネット。攻撃者はボットネットをレンタルまたは構築できます。ボットネットは、定義上、複数のシステムで構成され、それぞれが異なるIPアドレスを持っています。攻撃者は自由に複数のIPを使用できます。
8
atk

攻撃者が自分のIPを変更できるかどうかは問題ではなく、より良い慣行の問題です。ページにキャプチャがない場合は、初期状態でも、間違いなく不要な自動フォーム送信が可能です。たとえば、ボットネットを制御する攻撃者があなたを標的にすると、ボットネット上のすべてのIPが異なります。攻撃者は、非常に多くのIPを制御している場合、IPを変更する必要はありません。私があなただったら、私はそれを安全にプレイし、とにかくキャプチャを実装します。転ばぬ先の杖。

4
Jason Higgins

最初に思い浮かぶのはプロキシサーバーの単純なリスト攻撃者が多くのサインアップやその他のアクションを実行するために使用できるもので、さまざまなユーザーのふりをしています。

通常、これはオンライン投票、コンテストなどのセキュリティを回避するために使用でき、攻撃者の観点からは、これがおそらく最も簡単な方法です(動的プロキシサーバーリストを介したサインアップを自動化するスクリプトは、Perlで約20行になります)/python)。

1
ack__