Webアプリケーション用 フリーの脆弱性診断ツールまとめ
脆弱性診断は色々な分類がありますが、今回はWebアプリケーション用でフリーの脆弱性ツールをまとめてみました。
尚、本記事内にあるツールはサイトを攻撃するツールとしても利用出来てしまうため、利用にあたっては許可を得ていないサイトへの接続を行わないように注意して下さい。
Javaベースの脆弱性スキャナ OWASP ZAP
Javaベースで開発されたオープンソースのWebアプリケーション脆弱性検査ツールです。利用は無料です。

プロキシの自動スキャン、動的・静的スキャン、スパイダーなど多くの診断が可能です。 チュートリアルビデオもまとまっていて、その内容も初心者からセキュリティ専門家までカバーしています。
最初に導入する人が迷わないような仕組みと、UIにかなり力を入れているようで、ビデオ説明からもその部分がうかがえます。Ver2.4からメニューや操作部分などの日本語化も進んでいます。 動作環境もWindows/Mac/Linuxがサポートされていますが、JDK環境が必要になります。Dockerでのインストールもサポートしているようです。
Nessusから派生した脆弱性スキャナ OpenVAS
かつてULinuxベースで開発されていたセキュリティスキャナ「Nessus」から派生したツールです。脆弱性データベースも日々更新されているようで、安心感が持てます。
Greebone Security AssistantというWebベースのGUIがあるので、利用はすぐできます。

参考までにセットアップまでの情報を載せておきます。
Step 1: Atomicorp のリポジトリを設定します。
$ wget -q -O - http://www.atomicorp.com/installers/atomic |sh
Step 2: OpenVASのクイックインストールコマンド
$ yum upgrade
$ yum install openvas
$ openvas-setup
Step 3: OpenVAS マネージャを起動します
service openvas-manager start
ブラウザで次のURLを開きます。
https://localhost:9392/
Perl製辞書ベースの脆弱性ツール nikto
Niktoは辞書ベースで脆弱性診断を行うツールとなっています。 辞書DBは、あまり頻繁に更新されないようですが、それでも一通りチェックするには十分だとおもいます。
Perlベースですので、Linux、Mac、Windowsでの利用が可能です。コマンドラインツールですが、利用方法も簡単で、出力結果もテキストベース、CSV, HTML, XMLなど実用十分です。 必要であれば、HTMLのカスタマイズも可能です。
以下は、参考までにローカル環境でテストしてみた結果です。
$ perl nikto.pl -h http://localhost
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: xxx.xxx.xxx.xxx
+ Target Hostname: localhost
+ Target Port: 80
+ Start Time: 2015-07-29 18:12:37 (GMT9)
---------------------------------------------------------------------------
+ Server: Apache/2.4.6 (CentOS) PHP/5.6.10
+ Retrieved x-powered-by header: PHP/5.6.10
:::
::: 脆弱性対象があれば項目が表示されます・・・
:::
+ 9159 requests: 0 error(s) and 36 item(s) reported on remote host
+ End Time: 2015-07-29 18:25:26 (GMT9) (769 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Googleが開発した脆弱性ツール skipfish
skipfishは、辞書ベースのWebアプリケーションの脆弱性ツールです。 Linux, FreeBSD, MacOS X, and Windows (Cygwin)環境をサポートしています。
プロジェクトページの説明だと少々不親切ですので、簡単にCentOS環境でのセットアップから起動までを紹介しておきます。
1. 事前準備
libidn と libpcre3が必要とのことですので、予めインストールしておきましょう。
$ yum install openssl-devel
$ yum install pcre-devel
$ yum install libidn-devel
skipfishのビルド
次にプロジェクトページからskipfishをダウンロードして解凍し、makeで実行ファイルを作成します。
$ tar xvzf skipfish-2.10b.tgz
$ cd skipfish-2.10b
$ make
3. コマンド実行
次のコマンドは、-S オプション
で辞書にcomplete.wl
を利用し、-W- オプション
で新しく辞書ファイルを作成しない場合です。
$ ./skipfish -S dictionaries/complete.wl -W- -o <出力ディレクトリ> <チェックするURL>
実行すると出力ディレクトリにHTMLで結果が生成されます。以下は実行結果のサンプルHTMLです。

辞書ファイルも最初に幾つか用意されていますので、すぐに試す事が可能です。こちらも非常に簡単に脆弱性の確認ができますし、CLIベースですのでプロジェクトのCIに組み込んでも良さそうです。
ウェブサーバのアクセスログから攻撃を検出 iLogScanner
IPA(独立行政法人情報処理推進機構)から提供されているツールで、Webのアクセスログから攻撃を検知するツールです。オンライン版はJavaアプレット、オフライン版はJavaSDKが必要です。サポート対象はWindowsのみとなっておりますが、MacOSX 10.10.4 でも動作確認ができました。
以下は、オフライン版の画面です。

実行すると検知結果が表示されます。

アクセスログの痕跡を元に攻撃を検知するアプローチで、運用時の未知のアクセスにも、いち早く攻撃を確認する指標になると思います。運用後に大変有効なツールになるのではないでしょうか。
脆弱性体験学習ツール AppGoat
最後はセキュリティの学習ツールの紹介です。IPA(独立行政法人情報処理推進機構)から提供されている、学習体験用のWebアプリです。Windowsアプリとなっていて、実行するとローカルサーバが立ち上がります。
基本的な脆弱性体験やその対策が学べるのはもちろんですが、上記でご紹介した脆弱性ツールの確認としても使えると思います。
最後に
開発するWebサイトは、悪意のあるアタッカーからの攻撃で常に危険にさらされています。その攻撃手法も複雑化していますが、脆弱性ツールもそれに合わせて進歩していますので定期的な実行を行っておくと安全性を保てるでしょう。
日頃から脆弱性に対して注意払うことが、Webアプリケーションを少しでも堅牢にすることに繋がります。ぜひ記事中で取り上げたツールを使い、Webサーバのセキュリティ診断を行ってみてください。
コメントは受け付けていません。