はじめに
airolib-ng は、事前に計算されたマスターキー (PMK) データベースを管理および使用するために設計された、Aircrack-ng スイート内の強力なツールです。WPA/WPA2 ハンドシェイクをクラックしようとする際、最も時間のかかる部分は、候補となるパスフレーズとネットワーク名 (ESSID) から PMK を計算することです。
一般的なパスフレーズとネットワーク名のリストに対してこれらの PMK を事前に計算し、データベースに保存することで、クラッキングプロセスを劇的に加速させることができます。攻撃中に各パスワードの重い計算を実行する代わりに、aircrack-ng はデータベースで PMK を検索するだけで済みます。
この実験では、PMK データベースを作成および入力するための airolib-ng の基本的な操作を学びます。
事前計算マスターキーデータベースの概念を理解する
このステップでは、airolib-ng を使用する前に、PMK データベースの背後にある理論を説明します。このステップで実行するコマンドはありません。
WPA/WPA2 ネットワークのセキュリティは、ペアワイズマスターキー (PMK) を使用してトラフィックを暗号化する 4 ウェイハンドシェイクに依存しています。この PMK は、ネットワークのパスワード (パスフレーズ) とその名前 (ESSID) から派生します。式は次のとおりです。
PMK = PBKDF2(passphrase, SSID, 4096 iterations, 256-bit output)
aircrack-ng のようなツールと単語リストを使用してキャプチャされた WPA/WPA2 ハンドシェイクをクラックしようとすると、ツールはリスト内のすべてのパスワードに対してこの計算を実行します。4096 回のイテレーションにより、このプロセスは計算コストが高く、遅くなります。
ここで airolib-ng が登場します。これにより、この重い処理を事前に実行できます。一般的な ESSID のリストとパスフレーズの大きな単語リストを取得し、結果として得られるすべての PMK を事前に計算できます。これらの PMK は、効率的な SQLite データベースに保存されます。
ハンドシェイクをクラックする時間になると、aircrack-ng はこのデータベースを使用できます。各パスワードの PMK を計算する代わりに、キャプチャされたハンドシェイクの ESSID と単語リストのパスワードから一度計算し、事前計算されたデータベースで結果を検索します。この検索は、完全な計算よりも数千倍高速であり、クラッキング時間を劇的に短縮します。
次のステップでは、このようなデータベースを作成し、ESSID とパスワードで入力し、その整合性を検証します。
airolib-ng --new を使用して新しい SQLite データベースを作成する
このステップでは、PMK を保存するための新しい空の SQLite データベースを作成します。すべての作業は ~/project ディレクトリで行います。
airolib-ng コマンドに続けて、目的のデータベース名と --new フラグを使用します。このフラグは、airolib-ng に新しいデータベースファイルを初期化するように指示します。
pmk_db という名前のデータベースを作成しましょう。ターミナルで次のコマンドを実行します。
airolib-ng pmk_db --new
ツールは現在のディレクトリ (~/project) に pmk_db ファイルを作成し、その中に必要なテーブルを設定します。データベースの作成と初期化を確認する出力が表示されるはずです。
期待される出力:
Database 'pmk_db' created.
Wrote 1 ESSIDs and 0 PMKs.
ls コマンドを使用してファイルが作成されたことを確認できます。
ls -l pmk_db
期待される出力:
-rw-r--r-- 1 labex labex 8192 May 20 10:30 pmk_db
--import essid を使用してデータベースに単一の ESSID をインポートする
このステップでは、新しく作成したデータベースにネットワーク名 (ESSID) を追加します。データベースは、どの ESSID に対して PMK を事前計算したいかを知る必要があります。
--import essid オプションを使用します。このオプションは、コマンドラインから単一の ESSID を引数として受け取るか、ファイルから ESSID のリストを受け取ることができます。この実験では、MyHomeWiFi という名前の単一の ESSID をインポートします。
次のコマンドを実行して、pmk_db データベースに ESSID をインポートします。
airolib-ng pmk_db --import essid MyHomeWiFi
データベースが読み込まれ、1 つの ESSID が書き込まれたことを示す出力が表示されます。
期待される出力:
Reading file...
Wrote 1 ESSIDs and 0 PMKs.
Done.
これで、データベースは MyHomeWiFi ネットワークを認識し、それに関連付けられた PMK を保存する準備ができました。
その ESSID の PMK を計算するために単語リストをインポートする
このステップでは、パスワードのリスト (単語リスト) をインポートし、airolib-ng に前のステップでインポートした ESSID の PMK を計算させます。
この実験のセットアップスクリプトは、~/project ディレクトリに wordlist.txt という名前の小さな単語リストファイルを既に作成しています。このファイルを読み込むために --import pwd オプションを使用します。wordlist.txt の各パスワードに対して、airolib-ng は MyHomeWiFi ESSID の PMK を計算し、結果をデータベースに保存します。
次のコマンドを実行します。
airolib-ng pmk_db --import pwd wordlist.txt
ツールはファイルからパスワードを読み込み、PMK を計算します。私たちの wordlist.txt には 4 つのパスワードが含まれており、データベースには 1 つの ESSID があるため、4 つの PMK を計算して保存します。
期待される出力:
Reading file...
Wrote 0 ESSIDs and 4 PMKs.
Done.
これで、データベースには wordlist.txt のすべてのパスワードに対する MyHomeWiFi ネットワークの事前計算済みキーが含まれています。
データベースの整合性を検証するためのバッチ操作を実行する
このステップでは、データベースの内容を検証し、不足している PMK ペアを計算する方法を学びます。これは、特に大規模なデータベースにとって重要なメンテナンス手順です。
--batch オプションは包括的な操作を実行します。データベース内のすべての ESSID とパスワードのペアの組み合わせを見つけ、まだ PMK が存在しないペアに対して PMK を計算します。また、既存の PMK を再計算して比較することにより、それらの整合性を検証する方法としても機能します。
pmk_db データベースでバッチコマンドを実行します。
airolib-ng pmk_db --batch
前のステップで可能なすべてのペア (1 ESSID x 4 パスワード) を計算したばかりなので、コマンドは新しい PMK を計算する必要がないことを検出します。既存のものを検証するだけです。
期待される出力:
All PMKs have been computed for all ESSIDs.
Nothing to do.
新しい ESSID または新しい単語リストを追加した場合、--batch コマンドを実行することが、すべての新しい PMK の組み合わせでデータベースを更新する最も効率的な方法となります。
まとめ
おめでとうございます!airolib-ng を使用して、事前計算済みマスターキー (PMK) データベースを作成および管理することに成功しました。
この実験では、以下の方法を学びました。
- WPA/WPA2 クラッキングを高速化するための PMK データベースの概念と利点を理解する。
airolib-ng --newを使用して新しい空のデータベースを作成する。airolib-ng --import essidを使用してネットワーク名をデータベースにインポートする。airolib-ng --import pwdを使用して単語リストをインポートし、対応する PMK を計算する。airolib-ng --batchを使用してデータベースを検証および更新するためのバッチ操作を実行する。
この知識があれば、より大きく、より包括的な PMK データベースを構築し、WPA/WPA2 セキュリティ評価を大幅に高速化できます。作成されたデータベース pmk_db は、aircrack-ng で次のように使用できます:aircrack-ng -r pmk_db your_capture_file.cap。
