airolib-ng 徹底解説:WPA/WPA2パスワードクラックを高速化する技術

セキュリティツール

はじめに:airolib-ngとは? 🤔

airolib-ngは、無線LANセキュリティ評価スイートであるAircrack-ngに含まれるツールの一つです。その主な目的は、WPA/WPA2ネットワークのパスワードクラックプロセスを大幅に高速化することにあります。Kali Linuxなどのセキュリティ評価用ディストリビューションにも標準で含まれていることが多いです。

WPA/WPA2のパスワードクラックでは、キャプチャしたハンドシェイク情報とパスワード候補を組み合わせて、正しいパスワードを探し当てます。このプロセスでは、各パスワード候補に対してPMK (Pairwise Master Key) と呼ばれる値を計算する必要があります。PMKの計算は、パスワードとネットワーク名(ESSID)の両方に依存し、意図的に計算負荷が高くなるように設計されています(PBKDF2アルゴリズムを使用)。そのため、大量のパスワード候補を試す場合、この計算がボトルネックとなり、クラックに非常に長い時間がかかることがあります。🐢

airolib-ngは、この問題を解決するために開発されました。事前にESSIDとパスワードリストをデータベースに登録し、それらの組み合わせに対するPMKを計算して保存しておきます。これにより、実際のクラック時には、時間のかかるPMK計算をスキップし、事前に計算されたPMKを直接利用できるため、クラック速度が劇的に向上します。⚡️ Aircrack-ngのドキュメントによると、この技術を用いることで、1秒あたり5万以上のパスワードをチェックできる場合もあるとされています。

⚠️倫理的な注意点

Aircrack-ngスイートに含まれるツール(airolib-ngを含む)は、強力な機能を持っています。これらのツールは、自身が所有するネットワーク、またはテストを行う明確な許可を得ているネットワークに対してのみ使用してください。他者のネットワークに対して許可なくこれらのツールを使用することは、法律で禁止されており、重大な罰則の対象となる可能性があります。常に倫理的な利用を心がけ、法律を遵守してください。

airolib-ngの仕組み:PMK事前計算の利点

WPA/WPA2のセキュリティは、クライアントとアクセスポイント間で共有される秘密鍵(PSK: Pre-Shared Key、つまりパスワード)に基づいています。認証プロセス(4ウェイハンドシェイク)では、このPSKとネットワーク名(ESSID)、そしてその他のパラメータからPMKが生成されます。

重要な点は、同じESSIDと同じパスワードの組み合わせに対しては、PMKは常に同じ値になるということです。airolib-ngは、この性質を利用します。

  1. ESSIDとパスワードリストの準備: まず、ターゲットとするネットワークのESSID(複数可)と、パスワードクラックに使用するパスワードリスト(辞書ファイル)を用意します。
  2. データベースへのインポート: 用意したESSIDとパスワードリストをairolib-ngのデータベース(通常はSQLite3形式)にインポートします。
  3. PMKの事前計算 (--batch): airolib-ngに、インポートされた全てのESSIDとパスワードの組み合わせに対するPMKを計算させ、データベースに保存します。この処理は非常に時間がかかり、CPUパワーを大量に消費します。しかし、一度計算してしまえば、その組み合わせに対するPMKは再利用できます。
  4. Aircrack-ngでの利用: データベースにPMKが保存されたら、aircrack-ngコマンドに-rオプション(Aircrack-ng 1.2 rc2以前は-dオプション)でこのデータベースファイルを指定します。aircrack-ngは、キャプチャファイル(.cap)内のハンドシェイク情報とデータベース内のPMKを照合し、一致するものを探します。PMK計算が不要になるため、クラック速度が大幅に向上します。

この事前計算のアプローチにより、以下のようなメリットが生まれます。

  • クラック時間の短縮: 最も時間のかかるPMK計算を事前に済ませておくことで、実際のクラック時間を大幅に短縮できます。
  • リソースの分散: PMK計算はCPU負荷が高いため、複数のマシンで分担して計算し、作成したデータベースを共有することも可能です。
  • 再利用性: 同じESSIDに対しては、一度作成したPMKデータベースを繰り返し利用できます。

