Kali LinuxにNessusをインストール

このblogでも何度か取り上げた、Kali Linux

このKali Linuxペネトレーションテストに用いられるLinuxディストリビューションだが、標準パッケージとしてNessusは提供されていない。というわけで、ここでKali LinuxでNessusを使えるようにするためのメモを書いておく。

環境

なおVirtualBoxにKali Linuxをインストールする際の注意事項は、ももいろテクノロジーさんのVirtualBoxにKali Linux 1.0.6をインストールするを参考にしましょう。

Nessusとは何か

箇条書きでまとめる。

  • 脆弱性スキャナとして広く使われているソフトウェア
    • セキュリティ業界では有名で、よく知られている
    • 対象のIPアドレスを指定するとポートスキャン等を実行し、その脆弱性をレポートしてくれる
  • 有償版もあるけど、個人が私的に利用するだけならば無償で利用できる(ただしメールアドレスを登録して発行されるアクティベーションコードは必要)
    • 無償版ではスキャンできるIPアドレスが16個までと制限されているが、それ以外の脆弱性検知・レポート機能は有償版と同じ
  • WebブラウザからGUIで操作できる
    • CUIもあるのでコマンド実行も可能

Nessusのダウンロード

Nessusのダウンロードは、開発元のTenable Network Security社のWebページからおこなう。ダウンロードするのは、個人用途ならば無償で使えるNessus Home。

このNessusのTOPページから、右上の[Download]リンクを辿っていく。なおページ構成は結構コロコロ変わるので、違う画面になっていたら各自なんとかする。

Kali LinuxDebianベースなので、Debianのパッケージ形式.debのファイルを利用する。ここでは、[Nessus-5.2.6-debian6_amd64.deb]をダウンロードした。

ライセンスを取得する

Nessusは個人利用ならば無償で使えるが、アクティベーションコード(無料)を取得しないといけない。NessusのWebページTOPから、[Plugins]→[Obtain an Activaion Code]→[Using Nessus at Home?]を選択する。

ここに書かれているように、Homeライセンスは家庭内で使う場合のみとされている。


メールアドレスなどを入力すると、そのメール宛てにACコードが届く。なおNessusの開発元Tenable Network Securityは、このアクティベーションコード管理をなかなか厳密にやっているようで、色々と苦労させられる……。ちなみに商用ライセンスを買う場合、東陽テクニカがTenableの日本代理店となっている(東陽テクニカ、脆弱性スキャナ「Nessus」の国内販売を開始)。

入手したアクティベーションコードは、後でインストールの時に使うのでどこかにメモしておく。

Nessusのインストールと起動

debパッケージファイルなので、dpkgコマンドで入れるだけ。とても簡単。

root@kali:~# dpkg -i Nessus-5.2.6-debian6_amd64.deb
Selecting previously unselected package nessus.
(Reading database ... 333970 files and directories currently installed.)
Unpacking nessus (from Nessus-5.2.6-debian6_amd64.deb) ...
Setting up nessus (5.2.6) ...
nessusd (Nessus) 5.2.6 [build N25116] for Linux
Copyright (C) 1998 - 2014 Tenable Network Security, Inc

