
POSIX準拠、完全自動化されたWPA PSK PMKIDおよびハンドシェイクキャプチャスクリプト(ペネトレーションテスト向け)
AirbashはPOSIX準拠の完全自動化されたWPA PSK PMKIDおよびハンドシェイクキャプチャスクリプトで、ペネトレーションテストを目的としています。 BashおよびAndroid Shell(Kali LinuxおよびCyanogenmod 10.2でテスト済み)と互換性があり、aircrack-ngを使用してアクセスポイント(AP)に現在接続しているクライアントをスキャンします。 そして、それらのクライアントを非認証化し、APへの再接続時にPMKIDやハンドシェイクをキャプチャします。 キャプチャデータの検証は、ZeroBeatによるhcxtoolsのhcxpcaptoolおよびhcxpcapngtoolを使用して行われます。1つ以上のPMKIDやハンドシェイクがキャプチャされた場合、キャプチャ時刻と現在のGPSデータ(適切に設定されている場合)とともにSQLite3データベースに入力されます。
キャプチャ後、crackdefault.shを使用してデータベースを脆弱なルーターモデルに対してテストできます。実装されたモジュールに一致するエントリを検索します。現在のモジュールには、Speedport 500-700シリーズ、Thomson/SpeedTouch、UPC 7桁(UPC1234567)、HOTBOXルーターのデフォルトキーを計算するアルゴリズムが含まれています。
PMKID攻撃の詳細については、New attack on WPA/WPA2 using PMKIDが参考になります。
モニターモードのWiFiインターフェース(Androidでは、デバイスが対応していればbcmonを使用して実現可能)
aircrack-ng(Androidではandroid_aircrackのプリビルドバイナリを使用可能)
SQLite3(Android: CyanogenMod 10.2ではデフォルトでインストール済み)
モジュールとhcxtoolsのコンパイル用のopenssl
hcxtoolsのhcxpcaptoolおよびhcxpcapngtool(PMKIDやハンドシェイクの検出、hashcat形式への変換用)
アクセスポイントのGPS座標を記録するには、座標ログソフトウェアを設定して.location/_.txtにログを記録するようにしてください(ファイル名は自由に選択可能)。Airbashは常にcat "$path$loc"*.txt 2>/dev/null | sed '2q;d'の出力を使用します。これは.loc/内のすべての.txtファイルを読み取り、2行目を取得することに相当します。この実装方法の理由は、開発デバイスで使用されていたGPSLoggerの機能に基づいています。
新しいPMKIDまたはハンドシェイクをキャプチャした後、データベースを脆弱なルーターモデルについて照会できます。モジュールが該当する場合、そのルーターシリーズのデフォルトキーが計算され、aircrack-ngへの入力として使用されてパスフレーズの回復を試みます。
Thomson/SpeedTouchおよびUPC1234567(7桁のランダム)のデフォルトキーを計算するモジュールはsrc/に含まれています。
コードのクレジットは作者のKevin Devineおよびmailto:[email protected]に帰属します。
On Linux:
gcc -fomit-frame-pointer -O3 -funroll-all-loops -o modules/st modules/stkeys.c -lcrypto
gcc -O2 -o modules/upckeys modules/upc_keys.c -lcrypto
自動検出を有効にするには、バイナリをairbash/bin(実行中にPATHに追加されます)またはPATHが通っているディレクトリに移動してください。
Androidの場合、バイナリを/system/xbin/またはバイナリ実行が許可されている別のディレクトリにコピーする必要があるかもしれません。
install.shを実行すると、データベースが作成され、フォルダ構造が準備され、両方のスクリプトへのショートカットが作成されます。これらのショートカットは$PATHが通っているディレクトリに移動することで、任意の場所から実行できるようになります。
インストール後、airba.shの46行目のINTERFACEを手動で調整する必要があるかもしれません。これは後で自動的に決定されるようになりますが、現時点ではデフォルトはwlan0に設定されており、Android上のbcmonとの初期互換性を確保しています。
./airba.shでスクリプトを開始し、データベースにないターゲットを自動的にスキャンして攻撃します。
./crackdefault.shは既知のデフォルトキーアルゴリズムの解読を試みます。
データベースの内容を表示するには、メインディレクトリでsqlite3 .db.sqlite3 "SELECT * FROM hs"を実行してください。
Airbashはupdate.shを実行することで更新できます。これにより、masterブランチが/tmp/にクローンされ、ローカルファイルが上書きされます。
_n: 見つかったアクセスポイントの数
__c/m: それぞれクライアント番号と見つかったクライアントの最大数を表します
-: アクセスポイントがブラックリストに登録されています
x: アクセスポイントはすでにデータベースに存在します
?: アクセスポイントが範囲外(airodumpで認識できなくなりました)
データベースにはcapturesという7つのカラムを持つテーブルが含まれています。
id: テーブルエントリの増分カウンタ
latitude および longitude: ハンドシェイクのGPS座標(利用可能な場合)
bssid: アクセスポイントのMACアドレス
essid: 名前識別子
pmkid: WPA PMKID(キャプチャされた場合)
psk: WPAパスフレーズ(既知の場合)
processed: カスタムパスフレーズが使用された場合にデフォルトキーの重複計算を防ぐためにcrackdefault.shによって設定されるフラグ
現在、SQLite3データベースはパスワードで保護されていません。
コントリビューションは大歓迎です。特に、より多くのデフォルトキーを解析できる追加モジュールを歓迎します。テンプレートモジュールがmodules/に含まれています。crackdefault.shには新しいモジュールを含めるためのテンプレートelif文が含まれています。
コントリビュートを希望する場合は、コードがMITライセンス(このプロジェクトと同様)の下でライセンスされていることを確認してください。シェルスクリプトを提供する場合は、コードがPOSIX準拠であることを確認してください。その他は、変更内容を簡単に説明するIssueを立て、プルリクエストを作成してください!