今回は質問を受けたのをきっかけに検証作業を行ったKali Linuxについて取り上げてみたいと思います。まずは、率直な質問、たくさんのディストリビューションがある中で、果たしてDebianベースのKaliの存在意義があるのでしょうか? Kali はいわゆる「ペネトレーションテスト」向けの機能が標準で充実していることをウリにしているディストリビューションです。「ペネトレーションテスト」というのはセキュリティ脆弱性診断テストで、脆弱点を発見したり、攻撃への耐性を診断するものです。テストツールに徹したLinuxディストリビューションとしてユニークな存在となっているわけです。
Webアプリのサイトを管理したり、開発されている方だと、Kaliの専用マシンを横においてサイトの安全性をチェックをするためにお使いの方もいらっしゃるのではないでしょうか。しかしながら、専用マシンとして常時キープするほどのものではないとも言えます。PCにインストールする場合だと、まずはインストールメディアを入手するか、仮想環境用の仮想ディスクをダウンロードすることになります。公式サイトのダウンロードページから 32bit 版/64bit 版の ISO ファイルをダウンロードして DVD メディアに焼いておき、このDVDから起動することが可能です。この場合に問題なのは、編集用にPCを使っているとそのPCが占有されると不便だということです。PCとは別途、CuBox-iでKaliを運用すると一番リーズナブルなのではないでしょうか。むろん、通常はUBUNTUとかメディアプレーヤーとして使っていてもSDを交換するだけ、という超簡単さで。
インストール
以下のサイトからCuBox-i用のイメージがダウンロードできます。
http://www.offensive-security.com/kali-linux-vmware-arm-image-download/
イメージの書き込みは通常と同じでいけます。win32 Disk imagerを使っても大丈夫です。
書き込みの済んだSDをセットしてCuBox-iを起動させます。最初の設定ではid=root, password=toorとなっています。
(kaliの本家サイト https://www.kali.org/downloads/ からダウンロードできるKali Linux ARMEL Imageでは、CuBox-iを起動させる部分がないので、別途U-Bootの書き込みが必要となります。)
せっかくなのでコマンドが簡単に入れられるように GUI のインストールを行いたい、ということであればデスクトップ環境LXDEをインストールします。
# apt-get update # apt-get install xorg dbus-x11 lxde |
起動するには次のコマンドを打ちます。
# startx |
テスト環境としてしか使わないのでれば英語のままでも良さそうですが、デスクトップ機として見栄えと使い勝手を追求するのであれば日本語化することも容易です。ペタピココラムの
「(14) CuBox-i にUbubtu14.04, LXDEをインストールする」
と同じです。参照して続きを行ってください。
また、kernel configurationを代えたビルドイメージが欲しい場合など、ソースからビルドする方法をとるならば、こちらのgithubが使えます。
https://github.com/offensive-security/kali-arm-build-scripts
また、詳しい公式ドキュメンテーションは
http://docs.kali.org/
に用意されているので、必要に応じて参考にするといいでしょう。
さて、Kali Linuxが動くようになったところで、Kaliでできる「テスト」がどんなものかを試してみましょう。ドキュメントを参照すると、以下のようなものがチェックできることになっています。
- サーバーサイドSQL/PHPインジェクション
- GET/POSTメソッドのパラメータにおけるSQL風命令の埋め込み
- サーバーサイドシェルコマンドインジェクション
- サーバーサイドXML/XPathインジェクション
- フォーマット文字列に関する脆弱性
- 整数オーバーフローに関する脆弱性
- PUTメソッドでのLocations受け入れ
画面右上のKali Linuxというメニューを開いてみると、色々なツールがインストールされていることが分かります。素人目には全体的には似たような機能に見えます。どのツールで何が得意なのか、何が含まれていないのか、それらツール間の性能の差などは専門のサイトなどを参照ください。
CuBox-i用のイメージでインストールした場合、プレインストールされるツールの数がPC用のものと比べて格段に少なくなっています。本来Kaliに対応したツールは非常に数多くあります。このページの一覧から、各ツールに対するUSAGE EXAMPLEもここから参照ができます。ただし、アップデートのためなのか、時々アクセスできないことがありますが基本ちゃんと情報アップデートされています。
http://tools.kali.org/tools-listing
実際にツールを使ってみるにあたっては、ご自分が管理しているサービスや、ローカルでお試しください。やってからの感想となりますが、nodeベースでjavascriptで書かれたサイトなど動的なサイトではうまくチェックができないことがあるようです。そのような場合には一旦該当のページを表示させて、そこをトップにしてチェックするとよいようです。
skipfish
skipfishはGoogle製のセキュリティスキャナで、指定したウェブサイトをクロールしながら辞書を使って色々なリクエストを投げて脆弱性をチェックしてくれます。Webサイト構築者にとっては代表的なツールです。
機能の詳細は下記サイトなどが参考になります。
Webアプリケーション向けのセキュリティスキャナ「skipfish」を使う | SourceForge.JP Magazine
http://sourceforge.jp/magazine/13/09/27/200000
PC向けのインストールの解説画面例をみているとずらっとツールがでてきます。Kali Linux -> Web Applications -> と続けてTop 10 Security Toolsが出てくる、と期待して最初にCuBox-iで立ち上げた場合びっくりしました。なんとsqlmapしか入っていませんでした。sqlmapはGitHubで開発された、比較的最近のプロジェクトのようですが、SQLインジェクションの検査自動化ツールです。まだこれを試したことはありませんでした。これしか入ってない? と、ちょっと残念な気がするものの、そこは必要なものだけを入れればいいのでツールを追加します。
インストールは、通常お馴染みの apt-get install <ツール名> のようにしてインストール可能です。
インストールが終わると、Kali Linux -> Web Applications ->と選んだ先にツールが足されています。立ち上げると、ターミナルが開かれオプション設定になります。任意のヘッダをリクエストに付与、同時接続数を制限、任意のクッキーをつける、フォームの自動入力の設定を行などができます。早速使ってみましょう。まず辞書が必要になるので下記のリンクからskipfishごと落として中のdictionariesの中のcomplete.wlを使います。
https://code.google.com/p/skipfish/
テストが終了すると、-oオプションで指定したディレクトリの中にファイルができているのでindex.htmlを開きます。
各項目をクリックすると、該当URLとリクエスト、レスポンスを表示することができます。
クリティカルな脆弱性はこの結果を見て修正していくように利用します。
くれぐれも自分が管理しているサービスやlocalhostで試してください。
結果は レポート -> HTMLレポート生成 を行うとブラウザに表示されます。
Kali Linuxをインストールして脆弱性のテストツールを何個か使ってみました。
Kali Linuxは脆弱性チェック用のツールが最初からたくさん用意されていて、すぐに診断を開始することができるので、サービス公開前にクリティカルなものはこれで発見してセキュアなサービスを素早くリリースするために使いこなしていただけると幸いです。
コメントをお書きください