airolib-ngの利用準備 🛠️

airolib-ngを使用するには、いくつかの準備が必要です。

airolib-ngはAircrack-ngスイートの一部です。通常、Kali Linuxなどのペネトレーションテスト用OSにはプリインストールされています。もしインストールされていない場合は、各ディストリビューションのパッケージマネージャーを使用してインストールします。Debian/Ubuntuベースのシステムでは、以下のコマンドでインストールできます。

sudo apt update
sudo apt install aircrack-ng

ソースからコンパイルする場合、airolib-ngはデフォルトではコンパイルされないことがあります。その場合は、SQLite3ライブラリとヘッダーファイルをインストールした上で、コンパイル時にmake sqlite=trueオプションを指定する必要があります。

# 例: Debian/Ubuntu系
sudo apt install libsqlite3-dev

# aircrack-ngソースディレクトリで
make sqlite=true
sudo make sqlite=true install

(注:Windows環境でソースからビルドする場合は、Aircrack-ngソースに含まれるSQLiteパッチが必要になる場合がありますが、Linux環境では通常不要です。)

airolib-ngは、PMKを保存するためにデータベースを使用します。デフォルトでは軽量なSQLite3が使用され、特別な設定なしで利用できます。ほとんどのプラットフォームで利用可能であり、管理の手間やリソース消費が少ないため、標準となっています。

一部の情報ではMySQL/MariaDBもサポートされている可能性が示唆されていますが、公式ドキュメントでは主にSQLite3について言及されており、MySQL/MariaDBのサポートは実験的または古いバージョンの情報である可能性があります。通常はデフォルトのSQLite3を使用するのが最も簡単で確実です。

ターゲットとするネットワークのESSID(複数可)を記述したファイルと、パスワードクラックに使用する辞書ファイル(パスワードリスト)が必要です。これらのファイルは、1行に1つのESSIDまたはパスワードが記述されたプレーンテキスト形式である必要があります。

ESSIDリストの例 (essids.txt):

MyWiFiNetwork
GuestNetwork
default-ssid

パスワードリストの例 (passwords.txt):

password
12345678
qwerty
admin
secret
... (大量のパスワード候補) ...

大規模なパスワードリストは、オンラインで入手可能です(例: RockYouリストなど)。ただし、リストが大きければ大きいほど、PMKの計算に必要な時間とディスク容量が増加します。

airolib-ngの基本的な使い方 ⌨️

airolib-ngの基本的なコマンド形式は以下の通りです。

airolib-ng <データベースファイル名> <操作> [オプション]

まず、データベースファイル名を指定し、--import essid操作でESSIDリストファイルをインポートします。指定したデータベースファイルが存在しない場合は、自動的に作成されます。

# "mydatabase.db" という名前でデータベースを作成(または開く)し、
# "essids.txt" ファイルからESSIDをインポートする
airolib-ng mydatabase.db --import essid essids.txt

単一のESSIDを直接インポートすることも可能です。標準入力から読み込む場合は - を使用します。

# "MyNetwork" というESSIDを直接インポートする
echo "MyNetwork" | airolib-ng mydatabase.db --import essid -

実行すると、データベースが作成され(存在しない場合)、ESSIDが読み込まれた旨のメッセージが表示されます。

次に、--import passwd操作でパスワードリストファイルをインポートします。

# "passwords.txt" ファイルからパスワードをインポートする
airolib-ng mydatabase.db --import passwd passwords.txt

大規模なパスワードリストの場合、インポートには時間がかかることがあります。

ESSIDとパスワードをインポートしたら、--batch操作を実行して、データベース内の全てのESSIDとパスワードの組み合わせに対するPMKを計算します。

# データベース内の全ての組み合わせについてPMKを計算する
airolib-ng mydatabase.db --batch

この処理は非常に時間がかかり、CPUリソースを大量に消費します。計算する組み合わせの数(ESSIDの数 × パスワードの数)によっては、数時間から数日以上かかることもあります。実行中は、計算されたPMKの数や処理速度が表示されます。

