ubuntuで無線LANをフル活用する便利なツールKismet

(2009年5月19日)
Kismetは無線LANネットワーク(AP)を検出したり、電波強度を調査したり、APに接続しているクライアントを調べて侵入検知などのセキュリティ対策にも役立つ無線LANの便利なツールです。
ubuntu8.10にインストールしてみたので簡単に説明(メモ書き)してみます。
(kismetはlinuxだけなくwindows,Macでも動作します)
今回kismetをインストールした環境は以下のとおりです。
PC : HP Compaq nx6120(ノートPC)
OS : ubuntu8.10
無線LAN : ipw2200(Intel Corporation PRO/Wireless 2200BG)
まず、apt-getでコマンドラインからインストールします。
$ sudo apt-get install kismet
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  linux-headers-2.6.27-7 linux-headers-2.6.27-7-generic
これらを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
  libadns1 libfreebob0 libjack0 liblua5.1-0 libportaudio2 menu wireshark
  wireshark-common
提案パッケージ:
  sox festival gpsd adns-tools jackd
以下のパッケージが新たにインストールされます:
  kismet libadns1 libfreebob0 libjack0 liblua5.1-0 libportaudio2 menu
  wireshark wireshark-common
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 0 個。
12.6MB のアーカイブを取得する必要があります。
この操作後に追加で 46.7MB のディスク容量が消費されます。
続行しますか [Y/n]? y
取得:1 http://jp.archive.ubuntu.com intrepid/main libadns1 1.4-2 [57.9kB]
~
未選択パッケージ libadns1 を選択しています。
(データベースを読み込んでいます ... 現在 141483 個のファイルとディレクトリ
がインストールされています。)
(.../libadns1_1.4-2_i386.deb から) libadns1 を展開しています...
未選択パッケージ liblua5.1-0 を選択しています。
(.../liblua5.1-0_5.1.3-1_i386.deb から) liblua5.1-0 を展開しています...
~
liblua5.1-0 (5.1.3-1) を設定しています ...
wireshark-common (1.0.3-1ubuntu2.2) を設定しています ...
kismet (2008-05-R1-4) を設定しています ...
libfreebob0 (1.0.11-0ubuntu1) を設定しています ...
libjack0 (0.109.2-3ubuntu1) を設定しています ...
libportaudio2 (19+svn20071207-0ubuntu3) を設定しています ...
menu (2.1.40ubuntu1) を設定しています ...
wireshark (1.0.3-1ubuntu2.2) を設定しています ...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place
Processing triggers for menu ...
インストールが完了しました。
これでkismetコマンドが実行できますが、恐らく初期設定だとkismetの起動に失敗すると思います。
(以下は失敗例です)
$ sudo kismet
Launching kismet_server: //usr/bin/kismet_server
Suid priv-dropping disabled.  This may not be secure.
No specific sources given to be enabled, all will be enabled.
Non-RFMon VAPs will be destroyed on multi-vap interfaces (ie, madwifi-ng)
Enabling channel hopping.
Enabling channel splitting.
NOTICE: Disabling channel hopping, no enabled sources are able 
to change channel.
Source 0 (addme): Opening none source interface none...
FATAL: Please configure at least one packet source.  Kismet will not 
function if no packet sources are defined in kismet.conf or on the 
command line.  Please read the README for more information about 
configuring Kismet.
Kismet exiting.
Done.
私の環境の場合はkismetの設定ファイルkismet.conf(/etc/kismet/kismet.conf)のsource行を変更する必要がありました。
・変更前
source=none,none,addme
・変更後
source=ipw2200,eth1,wireless1
ipw2200は無線LANドライバですので各々の環境(無線LAN)で変わってきますので、lshw,lspciコマンドなどで調べて、書く文字列はkismetのドキュメントを参考にしてみてください。
(・lshw,lspciコマンドで自分のlinuxパソコンのマシン情報・デバイス情報を調べる
eth1は無線LANに設定されている名称です(ifconfig,iwconfigなどで調べられてます。)
wireless1は任意の名前です。
さて、これで設定ファイルの編集ができたので、もう一度kismetを起動してみます。
$ sudo kismet
Launching kismet_server: //usr/bin/kismet_server
Suid priv-dropping disabled.  This may not be secure.
No specific sources given to be enabled, all will be enabled.
Non-RFMon VAPs will be destroyed on multi-vap interfaces (ie, madwifi-ng)
Enabling channel hopping.
Enabling channel splitting.
今度は起動に成功しました。
(kismetの起動はエミュレータ画面が変わるので直ぐにわかると思います。)
kismetの簡単な使い方・見方についてです。
kismetが起動すると近くのアクセスポイント一覧を表示してくれますが、この画面だと詳細情報は解りません。
まずは「space」キーを入力、「S(Shift+s)」キーを入力して「Sort Network」ダイアログを表示させます。
そして、「Sort Network」からAPの並び順を選択してます。
例えば、BSSID順に並べ替えたいなら「b」キーを入力します。
すると、対象のAPを選択できる状態(「Network List」画面)になります。
(この状態でもう一度、「S(Shift+s)」キーを入力すれば「Sort Network」タイアログが表示できます)
そして、対象のAPを選択して「リターン」(または「i」)キーを入力するとAPの詳細情報(SSID、BSSID、無線LAN規格、暗号化規格、チャンネル番号、接続しているクライアント数etc)が見れます。
「Network Lixk」画面に戻るには「q」キーを入力します。
また、「Network List」画面で「h」キーを入力するとヘルプ画面が表示されます。
ヘルプ画面を見るとAPの詳細情報以外に「c」キーはAPに接続しているクライアント情報を表示してくれるのでセキュリティ対策として役立ちそうです。
最後にkismetの終了は「Network List」画面で「Q(Shift+q)」キーを入力します。
ここでの説明はこの程度にしておきます。
kismetの使い方の詳細はマニュアルなどを参考にしてみてください。
Webサービス by Yahoo! JAPAN