この脆弱性は新しいものではありませんが、「RU」セグメントに資料がないため、この記事を書くことにしました。
WPSの基本:
WPS-Wi-Fi保護セットアップ。 QSSの2番目の名前はQuick Security Setupです。
ワイヤレスネットワークのセットアッププロセスを簡素化するために設計された標準。
WPSでは、2つの異なる方法で接続できます。
-8桁のPINコードを入力します(通常、ルーターの背面から示されます)
-ルーターの専用ボタンを押す
PINは8桁のコードで、8番目は小切手です。 このようなコードのBrutusは、バスティングからの保護を考慮して、最大で数日かかる場合があります。
ワイヤレスネットワークのセットアッププロセスを簡素化するために設計された標準。
WPSでは、2つの異なる方法で接続できます。
-8桁のPINコードを入力します(通常、ルーターの背面から示されます)
-ルーターの専用ボタンを押す
PINは8桁のコードで、8番目は小切手です。 このようなコードのBrutusは、バスティングからの保護を考慮して、最大で数日かかる場合があります。
2014年の終わりに、コンピューターセキュリティの専門家であるDominique Bongardが、数分でWi-FiルーターをハッキングできるWPSの脆弱性を発見しました。
問題は、多くのルーターでの乱数( E-S1およびE-S2 )の生成でした。 これらの番号を認識すれば、WPSピンを簡単に認識できます。これは、WPSピンを受信することでブルートフォースから保護するために暗号化機能で使用されるためです。
ルーターは、WPSピンとデータ(E-S1およびE-S2)番号を使用して生成されたハッシュを提供し、彼がそれを知っていることを証明します(これは、パスワードを受け入れるだけの偽のポイントへの接続を防ぐために行われます)トラフィックを聞きます)。
E-S1およびE-S2は、 E-Hash1、E-Hash2の生成に使用されます。これらは、 M3メッセージでルーターから受信されます。
WPSプロトコル
ここで重要なのは、M1、M2、M3です。
M1メッセージ -ルーターはN1 、説明、 PKEをクライアントに送信します。
メッセージM2-クライアントはルーターN1、N2、PKR、Authに送信します。
認証 -最初と2番目のメッセージからのハッシュ。
M3の最も重要なメッセージは 、ルーターがE-Hash1、E-Hash2をクライアントに送信することです。
E-Hash1 = HMAC-SHA-256(authkey) (E-S1 | PSK1 | PKE | PKR)
E-Hash2 = HMAC-SHA-256(authkey) (E-S2 | PSK2 | PKE | PKR)
PSK1はWPSピンの最初の4桁、 PSK2は残りの4桁です。
E-S1およびE-S2-128ビットの乱数でなければなりません。
PKEはルーターの公開鍵です。
PKRはクライアントの公開キーです。
このことから、未知は(まだ)E-S1とE-S2、PSK1とPSK2であることがわかります。
M4-クライアントはR-Hash1、R-Hash2を送信して、WPSピンも知っていることを確認します。
すべて問題なければ、ルーターはクライアントにネットワークにアクセスするためのパスフレーズを与え、現在のWPSピンに結び付けます。 これは、WPSピンが永続的であってはならず、変更された場合、クライアントはパスワードを再受信する必要があることに基づいて行われます。
ルーターでのE-S1およびE-S2の生成:
「 Broadcom / eCos 」では、これら2つの数値は、同じ機能によってN1 (公開鍵)の生成直後に生成されます。 E-S1とE-S2を取得すると、N1に基づいた関数のブルートフォース状態になり、E-S1とE-S2になります。
機能コード:
#if (defined(__ECOS) || defined(TARGETOS_nucleus)) void generic_random(uint8 * random, int len) { int tlen = len; while (tlen--) { *random = (uint8)rand(); *random++; } return; } #endif
ソース -github.com/RMerl/asuswrt-merlin/blob/master/release/src-rt/bcmcrypto/random.c
「 Realtek 」では、関数はUNIXタイムスタンプを使用してそのような数値を生成します。
Broadcomと同様に、N1とE-S1,2は1つの関数を生成します。
そして、すべての交換が同じ秒で発生する場合、 E-S1 = E-S2 = N1です。
数秒以内の場合-N1に基づく状態の総当たり攻撃。
ソース -github.com/skristiansson/uClibc-or1k/blob/master/libc/stdlib/random_r.c
「 Ralink 」では、E-S1およびE-S2は生成されません。 それらは常に0です。
E-S1 = E-S2 = 0
「 MediaTek 」と「 Celeno 」の写真は同じです。
E-S1 = E-S2 = 0
おわりに
すでにPKE、PKR、Authkey、E-Hash1、E-Hash2を知っていると仮定します。ルーターとの通信の結果としてこのデータをすべて受信しました(上記のM1、M2、M3を参照)。 E-S1とE-S2がねじれているか、彼が0であることがわかっています。
残っているのはわずかです-すべてのデータをハッシュ関数に送信し、新しいピンをそれぞれ(E-Hash1およびE-Hash2)と比較します。 その結果、数分でWPSピンを取得し、実際にネットワークにアクセスできます。
kali2には、攻撃を行うために必要なすべてのツールがすでにあります 。 誰が実際に興味があるか(ルーターをテストする)-Reaverのドックを見てください。 Wifiteはこのタイプの攻撃もサポートしています。
このトピックに関する情報源:
WPS pixieカンファレンスでのドミニクによるスピーチ
kaliフォーラムの説明
PS記事に効果的なコメントと追加を行っていただければ幸いです。