Kali LinuxをUSBメモリから起動する

前回(http://d.hatena.ne.jp/ozuma/20130527/1369661407)の続き。

ペネトレーションテスト用のKali Linuxを試してみる際、いきなりHDDにインストールするのは敷居が高い。そこで最近のノートPCはUSBメモリから起動できるものが多いため、USBメモリにKali LinuxのISOイメージを書き込んでLiveモードで起動すれば、既存の環境を壊さずに済む。ということでやってみた。

ついでにKali LinuxUSBメモリからブートした後に、aircrack-ngによる無線LANの暗号化キー破りも少しいじってみる。

環境

手元にEeePCが余っていたのでこれで試してみる。

なおUSBメモリは4GBのものでも大丈夫。

ISOイメージの書き込み

http://docs.kali.org/installation/kali-linux-live-usb-install
に丁寧に書いてあるので、これに沿って作業をすれば良い。

USBメモリのフォーマット

まずWindowsを起動し、USBメモリを刺す。余計な問題を起こさないため、単にファイルを消すのではなくFAT32でフォーマットしておく。

Win32 Disk Imagerのダウンロード

ISOイメージをUSBメモリに書き込むためのフリーソフト、Win32 Disk Imagerをダウンロードする。
https://launchpad.net/win32-image-writer

これがまた分かりにくいページなんだけど……ダウンロードするには、SourceForgeへのリンクをたどれば良い。

SourceForgeのページがまた分かりにくいのだが、Downloadボタンをクリックする。周りの広告にもいっぱい「Download」と出しているものがあるので、騙されないように。

次のページで5秒待つと、自動的にダウンロードが始まる。またいっぱいあるDownloadボタンは、すべて広告なので注意。

USBメモリへのISOイメージ書き込み

ダウンロードしたwin32diskimager-v0.7-binary.zipを展開して、Win32DiskImager.exeを実行する。

[Image File]にダウンロードしたKali LinuxのISOを選び、[Write]すれば良い。

BIOSでUSBブートの設定

ここではEee PC 900-Xを用いたので、その例を書く。最近のノートPCならだいたい設定できるはず。

まず起動画面でF2を押し、BIOSメニューの[Boot]→[Boot Device Priority]で[1st Boot Device]を[Removable Dev.]としておく。続いてUSBメモリを刺して起動し、[ESC]を連打するとブートデバイスが選択できるので、USBメモリを選択する。

起動メニューで[Live]を選択すれば、そのままKali Linuxのデスクトップ画面となる。

USBメモリから起動した際のパフォーマンスだが、遅さは全く感じられなかった。このEeePC 900-Xは悪名高いSSDプチフリーズ問題があるので、外付けUSBメモリから起動して内蔵SSDを使わない方がむしろ快適な気もする……。

aircrack-ng

せっかくKali Linuxを起動したので、無線LANのWEPキー(128bit)を破ってみるのを試してみよう。なおここでは、自宅の自分の無線LANアクセスポイントをターゲットにおこなっている。第三者設置のAPを狙うのは電波法および不正アクセス禁止法に触れる行為となるため絶対にやらないで欲しい。

ASUS Eee PC 900-Xの無線LANアダプタは、Atheros AR5007EG Wireless Network Adapterである。これはKali Linux 1.0.3では何もしないでそのままath5kドライバで認識される。

[   24.659018] ath5k: phy0: Atheros AR2425 chip found

これはAircrack-ngスイートでも問題なく使えるので、このままaircrack-ngツールを走らせれば良い。

Monitor Mode

aircrack-ngツールを走らせるためには、まずwlan0がモニターモードになっている必要がある。マネージドモードの場合、以下のエラーが表示されてairodump-ngが起動できない。

root@kali:~# airodump-ng wlan0
ioctl(SIOCSIWMODE) failed: Device or resource busy

ARP linktype is set to 1 (Ethernet) - expected ARPHRD_IEEE80211,
ARPHRD_IEEE80211_FULL or ARPHRD_IEEE80211_PRISM instead.  Make
sure RFMON is enabled: run 'airmon-ng start wlan0 <#>'
Sysfs injection support was not found either.

現在のインタフェースのモードを、iwconfigコマンドで確認する。

root@kali:~# iwconfig wlan0
wlan0     IEEE 802.11bg  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off

[Mode]が[Managed]になっているため、これをmonitorに変更する。ifconfigとiwconfigが入り交じってややこしいけど、いったんインタフェースを落として設定して上げ直せば良い。

root@kali:~# ifconfig wlan0 down
root@kali:~# iwconfig wlan0 mode monitor
root@kali:~# ifconfig wlan0 up
root@kali:~# iwconfig wlan0
wlan0     IEEE 802.11bg  Mode:Monitor  Frequency:2.412 GHz  Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

[Mode]が[Monitor]なことを確認。

airodump-ng

まず目的の無線LANアクセスポイントを取得するため、airodump-ngコマンドを用いる。

(電波法59条に配慮し一部モザイク)

ここで余談になるが、電波法について触れておく。航空無線などを趣味で傍受しているそちら系の方々にはよく知られていることだが、基本的に無線通信は「傍受するのは構わないけど、その内容を利用したり他人に漏らしてはいけない」というルールになっている。これが電波法59条だ。

第59条 何人も法律に別段の定めがある場合を除くほか、特定の相手方に対して行われる無線通信(電気通信事業法第4条第1項又は第164条第2項の通信であるものを除く。第109条並びに第109条の2第2項及び第3項において同じ。)を傍受してその存在若しくは内容を漏らし、又はこれを窃用してはならない。

航空無線の例だと、例えば羽田空港に行って、受信機で離着陸の連絡をする無線を勝手に聞くことは全く問題ない。しかし、その内容を聞いて「xxx便、xx分遅れだそうだよ」と他人に言ったり、Webなどに書き込むことは違法となる。航空無線を録音してWebにアップロードなどもしてはいけない。

また、無線LANのパスワードをcrackして他人の無線LANにただ乗りすることは、電波法109条の暗号通信の項に触れる。

第百九条の二  暗号通信を傍受した者又は暗号通信を媒介する者であつて当該暗号通信を受信したものが、当該暗号通信の秘密を漏らし、又は窃用する目的で、その内容を復元したときは、一年以下の懲役又は五十万円以下の罰金に処する

WEPキーを破ってただ乗りすることは、罰則付きの違法行為である。また同時に、他人の識別符号を入力するためおそらく不正アクセス禁止法にも触れると思う(たぶん)。

さらに余談になるが、よく無線LANの解説で、「目的のアクセスポイントを選びます」と並んだESSIDのスクリーンショットがあるが……あれも「その存在若しくは内容を漏らし」になるから電波法59条に触れるんじゃないか? と私は思っている。だいじょうぶなんだろうか。

aircrack-ng

余談が過ぎたが、airodump-ngでアクセスポイントが確認できたら、airodump-ngで該当のAPのチャンネルをダンプしながら、別のターミナルでaireplay-ng/packetforge-ngを用いてパケットインジェクションをおこなう(悪用して欲しくないので、ここでは詳しいやり方は書かないことにする)。ダンプしたパケットを、aircrack-ngでクラックする。

だいたい100万パケットあればWEP(128bit)は破れると言われているが、私が試したところ、15分くらいの傍受で約30万パケット、10万IVsでも正確にキーを得ることができた(たまたま?)。ちなみにダンプしたcapファイルサイズは約130MBであった。