
MacStealer: Wi-Fiクライアント分離バイパス
このリポジトリにはMacStealerが含まれています。これはWi-Fiネットワークのクライアント分離バイパスをテストできます (CVE-2022-47522)。私たちの攻撃は、クライアント同士の通信が防止されている場合でも、MACレイヤで他のクライアント宛てのトラフィックを傍受(窃取)できます。 この脆弱性は、悪意のある内部関係者が存在するWi-Fiネットワークに影響し、私たちの攻撃はクライアント分離(AP分離とも呼ばれる)をバイパスできます。 この攻撃はDynamic ARP inspection(DAI)のバイパスにも使用でき、クライアント同士の攻撃を防ぐ他の方法のバイパスにもおそらく使用できます。 この攻撃は_セキュリティコンテキスト上書き攻撃_としても知られており、私たちの USENIX Security '23論文(リポジトリ)のセクション5を参照してください。
影響を受ける可能性のあるネットワークの具体例は以下のとおりです:
ユーザーが互いを信頼しない可能性があり、クライアント分離やARP検査などの技術を使用してユーザー同士の攻撃を防いでいるエンタープライズネットワーク。たとえば、 ゲストとスタッフの両方のアカウントがある社内ネットワーク、eduroamやgovroamなどのネットワーク。
Passpoint(旧Hotspot 2.0)で保護された公衆ホットスポット。 これらは自動的かつ安全に接続できるホットスポットです。たとえば、 スマートフォンのSIMカードを使用してシームレスに認証できます。
クライアント分離が有効な家庭用WPA2またはWPA3ネットワーク。これには、 ゲスト用または安全でない(IoT)デバイス用の別個のSSIDを持つネットワークが含まれます。また、デバイスをさらに分離するために複数のパスワードを使用するネットワークも含まれ、これは Multi-PSK、 Identity PSK、 per-station PSK、 またはEasyPSKとしても知られています。 追加情報については脅威モデルの議論を参照してください。
WPA3 SAE-PKに基づく公衆ホットスポット。 これらは共有の公開パスワードで保護されたホットスポットですが、攻撃者は この公開既知のパスワードを悪用できません。
私たちの攻撃はVLANをバイパスできないことに注意してください。言い換えると、現在の実験に基づくと、 私たちの攻撃は別のVLAN内のデバイスを悪用するために使用できません。
USENIX Security '23の他の結果のリポジトリも利用可能です。
この攻撃の核となる考え方は、クライアントの認証方法が、パケットが正しいWi-Fiクライアントにルーティングされる方法とは無関係であるということです。つまり、 認証はパスワード、ユーザー名、802.1X ID、および/または証明書に基づいて行われますが、クライアントが接続した後は、 パケットのルーティングはMACアドレスに基づいて行われます。悪意のある内部関係者はこれを悪用して、被害者を切断してから被害者のMACアドレスで接続することで、 Wi-Fiクライアント宛てのデータを傍受できます (攻撃者の認証情報を使用して)。被害者宛てにまだ送信途中だったパケット、たとえば被害者がまだ読み込み中のウェブサイトデータは、 代わりに攻撃者が受信することになります。
より正確には、攻撃は次の3つのステップで構成されます:
被害者にデータを要求させる: 攻撃者はまず、被害者(クライアント)が
脆弱なアクセスポイント(AP)とのWi-Fi接続を確立するまで待ちます。被害者は
その後、インターネット上のサーバーにリクエストを送信すると仮定します。たとえば、被害者は
(平文の)ウェブサイトexample.comにHTTPリクエストを送信するかもしれません。攻撃者の目標は、
ウェブサイトによって送信されるレスポンスを傍受することです。
被害者のMACアドレスで接続する: 被害者がデータを要求した後、たとえば
HTTPリクエストパケットを送信することで、攻撃者はレスポンスが脆弱なAPに到着する_前に_
被害者をネットワークから強制的に切断します。
この例では、example.comからのレスポンスがAPに到着する前に被害者が切断されることを意味します。
被害者が切断されると、攻撃者は被害者のMACアドレスを偽装し、
攻撃者自身の認証情報を使用してネットワークに接続します。つまり、攻撃者は
自身の認証情報を使用してネットワークに接続できる悪意のある内部関係者であり、たとえば
エンタープライズWi-Fiネットワークで自身のユーザー名とパスワードを使用します。
レスポンスの傍受: 攻撃者が被害者のMACアドレスで接続すると、
APは攻撃者の新しく生成された暗号鍵を被害者のMACアドレスに関連付けます。
その結果、サーバーからのレスポンスがWi-Fiネットワークに到着したとき、または一般的に被害者宛ての
着信トラフィックがあるとき、ルーターはこれらの着信パケットを被害者の
MACアドレスに転送します。この例では、example.comからのレスポンスがルーターによって被害者のMACアドレスに転送されることを意味します。
しかし、攻撃者は現在このMACアドレスを使用しています。つまり、
APは攻撃者の鍵を使用してレスポンスを暗号化します。言い換えると、攻撃者は
被害者宛てにまだ送信途中の保留中のトラフィックをすべて受信することになります。
傍受されたトラフィックは、TLSやHTTPSなどの上位層の暗号化によって保護されている場合があることに注意してください。 それでも、上位層の暗号化が使用されている場合でも、私たちの攻撃は 被害者が通信しているIPアドレスを明らかにします。これにより、被害者が訪問しているウェブサイトが明らかになり、 それ自体が機密情報になり得ます。
デフォルトでは、この攻撃は被害者_が送信する_トラフィックを傍受せず、被害者_に向けて送信される_ トラフィックのみを傍受できます。ただし、攻撃者はその後の攻撃を試みて、被害者によって送信されるトラフィックも 傍受できます。特に、被害者へのDNS応答を傍受することにより、 攻撃者はDNS応答を偽装して、被害者に向けて送信されるIPトラフィックと被害者によって送信されるIPトラフィックの両方を傍受できます。
上記の攻撃を実行することは、対象ネットワークでクライアント分離が有効な場合にのみ意味があります。 そうでない場合、クライアント分離が無効になっていると、悪意のある内部関係者は ARPスプーフィングなどの技術を使用して他のクライアントを直接攻撃できます( クライアント分離テストを参照)。
この攻撃は、エンタープライズWPA1、WPA2、WPA3ネットワークに対して同一です。これは、この攻撃が Wi-Fiの暗号特性を悪用するのではなく、ネットワークがどのクライアントにパケットを送信するか(つまりルーティングするか)を決定する方法を悪用するためです。
攻撃の詳細については、私たちの論文 Framing Frames: Bypassing Wi-Fi Encryption by Manipulating Transmit Queuesの_セキュリティコンテキスト上書き攻撃_(セクション5)を参照してください。
私たちの攻撃を緩和するために、APは、最近APに接続されていたMACアドレスを使用しているクライアントの接続を一時的に防ぐことができます。これにより、攻撃者が MACアドレスを偽装して、被害者宛ての保留中またはキューイングされたフレームを傍受することを防ぎます。MACアドレスの背後にあるユーザーが変更されていないことを保証できる場合、 クライアントは即座に再接続を許可されます。 このチェックは、同じ配信システムの一部であるすべてのAP、より具体的には、クライアントが現在のIPアドレスを維持したままローミングできるすべてのAPにわたって実行する必要があることに注意してください。
最近接続されたユーザーを安全に認識するために、APはクライアントのMACアドレスとそのキャッシュされたセキュリティアソシエーション(たとえば、キャッシュされたPMK)の間のマッピングを保存できます。クライアントは、このMACアドレスにリンクされたキャッシュされたセキュリティアソシエーションを所有していることを証明することで(たとえば、正しいキャッシュされたPMKを使用して接続することで)、最近使用されたMACアドレスで即座に(再)接続を許可されます。
multi-PSKを使用する場合(per-station PSKまたはIdentity PSKとしても知られる)、 APは最近接続されたMACアドレスとそれらが使用した(一意の)パスワードのマッピングを保持できます。 クライアントが接続するとき、APはそのMACアドレスが最近使用されたかどうかをチェックします。使用されていない場合、または使用されておりクライアントが以前と同じパスワードを使用している場合、クライアントは通常どおり接続できます。ただし、 同じMACアドレスが異なるパスワードで使用されている場合、クライアントは正常に接続できるようになるまで事前定義された時間待機することを強制されます。
SAE-PKを使用してホットスポットを保護する場合、MACアドレスが以前と同じユーザーによって再利用されていることを安全に認識するために私たちが知っている唯一の方法は、キャッシュされたセキュリティアソシエーション(たとえば、MACアドレスにリンクされたキャッシュされたPMK)に依存することです。
上記の防御策は、一定の遅延後、被害者宛ての保留中のパケットがそれ以上到着しないことを前提としています。この遅延を超えた漏洩を防ぐために、クライアントは通信するサービスとのエンドツーエンド暗号化(TLSなど)を使用できます。
802.1X EAPベースの認証を使用する場合、最近接続されたユーザーを安全に認識するための代替のより良い方法は、802.1X認証中に使用したEAP IDに基づくものです。APは、クライアントを認証したRADIUSサーバーからEAP IDを安全に学習でき、最近接続されたMACアドレスと対応するEAP IDのマッピングを保持できます。クライアントが接続するとき、APはそのMACアドレスが最近使用されたかどうかをチェックします。使用されていない場合、または使用されておりクライアントが以前と同じEAP IDを使用している場合、クライアントは通常どおり接続できます。ただし、同じMACアドレスが異なるEAP IDで使用されている場合、クライアントは正常に接続できるようになるまで事前定義された時間待機することを強制されます。
1つの課題は、プライバシーの懸念により、APがクライアントの802.1X IDを常に把握できるとは限らないことです。たとえば、この情報はホームAAAサーバーでのみ利用可能であり、APはRADIUSサーバーからChargeable User Identityのみを受け取ります。このIDでは、その値が常に変化する可能性があるため、APは同じデバイス/認証情報の2つのアソシエーションを認識できません。APはEAP-Response/Identityで匿名ID(anonymous@realmなど)を受け取り、少なくとも異なるレルムのユーザーを認識するためにそれに依存できます。
クライアントのIDをAPに明かさずに、同じレルムのユーザーが互いに攻撃するのを防ぐには、RADIUSサーバーの協力と変更が必要です。特に、 RADIUSサーバーを更新して、MACアドレスが最近同じレルム(特定のローカルネットワーク内)の別のユーザーによって使用されていたかどうかの検出を支援できます。RADIUSサーバーは、クライアントが切断されたときに通知を受け取り、MACアドレスが最後にどのユーザーによって使用されていたかを把握し、接続しようとしているクライアントのMACアドレスを通知される必要があります。
最後の注意点として、EAP IDに依存するこのアプローチは異なるユーザーが互いに攻撃するのを防ぎますが、侵害されたデバイスが同じユーザーの別のデバイスを攻撃するのを防ぐことはできません。つまり、攻撃は異なるユーザー間でのみ防止され、同じユーザーの異なるデバイス間では防止されません。
重要な注意点として、私たちの攻撃はWi-Fiクライアントに向かうパケットの傍受に限定されません。攻撃者は、デフォルトゲートウェイまたはローカルネットワーク内の別のサーバーのMACアドレスに関連付けようとすることもできます。このような攻撃を防ぐために、APまたはコントローラーは、クライアントがデフォルトゲートウェイと等しいMACアドレスを使用することを禁止できます。より一般的には、Wi-Fiクライアントがネットワークに接続するときに重複MACアドレス検出を使用して、Wi-Fiクライアントがネットワーク内の他のデバイスでも使用されているMACアドレスを使用することを防ぐことができます。
Management Frame Protection(MFP)を使用すると、攻撃は困難になりますが不可能にはなりません。 以前の研究で、MFPが使用されている場合でもクライアントを切断/非認証化できるいくつかの方法を発見しました。その 経験に基づくと、MFPが使用されている場合でも、クライアントをネットワークから強制的に切断する方法は常に存在するように見えます。言い換えると、切断および非認証化攻撃を完全に防ぐことは困難です。とはいえ、MFPは実際に攻撃を実行する際の追加のハードルとなるため、実際の攻撃をより困難にする(ただし不可能にはしない)有用な緩和策となり得ます。
予備的な実験に基づくと、この攻撃は異なるVLAN間では機能しません。言い換えると、攻撃を実行する悪意のある内部関係者は被害者と同じVLANにいる必要があります。したがって、1つの緩和策は、異なるユーザーグループを異なるVLANに配置することです。ただし、悪意のある内部関係者は、同じVLAN内の他のユーザーに対して攻撃を実行(つまりクライアント分離をバイパス)できます。