ヒント
新しいESSIDやパスワードリストを追加した場合は、再度--batchを実行する必要があります。これにより、新しい組み合わせに対するPMKが計算・追加されます。

--stats操作を使用すると、データベース内のESSID数、パスワード数、計算済みPMKの数などの統計情報を確認できます。

# データベース "mydatabase.db" の統計情報を表示する
airolib-ng mydatabase.db --stats

PMKの計算が完了したデータベースは、aircrack-ngでWPA/WPA2ハンドシェイクを含むキャプチャファイル(.cap)をクラックする際に使用できます。-rオプション(古いバージョンでは-d)でデータベースファイルを指定します。

# キャプチャファイル "capture.cap" を、事前に計算したPMKデータベース "mydatabase.db" を使ってクラックする
aircrack-ng -r mydatabase.db capture.cap

aircrack-ngは、キャプチャファイル内のハンドシェイク情報(ESSIDを含む)と、指定されたデータベース内の対応するESSIDに対する計算済みPMKを比較します。これにより、辞書ファイル(-wオプション)を直接使うよりもはるかに高速にパスワードを試行できます。🚀

その他の操作とオプション ⚙️

airolib-ngには、基本的な操作以外にもいくつかの便利な機能があります。

操作/オプション 説明
--clean [all] データベース内の不要なデータ(古いPMKなど)をクリーンアップします。allを指定すると、ファイルサイズの削減や整合性チェックも試みます。
--verify [all] ランダムに選択されたPMK、またはall指定時にはデータベース内の全てのPMKを検証し、不正なものがあれば削除します。PMK計算中に問題が発生した場合などに役立ちます。
--sql <SQL文> データベースに対して直接SQL文を実行します。データベースの内容を詳細に調査したり、特定の操作を行いたい上級者向けの機能です。
--import cowpatty <ファイル> coWPAtty形式のハッシュファイル(特定のESSIDに対するPMKが計算済みのファイル)をインポートします。データベースが存在しない場合は作成されます。
--export cowpatty <ESSID> <ファイル> データベース内の指定したESSIDに対する計算済みPMKをcoWPAtty形式のファイルにエクスポートします。他のツールとの連携に利用できます。

これらのオプションを利用することで、データベースの管理や他のツールとの連携がより柔軟に行えます。

いくつかの一般的な問題と解決策:

  • Windows環境でのデータベース作成/オープンエラー: airolib-ngやデータベースファイルが、é, à のような特殊文字を含むディレクトリパスにある場合、SQLiteの問題でエラーが発生することがあります(スペースは問題ないことが多い)。特殊文字を含まないディレクトリに移動することで解決できます。
  • --batchが非常に遅い: これは仕様です。PMK計算は本質的に時間がかかります。CPU性能、ESSIDの数、パスワードリストのサイズに依存します。より強力なCPUを使用するか、パスワードリストを絞り込む、あるいは計算時間を確保するしかありません。

まとめ ✨

airolib-ngは、WPA/WPA2のパスワードクラックにおける大きなボトルネックであるPMK計算を事前に実行しておくことで、実際のクラック時間を劇的に短縮するための強力なツールです。

  • ESSIDとパスワードリストからPMKデータベースを構築します。
  • --batchによる事前計算は時間がかかりますが、一度行えば再利用可能です。
  • aircrack-ng -r <データベース> <キャプチャファイル> で高速なクラックを実現します。
  • SQLite3をデフォルトのデータベースとして使用し、手軽に利用できます。

大量のパスワード候補を試す必要がある場合や、同じESSIDに対して繰り返しクラックを試みる場合には、airolib-ngの利用が非常に効果的です。ただし、計算には相応の時間とリソースが必要となることを理解しておく必要があります。

繰り返しになりますが、このツールは自身の管理下にある、または許可されたネットワークのセキュリティ評価のためにのみ使用してください。適切な知識と倫理観を持って活用しましょう。🛡️


参考情報

コメント

タイトルとURLをコピーしました