現代社会において、無線LAN(Wi-Fi)は私たちの生活に欠かせない技術となりました。しかし、その利便性の裏側には、セキュリティのリスクも潜んでいます。Wi-Fiネットワークの安全性を確保するためには、定期的なセキュリティ評価(ペネトレーションテスト)が重要です。 このブログ記事では、Kali Linuxに含まれる強力なWi-Fi監査ツール「Wifite」に焦点を当て、その機能と基本的な使い方、そして最も重要な倫理的・法的側面について詳しく解説します。
⚠️ 重要:
この記事で紹介するツールや技術は、教育目的および自身が所有または管理権限を持つネットワークのセキュリティ評価のみに使用されるべきです。許可なく他者のネットワークにアクセスしたり、攻撃を試みたりすることは、法律で固く禁じられており、重大な罰則の対象となります。ツールの使用は自己責任で行い、法と倫理を遵守してください。
Wifiteとは? 🤔
Wifite(現在のバージョンはWifite2)は、Wi-Fiネットワークのセキュリティ監査プロセスを自動化するために設計されたPythonスクリプトです。特に、WEP, WPA/WPA2-PSK, WPSといった一般的な暗号化方式に対する既知の攻撃手法を自動で実行し、パスワード(キー)の回復を試みます。
Wifiteは、Aircrack-ngスイート(airmon-ng, airodump-ng, aireplay-ng, aircrack-ngなど)、Reaver, Bully, tsharkといった他の有名なWi-Fiハッキングツール群を内部で利用し、それらの複雑なコマンド操作を簡略化します。これにより、初心者から経験豊富なセキュリティ専門家まで、幅広いユーザーが効率的にWi-Fiの脆弱性診断を行うことができます。
主な機能 ✨
- ターゲットの自動検出とソート: 周囲のアクセスポイントをスキャンし、信号強度順に表示します。
- 複数方式への自動攻撃: WEP, WPA/WPA2 (PSK), WPSに対応した攻撃を自動で試行します。
- WEP攻撃: 複数のWEPクラッキング手法(Fragmentation, Chop-Chop, ARP Replayなど)を自動実行します。
- WPA/WPA2攻撃: WPAハンドシェイクのキャプチャと、辞書攻撃によるパスワードクラックを試みます。PMKID攻撃にも対応しています。
- WPS攻撃: ReaverやBullyを用いたオンラインPINブルートフォース攻撃や、Pixie-Dust(オフライン攻撃)を試みます。
- 隠しSSID (Hidden SSID) の検出: クライアントからのプローブ要求を監視し、隠されたネットワーク名を発見します。
- カスタマイズ性: 様々なコマンドラインオプションにより、攻撃対象や方法を細かく指定できます。
- 依存ツールの連携: Aircrack-ng, Reaver, Bully, hcxdumptool, hashcatなど、多くの外部ツールと連携して動作します。
インストールと準備 🛠️
Wifiteは、ペネトレーションテスト用のLinuxディストリビューションであるKali Linuxにデフォルトで含まれています。そのため、Kali Linuxを使用している場合は、通常、追加のインストールは不要です。
もし含まれていない場合や、最新版を使用したい場合は、以下のコマンドでインストールまたはアップデートできます。
sudo apt update
sudo apt install wifite
Wifiteは内部で多くのツールを利用するため、それらの依存関係も満たされている必要があります。Kali Linuxには通常、必要なツール(Aircrack-ngスイート, Reaver, tsharkなど)がプリインストールされていますが、もし不足している場合は、Wifite実行時にエラーメッセージが表示されることがあります。その際は、指示に従って必要なパッケージをインストールしてください。例えば、hcxdumptool
やhcxtools
(PMKID攻撃用)、pyrit
(古いツールですが、一部機能で利用される可能性あり) などが必要になる場合があります。
# 例: 不足ツールがある場合
sudo apt install hcxdumptool hcxtools
必要なハードウェア: モニターモード対応無線LANアダプタ
Wifiteを使用するには、モニターモード (Monitor Mode) およびパケットインジェクション (Packet Injection) に対応した無線LANアダプタが必須です。一般的なPCに内蔵されている無線LANカードの多くは、これらの機能に対応していません。
モニターモードとは、特定のアクセスポイントに接続せずに、周囲を飛び交う全てのWi-Fiパケットを傍受(キャプチャ)するモードです。パケットインジェクションは、偽装したパケットをネットワークに送り込む機能で、特定の攻撃(例: Deauthentication攻撃)に必要です。
これらの機能に対応したUSB接続の無線LANアダプタが市販されています。アダプタを選ぶ際は、Linux(特にKali Linux)での動作実績があり、モニターモードとパケットインジェクションに対応していることを確認することが重要です。チップセット(例: Atheros, Ralink, Realtekの一部)によって対応状況が異なります。
モニターモードへの切り替え
Wifiteは通常、起動時に自動で無線LANアダプタをモニターモードに切り替えようとしますが、手動で切り替える必要がある場合もあります。airmon-ng
コマンドを使用するのが一般的です。
-
まず、利用可能な無線インターフェースを確認します。
iwconfig
または
sudo airmon-ng
出力から、無線LANアダプタのインターフェース名(例:
wlan0
)を確認します。 -
干渉する可能性のあるプロセスを確認し、停止させます。
sudo airmon-ng check kill
これにより、NetworkManagerなどのプロセスが停止され、モニターモードへの切り替えがスムーズに行えるようになります。
-
モニターモードを開始します。
sudo airmon-ng start wlan0
(
wlan0
は実際のインターフェース名に置き換えてください)成功すると、新しいモニターモード用のインターフェース(例:
wlan0mon
)が作成されます。 -
再度
iwconfig
などで確認し、Mode:Monitor
となっていることを確認します。iwconfig wlan0mon
モニターモードの使用が終わったら、元のManagedモードに戻すことを忘れないでください。
sudo airmon-ng stop wlan0mon
sudo systemctl restart NetworkManager # NetworkManagerを再起動する場合
Wifiteの使い方 🚀
Wifiteの基本的な使い方は非常にシンプルです。管理者権限(root)で実行する必要があります。
sudo wifite
これを実行すると、Wifiteは以下のステップで動作します。
- インターフェースの選択: 利用可能な無線LANインターフェースを検出し、モニターモードに対応しているものをリストアップします。複数のアダプタがある場合は、使用するものを選択するよう求められます。自動的にモニターモードへの切り替えを試みます。
- スキャン: 周囲のWi-Fiアクセスポイントのスキャンを開始します。検出されたアクセスポイントが、信号強度 (PWR)、暗号化方式 (WEP, WPA, WPSなど)、ESSID (ネットワーク名)、チャンネルなどの情報と共にリアルタイムで表示されます。
- ターゲット選択: スキャンを停止する(通常は `Ctrl+C` を押す)と、検出されたアクセスポイントのリストが表示され、攻撃対象とするネットワークの番号を選択するように求められます。複数選択や、’all’ を選択して全ターゲットを順に攻撃することも可能です。
- 攻撃の実行: 選択されたターゲットの暗号化方式に応じて、Wifiteは適切な攻撃を自動的に試みます。
- WEP: ARPリプレイ攻撃、フラグメンテーション攻撃などを試み、十分なIVs (Initialization Vectors) を収集してキーのクラックを試みます。
- WPA/WPA2: まず、接続されているクライアントに対して Deauthentication パケットを送信し、クライアントが再接続する際の WPAハンドシェイク (4-way handshake) のキャプチャを試みます。ハンドシェイクがキャプチャできたら、指定された辞書ファイル(デフォルトまたは
--dict
オプションで指定)を使ってオフラインでのパスワードクラックを試みます (Aircrack-ngを使用)。また、PMKIDを取得できた場合は、それを利用したクラックも試みます (Hashcatが必要)。 - WPS: WPSが有効な場合、まず Pixie-Dust 攻撃 (Reaver または Bully を使用) を試みます。これが成功すれば、PINコードやWPAパスワードが短時間で判明することがあります。Pixie-Dust が失敗した場合、オンラインでのPINブルートフォース攻撃に移行します。これには時間がかかる場合があります。
- 結果の表示: パスワードやPINのクラックに成功すると、その情報が表示され、通常
cracked.txt
やcracked.json
といったファイルに結果が保存されます。
主要なコマンドラインオプション
Wifiteは多くのオプションを提供しており、より詳細な制御が可能です。sudo wifite --help
または sudo wifite -h
で全オプションを確認できます。以下はよく使われるオプションの一部です。
オプション | 説明 | 例 |
---|---|---|
-i <interface> |
使用する無線インターフェースを指定します (モニターモードのインターフェース名、例: wlan0mon)。 | sudo wifite -i wlan0mon |
--kill |
モニターモードへの切り替え前に、干渉する可能性のあるプロセスを強制終了します。 | sudo wifite --kill |
-c <channel> |
特定のチャンネルのみをスキャンまたは攻撃対象とします。 | sudo wifite -c 6 |
-b <bssid> |
特定のBSSID(MACアドレス)を持つアクセスポイントのみをターゲットにします。 | sudo wifite -b 00:11:22:33:44:55 |
--essid <essid> |
特定のESSID(ネットワーク名)を持つアクセスポイントのみをターゲットにします。 | sudo wifite --essid "MyHomeNetwork" |
--wep |
WEPで暗号化されたネットワークのみを攻撃対象にします。 | sudo wifite --wep |
--wpa |
WPA/WPA2で暗号化されたネットワークのみを攻撃対象にします。(ハンドシェイクキャプチャとPMKID) | sudo wifite --wpa |
--wps |
WPSが有効なネットワークのみを攻撃対象にします。 | sudo wifite --wps |
--dict <file> |
WPAハンドシェイクのクラックに使用する辞書ファイルを指定します。 | sudo wifite --dict /usr/share/wordlists/rockyou.txt |
--pow <dbm> |
指定した信号強度よりも強いアクセスポイントのみをターゲットにします。 (例: -50 dBm 以上なら --pow 50 ) |
sudo wifite --pow 60 |
--skip-crack |
WPAハンドシェイクやPMKIDのクラックを試みず、キャプチャのみを行います。後で手動でクラックする場合に使用します。 | sudo wifite --wpa --skip-crack |
--no-wps |
WPS攻撃を試みません。 | sudo wifite --no-wps |
--bully |
WPS攻撃にReaverではなくBullyを使用します。 | sudo wifite --wps --bully |
WPA/WPA2辞書攻撃について
WPA/WPA2のパスワードを破る主な方法は、ハンドシェイクをキャプチャした後のオフライン辞書攻撃です。この攻撃の成功率は、使用する辞書ファイルの質に大きく依存します。辞書ファイルは、パスワードとして使われそうな単語、文字列、数字の組み合わせなどが大量にリスト化されたテキストファイルです。
Kali Linuxにはいくつかの辞書ファイルが標準で含まれていますが(例: `/usr/share/wordlists/rockyou.txt`)、ターゲットが使いそうなパスワードが含まれていなければ、クラックは成功しません。より強力なパスワードや、推測されにくいパスワードに対しては、巨大な辞書ファイルや、特定のルールに基づいてパスワード候補を生成するツール(例: Hashcatのルール機能)が必要になることがあります。このプロセスには非常に時間がかかる可能性があります。
法的および倫理的な考慮事項 ⚖️🚫
Wifiteは強力なツールですが、その使用には重大な法的および倫理的な責任が伴います。
- 許可なきアクセスは違法です: あなた自身が所有していない、またはテストを行う明確な書面による許可を得ていないWi-Fiネットワークに対してWifiteを使用することは、ほとんどの国や地域で不正アクセス行為として法律で禁止されています。これは重大な犯罪であり、罰金や懲役刑につながる可能性があります。
- プライバシーの侵害: 他人のネットワークトラフィックを傍受したり、パスワードを解読したりすることは、プライバシーの深刻な侵害です。
- サービスの妨害: Deauthentication攻撃などは、正当なユーザーのネットワーク接続を意図的に切断する行為であり、サービス妨害 (DoS) 攻撃とみなされる可能性があります。
- 教育目的と自己責任: Wifiteや同様のツールは、ネットワークセキュリティの仕組みを学び、自身のネットワークの脆弱性を評価するためにのみ使用されるべきです。ツールの使用によって生じたいかなる結果についても、使用者が全責任を負います。
絶対に覚えておいてください:
技術的な好奇心や興味本位で、決して他人のWi-Fiネットワークをターゲットにしてはいけません。ペネトレーションテストは、常に倫理観を持ち、法を遵守して行う必要があります。
もし企業や組織のネットワークのセキュリティ評価を行う場合は、必ず事前に契約を結び、テストの範囲、期間、方法について明確な合意を得てください。
脆弱な暗号化方式について
Wifiteがターゲットとする主な暗号化方式には、それぞれ歴史と脆弱性があります。
- WEP (Wired Equivalent Privacy): 1999年に標準化された最初のWi-Fi暗号化方式ですが、設計上の深刻な脆弱性が早期に発見されました。特に、暗号化に使われるIV (Initialization Vector) の生成方法に問題があり、比較的短時間(数分程度)で暗号キーを解読できてしまいます。2022年頃には、もはや安全な方式とはみなされておらず、現在ではほとんど使用されていません。もしWEPを使用しているネットワークがあれば、直ちにWPA2やWPA3へ移行すべきです。
- WPA (Wi-Fi Protected Access): WEPの脆弱性を受けて2002年に策定された規格です。TKIPという暗号化プロトコルを使用し、キーを動的に変更するなどセキュリティを強化しましたが、WPA自体にも後に脆弱性(例: TKIPの解読可能性)が見つかりました。
- WPA2 (Wi-Fi Protected Access II): 2004年に標準化され、より強力な暗号化アルゴリズムであるAES (CCMP) を採用しました。長らく標準的な方式として広く普及しましたが、2017年にKRACKs (Key Reinstallation Attacks) と呼ばれる深刻な脆弱性が発見されました。これはプロトコル自体の欠陥を利用するもので、多くのデバイスが影響を受けました。ただし、パッチ適用などで対策は可能です。現在でも多くの環境で利用されています。
- WPS (Wi-Fi Protected Setup): 2006年に登場した、パスワード入力なしで簡単にWi-Fi接続を行うための補助的な仕組みです。PINコード(通常8桁)を入力するか、ボタンを押すだけで接続できます。しかし、PINコードの認証方法に脆弱性があり、特にオンラインでのブルートフォース攻撃に対して弱いことが知られています(8桁のうち最後の1桁はチェックサムで、実質7桁=11,000通りの試行で済む場合がある)。また、Pixie-Dust攻撃のように、一部のルーター実装ではオフラインでPINを数秒〜数分で解析できる脆弱性も存在します。セキュリティを高めるためには、WPS機能は無効にしておくことが推奨されます。
- WPA3: 2018年に発表された最新の規格で、WPA2のKRACKsなどの脆弱性に対処し、より安全な初期キー交換方式 (SAE: Simultaneous Authentication of Equals) を導入するなど、セキュリティが大幅に強化されています。ブルートフォース攻撃への耐性も向上しています。新しいデバイスやルーターはWPA3に対応していますが、古い機器との互換性の問題から、まだWPA2/WPA3互換モードで運用されていることもあります。可能であれば、WPA3専用モードを使用することが最も安全です。
Wifiteはこれらの歴史的な脆弱性を利用して攻撃を自動化しますが、最新のWPA3(特にSAEが正しく実装されている場合)に対しては、辞書攻撃以外に有効な攻撃手段は現状ほとんどありません。したがって、自身のネットワークを守るためには、WPA3を使用し、推測困難な強力なパスワードを設定し、WPSを無効にすることが非常に重要です。
まとめ 🏁
Wifiteは、Wi-Fiネットワークのセキュリティ監査を自動化し、簡略化するための非常に強力で便利なツールです。WEP, WPA/WPA2, WPSに対する様々な攻撃手法を統合し、初心者でも比較的容易に脆弱性診断を開始できます。
しかし、その強力さゆえに、悪用されるリスクも常に伴います。Wifiteを使用する際は、常に法律と倫理を遵守し、許可されたネットワークに対してのみ使用することを絶対に忘れないでください。
自身のネットワークセキュリティを強化するためにWifiteのようなツールについて学ぶことは有益ですが、その知識を責任ある方法で使用することが最も重要です。安全なWi-Fi環境を維持するためには、最新のセキュリティ規格 (WPA3) を使用し、強力なパスワードを設定し、不要な機能 (WPS) を無効にすることが基本となります。🛡️
参考情報
- Wifite 公式ドキュメント (Kali Linux Tools): https://www.kali.org/tools/wifite/
- Wifite2 GitHubリポジトリ: https://github.com/derv82/wifite2