たとえば、3台のコンピューターが同じスイッチに接続されているネットワークがある場合、Alice、Bob、およびEveです。 AliceとBobが互いのARPリストに静的ARPエントリとしてお互いを追加し、EveがAliceとBob間のネットワーク接続に対して攻撃をしたい場合、どうすればよいでしょうか。
ちなみに、私はまだネットワーク上でスニッフィングが利用可能かどうか疑問に思っています。両方が静的ARPを構成する場合、ARPスプーフィングは実現できません。この状況では、tcpdumpまたはWiresharkを使用してネットワークを傍受できますか?
まず、静的なarpエントリが何を意味するかを明確にしましょう。アドレス解決プロトコルは、レイヤー2アドレスをレイヤー3アドレスにマップするために使用されます。通常、これはイーサネットとIPです。静的なarpエントリは、特定のIPが特定のハードウェアアドレスにあることを常に期待することを意味します。デフォルトのWindowsまたはLinux実装では、TCP/IPスタックを使用することになり、レイヤー2アドレスだけで直接通信することはできません。
スイッチは比較的ばかばかしいデバイスであり、トラフィックの送信先を決定しますが、受信するトラフィックを決定します。宛先に関する情報がない場合、スイッチは特定の入力を他のすべてのポートに送信します。入力を介してメッセージが送信されると、スイッチはCAMテーブルを更新し、「そのアドレスに送信しようとしている人は誰でもそのポートを送信します」と言います。つまり、入力のソースを後の出力の宛先として使用できます。
この知識があれば、エクスプロイトを検討できます。最初の可能性は、出力を1つのポートにのみ送信し、スイッチのすべてのポートに送信することを決定する機能を壊すことです。スイッチを過負荷にして、CAMテーブルがいっぱいになると、アリスとボブの場所を含むエントリが失われる可能性があります。また、脆弱性や設定ミスによってスイッチ自体を危険にさらす可能性もあります。モデルによっては、スイッチ自体にスニッフィングユーティリティをインストールすることも、ポートをスパン/ミラーポートに変更して、トラフィックを監視したり、トラフィックをリダイレクトしたりすることもできます。
オーバーフロー攻撃については、 dsniff /macofの詳細をご覧ください。
スイッチまたはMACアドレスを特定のポートに固定する何らかのタイプの802.1xで何らかのメカニズムを使用しているのでない限り、CAMテーブルのエントリを上書きできるはずです。スイッチは通常、ハードウェアの一部が常に特定の物理ポートに接続されているとは想定していません。したがって、イブは嘘をついて、ボブまたはアリスのMACアドレスを持っていることをスイッチに伝えることができます。次に、スイッチはCAMテーブルを更新し、トラフィックを私に転送します。ただし、ARPテーブルを更新するトラフィックが他にほとんどない場合、これは必ずしも効果的ではありません。スイッチに自分がボブであることを伝えると、ボブがCAMテーブルを更新するためにトラフィックを送信しない限り、スイッチはボブのポートでもあるとスイッチが判断するため、トラフィックをボブに送信できなくなります。 ARPでは、位置指定はホストへの攻撃ですが、スイッチのポイントで攻撃することもできます。
ファローアップ
攻撃者はスイッチのMACテーブルをフラッディングしようとする可能性があり、スイッチが「ハブ」モードに陥る可能性があります。次に、スイッチはすべてのポートでアリスとボブのパケットを送信します。したがって、Eveはネットワークパケットを盗聴する可能性があります。
ハッキングするもう1つの方法は、スイッチのMACテーブルを汚染することです。イブがアリスとボブのMACアドレスを知っている場合、イブはスイッチにALICEまたはBOB、あるいはその両方のMACアドレスを持っていることを通知できます。その後、一部またはすべてのパケットがイブにリダイレクトされます。