Processing the Nessus plugins...
[##################################################]

All plugins loaded

- You can start nessusd by typing /etc/init.d/nessusd start
- Then go to https://kali:8834/ to configure your scanner

root@kali:~#


インストールできたら、serviceコマンドでnessusdを起動する。

root@kali:~# service nessusd start
$Starting Nessus : .

起動できたら、nessusdデーモンがいるかどうか、プロセス確認する。psコマンドで良い。

root@kali:~# ps auxww|grep nessus
root      4277  0.0  0.0   6236   304 ?        S    12:47   0:00 /opt/nessus/sbin/nessus-service -D -q
root      4278  1.1  0.9  84652 14116 pts/1    Sl   12:47   0:00 nessusd -q
root      4311  0.0  0.0   7772   852 pts/1    S+   12:47   0:00 grep nessus

あるいは、8834/tcpをLISTENしているかのチェックをしても良いだろう。

root@kali:~# ss -an
State       Recv-Q Send-Q    Local Address:Port      Peer Address:Port
LISTEN      0      128                  :::22                  :::*
LISTEN      0      128                   *:22                   *:*
LISTEN      0      128                  :::8834                :::*
LISTEN      0      128                   *:8834                 *:*

Webブラウザで初期設定をおこなう

Nessusをインストールして起動したら、初期設定をおこなう。これにはWebブラウザで、インストールしたKali Linuxのポート8834にhttpsでアクセスすれば良い。例えば以下のようなURLになるだろう。なお、httpではなくhttpsであることに注意する。

https://192.168.56.101:8834/

Kali Linux上で直接操作するなら、IceweaselというWebブラウザがデフォルトで入っているので、これを利用すると良い。

なお、この際には証明書エラーが表示されると思う。

Nessusの証明書は発行元が「Nessus Certification Authority」になっており、普通のWebブラウザだと当然警告が出る。そのため無視して接続する。

Firefoxならば、「危険性を理解した上で接続するには」から「セキュリティ例外を承認」する。

"Welcome to Nessus 5"という初期設定画面が表示される。

[Get Started]をクリックする。


まずはじめに、Nessusの管理者ユーザを登録する必要がある。ログインIDとパスワードを(自由に)設定する。


続いて、[Plugin Feed Registration]の画面が表示されるので、先ほど入手したアクティベーションコードを入力する。

アクティベーションコードが正しく登録完了されれば、続いてプラグインのアップデートが始まる。

アップデートが完了すると、Initializeがはじまる。

このInitialize、とっても時間がかかるので辛抱強く待つ。最低でも数十分はかかると思った方が良い。なお気になる人は、以下のファイルに動作ログが出ているので、何かエラーを吐いていないか確認すると良い。

/opt/nessus/var/nessus/logs/nessusd.messages

Initialize後、ログイン画面が表示されればOK。

なおこのURL部分をよく見ると"html5.html"となっているように、Nessus 5はWebページにHTML5を使っている。そのためバージョンの古いInternetExplorerだと上手く動かないかもしれない。操作にはFirefoxChromeを使うのが無難である。

Nessus 5でVer.4と同様のFlashで操作する

Nessus 5では、新しいHTML5のインタフェースだけではなく、Ver.4時代の旧来のFlashを使った操作画面も提供している。これには、ログイン画面にアクセスした際に自動的にリダイレクトされる[html5.html]ではなく、Webブラウザのアドレスバーから手で[flash.html]を指定すれば良い。

こうすると、例の見慣れた目のアイコン画面が出てくる。


細かいところに違いはあるけど、flash版ならばNessus 4とだいたい同じ操作のようである。

CUIでの初期設定

ここまでWebブラウザでの操作を書いたが、CUIでの操作方法も書いておく。

ユーザ追加(CUI)

Nessusの管理者ユーザなどを作成するには、nessus-adduserコマンドを利用する。admin権限を与えるかどうかを途中で聞かれるので、y/nを入力すれば良い。

root@kali:/# /opt/nessus/sbin/nessus-adduser
Login : test
Login password :
Login password (again) :
Do you want this user to be a Nessus 'admin' user ? (can upload plugins, etc...) (y/n) [n]: y
User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that test has the right to test. For instance, you may want
him to be able to scan his own host only.

Please see the nessus-adduser manual for the rules syntax

Enter the rules for this user, and enter a BLANK LINE once you are done :
(the user can have an empty rules set)



Login             : test
Password         : ***********
This user will have 'admin' privileges within the Nessus server
Rules             :
Is that ok ? (y/n) [y] y
User added
アクティベーションコードの登録

アクティベーションコードの登録をCUIでおこなうには、nessus-fetchコマンドを利用する。--registerオプションでコードを指定する。

# /opt/nessus/bin/nessus-fetch --register <serial>
プラグインのアップデートとバージョン確認

Web操作ではアクティベーション後にプラグインのアップデートが自動でおこなわれたが、これを手動でおこなう方法も書いておく。

Nessusのプラグインを手でアップデートするには、以下のnessus-update-pluginsコマンドを実行すれば良い。

root@kali:/# /opt/nessus/sbin/nessus-update-plugins
Fetching the newest updates from nessus.org...
Done. The Nessus server will start processing these plugins within a minute

アップデート後のプラグインバージョンは、/opt/nessus/var/nessus/plugin_feed_info.incというファイルに書かれている。PLUGIN_SETがその値で、YYYYMMDDhhmmとなっている。

root@kali:/# cat /opt/nessus/var/nessus/plugin_feed_info.inc
PLUGIN_SET = "201404190415";
PLUGIN_FEED = "HomeFeed (Non-commercial use only)";

なおNessusプラグインのアップデート直後、DBのDefragmentをおこなうために大量のディスクI/Oが発生することがある。特にインストール直後の一番最初のプラグインアップデートは重い。

そのため、アップデート直後はしばらくそっとしておいた方が良い。

スキャンしてみる

Nessusの使い方は細かく書いていくと一冊の本ができてしまうので、ここでは簡単にテストスキャンをしてみる例にとどめる。

まずは、さっそく[New Scan]……と言いたいのだが、Nessusでスキャンする際には「どのPolicyを利用するか」を選ぶ必要がある。そのため、スキャンする前にまず[Policies]からポリシーを作らないといけない。


[Policies]から[New Policy]を選ぶと、ポリシーウィザードが立ち上がる。せっかくなので、[Heartbleed Detection]を選んでみよう。途中の設定項目はすべてデフォルトとする。


新しいポリシーが設定されたので、上部メニューの[Scans]から[New Scan]を選ぶ。

スキャン設定で、[Policy]に先ほど作ったポリシーを選択する。[Name]は分かりやすい名前を付ける。[Targets]に、対象のIPアドレスを記入する。この際には、カンマ区切りやハイフンを利用して複数のIPアドレスを指定することもできる。設定できたら、[Launch]でスキャン開始。

スキャンが完了すると、[Status]がCompletedになるのでクリックして中身を見てみる。

スキャン結果が表示される。このIPアドレスのサーバは、見事にHeartbleed脆弱性があるようですね(わざとです)。

それぞれの項目をクリックすると、脆弱性の解説を見ることができる。このスクリーンショットでは切れているけど、下の方にCVE番号なども表示されている。

レポートのファイル出力


レポートは外部ファイルへExportすることもできる。Nessus形式(XML)やPDF形式、HTML形式で出力できる。

この画面、ちょっと分かりにくいんだけど……左が選択できる項目で、右がレポート出力する項目。つまりデフォルトでは、何も出力されない。

このように必要な項目を、マウスで右側へドラッグ&ドロップする。分かりにくいね。


出力項目を選んだら、[Export]を押せばファイルに出力される。これはHTMLで出力した例。

というわけで、スキャンできたのでこの記事はここで終わり。

注意事項

NessusでスキャンするIPアドレスは、自らの管理下にあるマシンのみ指定するよう注意してください。Nessusは脆弱性スキャンの際に、見方によっては「攻撃行為」をおこなうため、他人のマシンを勝手にスキャンすると不正アクセス禁止法などに抵触する恐れがあります。

Nessusの練習をする際は、スキャン直前にブロードバンドルータのWAN側のケーブルを抜いて、ローカルLANにしか繋がらないようにして操作することをおすすめします。