Nessus Security Scanner


こいつは凄いぜ!

いやあ. こりゃすごいわ. まじで. 「こーんなアタックがあったんですねえ」 つうのが山盛りで付いて来ます. すげえっす. ちょっと衝撃から立ち直れてません. などと言ってるわしは, 全然甘っちょろいですか. みたいな.

結局, 俺のインストールしたサーバに, このプログラムでセキュリティホールを 見付けることは出来なかったわけだが, それもこれも 比較的新しいサーバ類を使っているおかげであり, 1年くらい更新してないホストなら, いきなり root 権限持って行かれてもおかしくないということが, こいつでスキャンしてみるとよくわかる. スピードは, 若干遅いんですけど.

プログラム紹介

このプログラムはクライアント-サーバモデルで動く 良く判んない設計になっていて, 若干わかりにくいんですが, 実際使う上では, 次のような良い点があります. 一般に, サーバを root 権限で動かしておくので,

というものです. 動作しているところを紹介しよう. これがクライアントのメインウィンドウ で, 接続先や, どういった類のアタックを実行するかを選べるところだ. ここではワザと, 一番毒のない, クレジット画面にしています. ふふふ. デフォルトでものすごい数のアタックがオマケで付いてて, いちいち設定するのはちょっとね. それから, おまちかね. これが, スキャン結果のレポートだ. 赤丸は穴が見付かったとき. 黒丸は, 潜在的な穴で, 改善勧告である. お! 赤丸が smtp に付いてます! うわ!!いとやばし!穴発見であるか?

それじゃあ穴のところのレポートを, もうすこし詳しくみてみよう . 背景が青になってるところに注目だ. うわはー. こんなことできる MTA があるんですか? ザルですね. まじで. このアタックは, メールで /tmp にファイルを置く事ができるというものですな. もし, このメールサーバが root 権限で動いてたらどうなるか?

など, 何でもやり放題です. むちゃくちゃです. というところですが, 実はこの警告は不正確で, この警告通りのアタックを実行 しても, 何も起こらないので, こんなところに掲載しているのです. このマシンの MTA にはセキュリティに病的な注意を払って作られたことで 有名なqmail を使っていて, こういうおかしな接続にも, それが成功したかのようにみせかけ, 全くエラーを返さないので, こういう診断が出たらしい.

その下のは, メールアドレスとしてコマンド名が使えるかどうかのチェックです な. もし, これができるなら, メールでコマンドが発行できるので, とても便利 だね. 便利すぎてお話しになりません. まじで. 昔, こういうことが素どおしでできてしまう MTA があったそうです. あー. 良い子はマネしないように. qmail は /etc/passwd に載っている人にしかメールを配送しないのです. しかも, それをエラーにして返す事すらしないという. さすが! 実は私, qmail がセキュリティ関連で本気を出すところをみたのは, はずかしながらこれが初めてでして(*).

他にもいろいろと試してましたが, ヰンドウズ関係では, こいつでスキャンし ただけでダウンしてしまいそうなのがいろいろありました. nuke とかも, やってたよ.

インストール

インストールですが, こいつのインストールは久しぶりにやや苦労したっす. インストールと使い方のドキュメントは ここらへんにあるんですが, どうもわかりにくくて何回か失敗したのだ. まず, 必要なものを nessus の日本のミラー からダウンロードする. 必要なのは,

  1. nessus-liblaries
  2. libnasl
  3. nessus-core
  4. nessus-plugins
  5. そのたスクリプト

である. これを上の順番でインストールする. それぞれ configure で make なんだけど, nessus-liblaries はオプション --enable-cipher を付けないとダメなような気 がした. 理由は後述.

使ってみよう

使いはじめる時の儀式が, nessus のサイトに載っているドキュメントは 間違っており, その通りにやると動かない(死). この記事の通りにやれば, 多分大丈夫. プラグインまで, 全部のインストールが終ったら, root で

nessusd -D
というコマンドを発行する. これが最初の起動なので, サーバの使う秘密鍵/公開鍵ペアを生成するはずだ. ここはしばらくかかる. CPUメータが振り切ってるのでも見ててくれ. そのあと, 多分, また何か文句を言うかもしれない. 俺の場合は, 「ユーザのデータベースが無い」とか言っていた. これを作成するには,
nessusd -P user_name,password
というコマンドを発行する. ユーザ名は, 自分のユーザ名で良いだろう. これは, ユーザ登録の手続きである. パスワードは, デタラメで適当な文字列でいい. てゆうか, 普段 login するのに使うパスワードをここに書いてはいけない! このパスワードにどういう意味があるかは, 後述. nessus サーバの認証は, /etc/passwd 等とは全然関係無くて, 公開鍵による認証を使っている. 接続後のクライアントとサーバの通信も blowfish (違ったかも) で暗号化されるのである. ところが, nessus-libs を --enable-cipher しとかないと, どうもここんところがダメみたいで, 正常にコンパイル/インストールが終った にもかかわらず, 認証ができなかった.

ユーザ登録は終ったので, 次にユーザ権限でクライアントを実行する. クライアントは, ここで紹介する gtk のバージョンだけでなく, java や windoze 版すらあるようだったが使ってないので判らない. 最初に起動したら, ユーザの秘密鍵/公開鍵ペアを生成し, それから秘密鍵にアクセスするパスフレーズを要求されるはずだ. PGP や ssh のインストールをした人なら, おなじみの作業である. そして, メインパネル が画面に出現する. 「login now!」というボタンを押すと, 最初に一回だけ, -P オプションを使ってユーザ登録したときに 決めたパスワードを要求される. これをパスすると, 接続される. あとの使い方は自明であろう.

