Asial Blog

Recruit! Asialで一緒に働きませんか?

フリーで使えるセキュリティスキャナ・ツールまとめ

カテゴリ :
日常
タグ :
Tech
security
RatProxy
Wapiti
森川です

セキュリティスキャナについて色々と調べたことがあったので、それについての備忘録の意味も含めたまとめ+アルファです。

セキュリティスキャナといっても色々とあって、ネットワークを対象にしたもの、アプリケーションを対象にしたものなど色々とありますが、今回はアプリケーションに関するものが対象です。

さらに、セキュリティをチェックする方法として、コマンドラインで実行するタイプと、プロキシを使用するものの2種類に大別されます。

プロキシ型としては、先日Googleが新しくRatProxyというセキュリティツールを公開しているので、まずはRatProxyをプロキシ型のメインとして簡単に触れてみたいと思います。


RatProxy


RatProxyは意外と簡単に使うことができました。手順は単純で、Linux上でソースコードのダウンロード、makeでプログラムが出来上がるので、あとはratproxyという実行ファイルを実行します。

  1. ./ratproxy -w hoge.log -r -lfscmXC &

これで、インストールしたマシンの8080番ポートをプロキシとして指定して、チェックしたいサイトをブラウジングするだけです。

絶対に自分で管理していないサイトに対して実行しないでください。

こうしてできた、hoge.log を同梱のratproxy-report.shで解析すれば、レポートがHTMLとして出力されます。

  1. ./ratproxy-report.sh hoge.log > hoge.html

レポートのHTMLもスクリーンショットも公開されています。

その他のプロキシ型スキャナ


その他にもプロキシ型のスキャナは色々とあるのですが、RatProxyのドキュメントページに自分が調べたものは大体記述されていました。なので、簡単に触れるにとどめておきます。

1. WebScarab
2. Paros
3. Burp
4. ProxMon
5. Pantera
6. Chorizo!

それぞれのプログラムについて、検索すれば使い方はわりと簡単にわかると思います。また、Proxyとして動作するものなので、複数のプロキシを繋げて使うことも可能です(スキャナにプロキシを指定できる場合に限定されますが)。

といっても、これから使う場合、新し物好きなこの業界であれば、みなさんRatProxyを使うのではないかと思います。これからRatProxyがどのように発展していくのかが楽しみです。


Nikto


NiktoはWebサーバとその上で動く既知のアプリケーションのセキュリティホールをチェックしてくれるものです。

プラグインでの拡張が可能なのが特徴なのと、かなり広く使われていて簡単に使えるので、既存のソフトウェアを使用している場合は、スキャンしてみるとよいでしょう。

使い方は非常に簡単で、nikto のソースコードをperlがインストールされているマシンにダウンロードして、以下のようなコマンドを実行します。

  1. ./nikto.pl -host http://example.com

これで、出力される結果を見て、サーバの設定を変えたり、最新版に変えたりするとよいでしょう。

Wapiti


Wapitiはあまり有名でないかもしれませんが、非常に簡単にWebのセキュリティチェックをすることができるツールです。

WapitiもNiktoと同じようにコマンドラインでテストを行うことができます。なお、NiktoはPerlのプログラムですが、WapitiはPythonです。

Ubuntu・Debianではパッケージがあるので、apt-get install wapitiとすればインストール可能です。CentOSなど、パッケージがない場合でもダウンロードして展開すれば問題ありません。基本的な使い方はサイトに書いてある通りで、以下のようなコマンドになります。

  1. python wapiti.py http://example.com

これで、XSSなどの脆弱性を簡易的にチェックすることができます。なんといっても直感的に、問題がすぐにコマンドラインから調べられるのがよいです。

ログインが必要なサイトでも、クッキーを使用することで対応することができます。ソースコード内に含まれる getcookie.py というファイルを使用します。以下はダウンロードしたソースに含まれている example.txt の内容です。

  1. bash-3.0$ python getcookie.py cookies.txt http://127.0.0.1/vuln/?page=login
  2. Please enter values for the folling form :
  3. url = http://127.0.0.1/vuln/login.php
  4. login (on) : toto
  5. password (on) : toto
  6. 0 :  PHPSESSID=8qte5k7jr6ogkocrlcrk9obmj2 for 127.0.0.1/>

上記のようにログインした時のクッキーをファイルとして保存しておいて、wapiti実行時に指定することで、ログインが必要なサイトでも使用することができます。

最新のRatProxyがプロキシ型のように、最近のWebアプリケーションではJavaScriptやActionScriptからのアクセスが多くなっているので、すべてのURLを網羅するという意味ではプロキシ型の方が優れていますが、コマンドライン型でもかなりの部分をカバーすることができます。

個人的には、担保したいセキュリティレベルに応じて、使用するプログラムを変更していくこと、そして何よりも定期的なチェックが大事だと思います。なので、まずはWapitiで簡易チェックを実行することを習慣づけることが重要です。