この記事では、Wi-Fiセキュリティ監査ツールの一つである「Bully」について、その機能、インストール方法、使い方、そして倫理的な側面まで詳しく解説します。Bullyは、特にWPS(Wi-Fi Protected Setup)の脆弱性を悪用してWPA/WPA2パスフレーズを回復することを目的としたツールです。🔒
⚠️ 重要:倫理的な注意喚起
Bullyのようなツールは、強力な機能を持ちますが、その使用には大きな責任が伴います。許可なく他人のWi-Fiネットワークに対してこのツールを使用することは、不正アクセス禁止法などの法律に違反する犯罪行為であり、絶対に許されません。 本記事で提供する情報は、純粋に教育目的、または自身が管理するネットワークのセキュリティ強度をテスト・評価する目的でのみ利用してください。悪用した場合の結果について、筆者は一切の責任を負いません。
Bullyとは何か? 🤔
Bullyは、Wi-Fiネットワークのセキュリティ設定を簡素化するために設計されたWPSプロトコルに存在する既知の設計上の欠陥(脆弱性)を悪用するブルートフォース攻撃ツールです。C言語で実装されており、同様の目的を持つ他のツール(特に有名なReaver)と比較していくつかの利点を持っています。
主な利点としては、以下のような点が挙げられます。
- 依存関係が少ない
- メモリとCPUのパフォーマンスが向上している
- エンディアン(バイトオーダー)を正しく処理する
- より堅牢なオプションセットを持つ
- 異常なシナリオの検出と処理が改善されている
BullyはLinux上で動作し、特にOpenWrtなどの組み込みLinuxシステムでもアーキテクチャに関係なく動作するように開発されました。多くのベンダーのアクセスポイントや異なる設定に対してテストされ、成功事例が多く報告されています。
2011年12月にWPSの脆弱性が公開されて以来、この欠陥を利用して数時間でWPS PINを特定し、それによってネットワークのWPA/WPA2事前共有キー(パスフレーズ)を回復することが可能になりました。Bullyはこの攻撃を自動化するためのツールの一つです。
インストール方法 💻
Bullyを使用するには、まずお使いのLinuxシステムにインストールする必要があります。Kali Linuxのようなペネトレーションテスト用ディストリビューションには、デフォルトで含まれているか、リポジトリから簡単にインストールできる場合があります。
Kali Linux / Debian / Ubuntu系でのインストール
aptパッケージマネージャを使用してインストールするのが最も簡単です。ターミナルを開き、以下のコマンドを実行します。(Ubuntuの場合、バージョンによってはデフォルトリポジトリに含まれていない場合があります)
sudo apt update
sudo apt install bully
Bullyは動作にいくつかの依存関係を必要とします。`apt install bully` を実行すると、通常、これらの依存関係も自動的に解決・インストールされます。主な依存関係は以下の通りです。
libpcap-dev
(または実行時ライブラリlibpcap0.8
)libssl-dev
(または実行時ライブラリlibssl
)aircrack-ng
(補助ツールとして必要になることが多い)pixiewps
(Pixie Dust攻撃を実行する場合に必要)
もし `apt` で見つからない場合や、最新版をソースからビルドしたい場合は、GitHubリポジトリからソースコードを取得してコンパイルすることも可能です。
ソースからのビルド (一般的な手順)
GitHubリポジトリ(例:kimocoder/bully または aanarchyy/bully など、アクティブなフォークを確認してください)からソースコードをクローンし、ビルドします。
# 必要な開発パッケージをインストール (Debian/Ubuntu系の場合)
sudo apt update
sudo apt install -y build-essential libpcap-dev libssl-dev aircrack-ng pixiewps git
# ソースコードをクローン (例: kimocoderのリポジトリ)
git clone https://github.com/kimocoder/bully.git
cd bully/bully/src/
# ビルドとインストール
make
sudo make install
注意: GitHubには複数のBullyリポジトリが存在します。開発がアクティブで、信頼できるリポジトリを選択することが重要です。 `aanarchyy/bully` は過去によく参照されましたが、現在は `kimocoder/bully` などがよりアクティブなフォークかもしれません。
準備:モニターモードへの切り替え
Bullyを使用する前に、Wi-Fiアダプターを「モニターモード」に設定する必要があります。モニターモードにすることで、周辺のWi-Fiトラフィックをすべて傍受できるようになります。これには `aircrack-ng` スイートに含まれる `airmon-ng` コマンドを使用するのが一般的です。
-
利用可能なWi-Fiインターフェースを確認:
これにより、`wlan0`, `wlan1` などのインターフェース名が表示されます。sudo airmon-ng
-
モニターモードを開始:
成功すると、`wlan0mon` や `mon0` のような名前の新しいモニターモード用インターフェースが作成されます。Bullyではこのインターフェース名を使用します。# 例: wlan0 をモニターモードにする sudo airmon-ng start wlan0
-
(オプション) 干渉する可能性のあるプロセスを停止:
`airmon-ng check kill` コマンドを実行すると、モニターモードの妨げになる可能性のあるプロセス(NetworkManagerなど)を停止できます。
sudo airmon-ng check kill
重要: すべてのWi-Fiアダプターがモニターモードとパケットインジェクションをサポートしているわけではありません。Bullyを使用するには、これらに対応したアダプターが必要です。アダプターの互換性については、事前に確認してください。
基本的な使い方 📶
Bullyを実行するための基本的なコマンド形式は以下の通りです。実行にはroot権限が必要です。
sudo bully <インターフェース名> -b <ターゲットBSSID> [オプション]
最低限必要な情報は、モニターモードのインターフェース名と、攻撃対象となるアクセスポイントのBSSID(MACアドレス)です。ESSID(ネットワーク名)やチャンネルも指定すると、より効率的になります。
ターゲット情報の収集
攻撃対象のBSSID、ESSID、チャンネルを特定するには、`airodump-ng` などのツールを使用します。
# モニターモードのインターフェース (例: wlan0mon) でスキャンを開始
sudo airodump-ng wlan0mon
このコマンドを実行すると、周辺のWi-Fiネットワークの一覧が表示されます。WPSが有効になっているネットワークは、`WPS`カラムにバージョン情報などが表示されることがあります。ターゲットとするネットワークの `BSSID` と `CH` (チャンネル)、`ESSID` をメモします。
基本的な攻撃コマンド例
ターゲットのBSSIDが `00:11:22:33:44:55`、チャンネルが `6`、モニターインターフェースが `wlan0mon` の場合:
sudo bully wlan0mon -b 00:11:22:33:44:55 -c 6
ESSIDも指定する場合(例:`MyWiFiNetwork`):
sudo bully wlan0mon -b 00:11:22:33:44:55 -c 6 -e MyWiFiNetwork
Bullyは自動的にWPS PINのブルートフォース試行を開始します。PINは通常8桁ですが、最後の1桁はチェックサムであるため、実質的には7桁(10^7 = 10,000,000通り)の試行が必要です。さらに、WPSプロトコルの仕様上、PINは前半4桁と後半3桁に分けて検証されるため、最大試行回数は 10^4 + 10^3 = 11,000回となります。
攻撃が成功すると、WPS PINと、それを用いて取得されたWPA/WPA2パスフレーズが表示されます。
主要なオプション ⚙️
Bullyには多くのオプションがあり、攻撃の挙動を細かく制御できます。以下に主要なものを表で示します。
オプション | 省略形 | 説明 |
---|---|---|
<interface> |
(なし) | モニターモードのワイヤレスインターフェース名 (必須)。 |
--bssid <macaddr> |
-b |
ターゲットアクセスポイントのMACアドレス (必須、または -e )。 |
--essid <string> |
-e |
ターゲットアクセスポイントのESSID(ネットワーク名) (必須、または -b )。指定するとターゲット特定に役立ちます。 |
--channel <N[,N...]> |
-c |
ターゲットアクセスポイントのチャンネル番号、またはカンマ区切りでホッピングするチャンネルリスト。指定しない場合は全チャンネルをスキャンしますが、攻撃速度は低下します。 |
--pin <N> |
-p |
指定したPINから始まるシーケンシャルな攻撃を開始します(7桁または8桁)。デフォルトはランダム化されたPINリストを使用します。 |
--pixiewps |
-d |
Pixie Dust攻撃(オフライン攻撃)を実行します。成功すれば数秒でPINを特定できますが、特定のチップセット(Ralink, Broadcom, Realtekなど)を搭載した脆弱なルーターでのみ有効です。`pixiewps`ツールのインストールが必要です。 |
--verbosity <N> |
-v |
表示するメッセージの詳細度レベル(1〜4)。レベル4が最も詳細です。デフォルトは3。デバッグやPixie Dust攻撃の詳細確認に役立ちます。 |
--lockwait <N> |
-l |
アクセスポイントがWPSをロックした場合に待機する秒数。多くのAPは5分間(300秒)ロックするため、デフォルト値は43秒程度に設定されており、ロックアウト期間中に数回スリープします(例: 7回 * 43秒 ≈ 301秒)。 |
--timeout <N> |
-t |
パケット応答のタイムアウト秒数。電波状況が悪い場合に増やすと効果的な場合があります。 |
--retries <N> |
-r |
タイムアウトや失敗が発生した場合のリトライ回数。 |
--workdir <path> |
-w |
セッションファイルやランダム化PINファイルを保存する作業ディレクトリ。デフォルトは `~/.bully/`。 |
--source <macaddr> |
-s |
攻撃元として使用するMACアドレス。指定しない場合、通常はインターフェースのMACアドレスが使われます。 |
--force |
-F |
APがWPS非対応に見える場合でも強制的に攻撃を試みます。 |
--sequential |
-S |
PINを0000000から順番に試行します。 |
--help |
-h |
ヘルプメッセージを表示して終了します。 |
これらのオプションを組み合わせることで、様々な状況に対応した攻撃設定が可能です。例えば、Pixie Dust攻撃を試みる場合は -d
オプションを使用します。
Pixie Dust攻撃 ✨
Pixie Dust攻撃(ピクシーダスト攻撃)は、2014年に発見されたWPSプロトコルの実装における脆弱性を利用した攻撃手法です。従来のブルートフォース攻撃が最大11,000回の試行を必要とするのに対し、Pixie Dust攻撃は、アクセスポイントが特定の条件下(主に乱数生成器の初期化に関する不備)で脆弱である場合、わずか数秒から数分でWPS PINを特定できます。
この攻撃はオフラインで行われます。つまり、アクセスポイントとの通信から特定のデータ(PKE, PKR, E-Hash1, E-Hash2, E-Nonce, Authkeyなど)を一度取得すれば、あとは計算によってPINを割り出すため、アクセスポイント側でのロックアウトの影響を受けにくいという利点があります。
BullyでPixie Dust攻撃を実行するには、-d
または --pixiewps
オプションを使用します。この機能を利用するには、別途 `pixiewps` というツールがシステムにインストールされている必要があります。
# Pixie Dust 攻撃の実行例
sudo bully wlan0mon -b 00:11:22:33:44:55 -c 6 -d
詳細な情報を表示したい場合は、-v 4
オプションを追加します。これにより、収集されたハッシュ値や、内部で実行される `pixiewps` コマンドの内容が表示されます。
# 詳細表示付きでPixie Dust 攻撃を実行
sudo bully wlan0mon -b 00:11:22:33:44:55 -c 6 -d -v 4
ただし、全てのアクセスポイントがPixie Dust攻撃に対して脆弱なわけではありません。特に比較的新しいモデルや、ファームウェアがアップデートされている場合は対策されている可能性が高いです。脆弱性は特定のチップセット(Ralink, Broadcom, Realtekなど)の実装に関連していることが知られています。
セッション管理と再開 💾
WPS PINのブルートフォース攻撃は、完了までに数時間かかる場合があります。途中で中断した場合でも、Bullyはセッション情報をファイルに保存し、後で中断した箇所から攻撃を再開する機能を持っています。
デフォルトでは、セッションファイルは ~/.bully/
ディレクトリ内に、ターゲットのBSSIDに基づいた名前(例:`001122334455.run`)で保存されます。作業ディレクトリは -w
オプションで変更可能です。
攻撃を中断(Ctrl+Cなど)すると、現在の進捗状況がセッションファイルに書き込まれます。次回、同じターゲットに対して同じコマンド(インターフェース、BSSID、チャンネル指定など)を実行すると、Bullyは自動的に既存のセッションファイルを検出し、中断したPINから攻撃を再開します。
# 初回実行 (中断されたとする)
sudo bully wlan0mon -b 00:11:22:33:44:55 -c 6
# (...) 攻撃中に Ctrl+C で中断
# 再度同じコマンドを実行すると、自動的に再開される
sudo bully wlan0mon -b 00:11:22:33:44:55 -c 6
# 出力に "Resuming session from file..." のようなメッセージが表示されるはず
もしセッションファイルが存在するにも関わらず最初から攻撃をやり直したい場合は、該当するセッションファイル(`.run`ファイル)と、場合によってはPINリストファイル(`pins`ファイル)を削除してからBullyを実行してください。
注意: ランダム化されたPINリスト(`pins`ファイル)は、通常、作業ディレクトリ内に一つだけ作成され、複数のセッションで共有されます。このファイルを削除すると、それを使用していた中断中のセッションは再開できなくなります。
トラブルシューティングとヒント 💡
Bullyの使用中に遭遇する可能性のある一般的な問題と、その対処法についていくつか紹介します。
-
APがWPSをロックする (WPS Locked): 多くのアクセスポイントは、短時間に多数の不正なPIN試行を検出すると、一定時間(通常5分程度)WPS機能をロックします。Bullyはこれを検出し、
-l
オプションで指定された時間待機します。ロックが頻繁に発生する場合は、PIN試行の間隔を調整するオプション(古いバージョンにあった可能性がありますが、最近のバージョンでは自動調整されることが多い)や、--lockwait
の時間を調整する必要があるかもしれません。 -
タイムアウトが頻発する: アクセスポイントとの距離が遠い、または電波干渉が多い環境では、パケットの送受信がうまくいかずタイムアウトが発生しやすくなります。
-t
(--timeout
) オプションでタイムアウト時間を長く設定したり、-r
(--retries
) オプションでリトライ回数を増やしたりすることで改善する場合があります。アクセスポイントに近づくのも有効です。 -
“Failed to associate” エラー: アクセスポイントとの関連付け(Association)に失敗している状態です。電波強度、チャンネル設定、MACアドレスフィルタリングなどが原因として考えられます。
-c
で正しいチャンネルを指定しているか、電波強度は十分か確認してください。 -
Pixie Dust攻撃が失敗する: ターゲットのアクセスポイントがPixie Dust脆弱性を持っていない可能性があります。その場合は、通常のブルートフォース攻撃を試すことになります。また、
pixiewps
ツールが正しくインストールされていない、あるいはバージョンが古い可能性も考えられます。 - 互換性のないアダプター: 使用しているWi-Fiアダプターがモニターモードやパケットインジェクションに完全に対応していない場合、Bullyは正常に動作しません。アダプターのドライバを更新したり、対応が確認されている別のアダプターを使用したりすることを検討してください。
-
検出とハンドリングの改善: BullyはReaverと比較して、異常なシナリオの検出とハンドリングが改善されているとされていますが、それでも予期せぬ動作をする可能性はあります。問題が発生した場合は、
-v 4
オプションで詳細なログを確認し、原因を特定する手がかりを探してください。
倫理的考察と法的側面 ⚖️
繰り返しになりますが、Bullyは強力なセキュリティ監査ツールである一方、悪用されれば深刻なプライバシー侵害や不正アクセスにつながる可能性があります。
WPSの脆弱性は広く知られており、多くのベンダーは対策を進めています。最も確実な防御策は、アクセスポイントの設定でWPS機能を無効にすることです。もしWPS機能が必要な場合でも、最新のファームウェアにアップデートし、可能であればPixie Dust攻撃やブルートフォース攻撃に対する耐性を持つ機種を選ぶことが推奨されます。
まとめ ✨
Bullyは、WPSの脆弱性を突いてWi-Fiパスワードを解析するための強力なツールです。特にReaverと比較して依存関係が少なく、パフォーマンスやオプションが改善されています。Pixie Dust攻撃のような高速な手法もサポートしており、脆弱なアクセスポイントに対しては非常に効果的です。
しかし、その強力さゆえに、使用には細心の注意と高い倫理観が不可欠です。許可なく他者のネットワークに使用することは法的に禁止されており、重大な結果を招く可能性があります。
この記事が、Bullyの機能と正しい使い方、そしてそれに伴うリスクと責任について理解を深める一助となれば幸いです。Wi-Fiセキュリティに関心を持つすべての人にとって、技術的な知識と共に、倫理的な行動規範を守ることの重要性を忘れないでください。自身のネットワークを守るためには、まずWPSを無効にすることを検討しましょう。🛡️