こいつは nmap みたいな単純なポートスキャナじゃなくて, マジなアタックを 片っ端から実行するので, 知らないホストをターゲットにするときは, 覚悟しろよ. 変なリクエストが log に山程残るぜ. それから, localhost をスキャンするときは, スキャナの設定で, nmap 以外を全部 off にしないと Linux ではちゃんと動かないらしい. 「libcap のバグのため」と付属文書にあった.

ソースをみたわけではないが, 認証は多分, こんな感じで行われるのかな?

  1. サーバはクライアントから送られる公開鍵を取得. この公開鍵が信用できるものであることを保証するのが, 最初にユーザ追加の手続き時に決めた, テキトーなパスワードである.
  2. サーバはクライアントの公開鍵で, 何か暗号化したデータを送信. クライアントはそれを自分の秘密鍵で復号し, そのデータをサーバの公開 鍵で暗号化して送信.
  3. サーバは自分の秘密鍵で復号し, 元のデータと比較する.
  4. 合っていれば, 認証成立.

サーバの動作はデフォルトでは syslog に書き出される設定になっているので, 最初は /var/log/message なんかを tail -f しながら使うと良いと思う. localhost をスキャンすると, アタックの記録とアタックされた記録が同時進行 で見れて, なかなか楽しいぞ.

ありそうな アカウント/パスワード の組合せを全部試す という ぶるーと なアタックに関しては アカウント/パスワード の組合せの データベースを用意するようになっている. (ファイルは /usr/local/share/nessus/accounts.txt ) そういうのを熱心に作っていると, いつのまにか自分がフォースの暗黒面に 引き込まれていることに気づく. バッファオーバフローを誘うアタックの ソースを見るのも面白い. げに恐ろしきはインターネットの暗黒面であるな.

使い方の注意

プログラムの完成度や, このプログラムの性質から考えて, インストールしたり実行した結果, ロクでもないことになる可能性は 十分にあります. 念のために書きますが, この記事を信用したために あなたが何等かの損害(**)を被ったとしても, nessus の作者はもとより, 私も一切責任を負いません. 熱湯を使う時はやけどに注意するものです(苦笑).

作者を信用しないわけではないが, サーバにバッファオーバーフローなどがあると終るので, nessusd を起動しっぱなしというのはダメでしょう. tcpd でアクセス制限とかやってみましたが, そうすると(つまり, inetd から on-demand で起動にすると) クライアントはうまく接続できなかった. nessusd 本体は, 上のような強力な認証/通信モデルを採用しているが, 実装をチェックするだけの技術と暇と気合いが無いので, できれば ホストベースくらいのアクセス制限は欲しいところだ. 俺が思うに, 使うときだけサーバを起動する方が良いかも.

というのは, サーバの挙動が若干おかしくて, 俺の環境では, ネットワークイン ターフェースがあると認証がうまく行かない. しょうがないので, 認証すると きだけネットワークカードを抜いている. この完成度のものを root権限であらゆるアドレスからの接続を受け付ける状態 のまま放っておくのは, 危ないように思う.

もちろん, ネットワークで公開されているプログラムなので, 侵入者の方々は一応これくらいは持っているでしょう. コレで陥落するような設定では論外というわけだが, 一方, このプログラムで陥落するサイトも確実に存在するはず. 実際, こういうプログラムは, サイトの設定が終ってからチェックするのに ものすごく役に立つ. この記事を見に来るような人には言うまでもない事かもしれないが, 要は, テクノロジであるから, 使う奴次第なのだ. それに, こういうプログラムが手に入るのも UNIX ならでは, である. 願わくば, あなたが先に自分のセキュリティホールを見付けますように. May the Source Be With You.


(*) これらアタックのメールはユーザ(つまり, わしのアカウント) へ転送されて来てました. メッセージは「おまえの MTA は ほげほげ アタック への対策がなされていない」となっていた. 勘違いである. /etc/passwd にリストを持っているが, qmail では root がメールを受け取 る事は無いのだ(その理由を考えよ). その代わりに root 宛のメールを誰に転送するか, という設定があるのだ. 残念だったのう, nessus よ. なんつって.

(**)損害には, たとえば次のようなものが考えられる.
  1. 自分のネットワークをスキャンしてると, アタックが効いてしまってサイトが落ち, 大切なデータがぶっとんでしまった. ゐんどうづ あたりでは極めてありがちである.
  2. 標的に選んだところが, たまたまザルで, 侵入できてしまった. 調子に乗って踏台にして遊んでたら, オマワリさんに見付かった.
  3. nessusd サーバを終了するのを忘れてたら, そこから侵入された.
  4. サーバが暴走して, 自分のシステムがぶっとんだ.
  5. 誰かが私を陥れようとしていると思うことがある. マル! なんちて.
最初の例は, これを機会に心を入れ換えて Linux を使うことにする, という 更生への道が残されている(爆笑)が, うっかりすると, このように徹底的に悲惨な事になるであろう. あなたは, 今, こうして十分な警告を受けました. ずぎゃ.