トラフィックを手動で監視して、ルータのWPSボタンを押したかどうかを検出できますか?

トラフィックを手動で監視して、ルータのWPSボタンを押したかどうかを検出できますか?

このコマンドを使用すると、wpsボタンが押されたことを確認できます。

wpa_cli wps_pbc

しかし、airodump-ngを使ってこれを行うことができるかどうかを知りたいです。

誰もそれに接続されていません。

これwifiphisherユーティリティこれを行うことができる既製ツールに関する情報が見つからないにもかかわらず、これを実行できると主張します。

そして、Pythonコードが十分に明確ではないので、どうするかわかりません。

これを手動で実行する方法を見つけて、可能な新しい攻撃ベクトルに追加します。

ありがとう

答え1

私たちは最初にチェックしますWi-Fi保護設定仕様

AP はプローブ応答メッセージを使用して、選択した登録者が PBC モードにあることを登録者に通知します。

登録者は、PBCモードであることを示すデバイスシークレットIDを含むプローブ要求を送信し、PBCデバイスシークレットIDを含む選択された登録者を示すプローブ応答を受信して​​この検索を実行します。

APがPBCモードを表すレジストラから選択されたレジストラとデバイスパスワードIDを受信した場合、この情報は自動的に削除され、歩行時間後にプローブ応答に含まれなくなります。 AP は、登録者ボタンを押すまでアクティブな PBC 状態を通知しません。

ここに画像の説明を入力してください。

ここに画像の説明を入力してください。

ここに画像の説明を入力してください。

そして他の人からWPS文書のタイトルは次のとおりです。無線LAN PCIカードユーザーズマニュアルV1.1我々は発見する

デバイスパスワードID:選択した登録者が特定のパスワードを使用または識別する方法を示します。 PBCモードのAPは、徒歩2分以内に0x0004を表示する必要があります。

今、我々は必要な情報がAPのビーコンフレームにあることを理解しています。

この情報を確認したい場合は、3つのツールを使用できます。

まず、ボタンを押さずにAPからブロードキャストするプローブと、ボタンを押したままAPからブロードキャストするプローブの違いを確認します。

これを行うには、tcpdump目的のデバイスでairodumpを2回使用する必要があります。一度はボタンを押したまま、一度はボタンを押さないでください。Wireshark WikiのWPS PBCフィルタ2つの違いを調べる

これらのフィルタを使ってみるとわかるように

wps.selected_registrar_config_methods.phy_pushbutton
wps.selected_registrar_config_methods.pushbutton
wps.selected_registrar_config_methods
wps.device_password_id

wpsボタンを押しながらキャプチャしたものだけが一致します。

ここに画像の説明を入力してください。

wps.device_password_id == 0x0004他のフィルタは誤検出を引き起こす可能性があるため、ボタンが押されたかどうかはフィルタのみを確実に確認できます。

その問題に関する専門家の引用

"wps_selected_registrar" : 01すべてのルーターがPBCモードにあるわけではなく、一部のルーターも"wps_selected_registrar" : 01PINモードにあり、これらのルーターの95%以上がPixie Dust攻撃に対して脆弱です。

今、私たちは違いを知ってテストします。時間を節約するために、2つの異なるツールを使用してこれを行うことができます。

  1. githubでこのPython scapyスクリプトを使用できます。wps2key.pyただし、この機能は2.7がインストールされている以前のシステムでのみ機能することに注意してください。

    chmod +x wps2key.py

    ./wps2key.py -i mon0 -v

ここでも違いを見ることができます ここに画像の説明を入力してください。

  1. 有名な道具で掃除してください。最新バージョンに更新されていることを確認してください。プレデターwps-fork-t6x、jsonオプション-jを使用する必要がある値を確認してください。また、jsonスキーマは印刷されたAPのWPS設定が変更されたときを検出し、他の行を印刷するため、変更を確認するために毎回終了、再開、または繰り返す必要はありません。

    クリーニング -i wlan0mon -j

ここに画像の説明を入力してください。

ここでも違いを見ることができますが、WashはWiresharkで使用されている他のすべての要素を表示しません。私たちはプッシュと非プッシュを区別wps_device_password_idまたは区別する必要があります。selected_registrar_config_methods

wps_selected_registrar信頼できないので使用しませんでした。

1行を使用して自動化することもでき、-cオプション-bを使用してより高速にします。

timeout 10s wash -i wlan0mon -j -b XX:XX:XX:XX:XX:XX -c 8 | grep -q '"wps_device_password_id" : "0004"' && echo Pushed || echo NotPushed 

これは小さなPythonスクリプトファイルを使用して行うこともできます。

import subprocess, sys ,os
argv = list(sys.argv)
argv[0] = 'wash'
proc = subprocess.Popen(argv, executable=argv[0], stdout=subprocess.PIPE)
while 1:
        line = proc.stdout.readline()
        if line == '': break
        print line
        if '"wps_device_password_id" : "0004"' in line:
            proc.terminate()
                print("WPS PBC enabled")
                break

ここで実行する必要があります。

スクリプトをWashwrapper.pyとして保存し、通常Washに渡すすべての引数を使用してWashの代わりに実行します。 python2washwrapper.py -j -i wlan0mon -cと同じです。 6.必要に応じて、単に洗浄するのではなく、バイナリの場所を洗浄するように「../src/wash」パスを変更します。それ以外の場合は動作しません。

ありがとうrover0rこの問題に対するスクリプトの作成とサポートの提供

接続したい場合は、ボタンが押されたことがわかったら、次のものを使用できます。wpa_cli wps_pbc印刷の代わりにコマンドを使用するか、より良い方法を使用できます。ワンチャンス--pbcフラグが新しく追加されたPythonスクリプトは、事前設定なしでワンクリックでプロセスを完了し、ボーナスとしてパスワードを出力します。

Start WPS push button connection:

sudo python3 oneshot.py -i wlan0mon --pbc

ここに画像の説明を入力してください。

しかし、Pythonでシステムコマンドを実行するにはos.system( "command")を使用することに注意してください。

最後に、ウェブ全体を検索し、これについて言及したり話したりするサイトを見つけることができなかった後、私はこの質問に直接答えなければなりませんでした。

関連情報