Metasploit Framework

仕事で IPS の基本動作確認をすることがありました。ウイルス対策ソフトウェア/機器の動作確認には eicar ウイルスという無害な擬似ウイルスファイルを用いる方法があります。同様に IDS/IPS の動作確認には Tomahawk というテストツールがあり、これを用いると攻撃パターンを再現するという方法でサーバを傷つけることなく IDS/IPS の動作確認をすることができます。


がしかし、Tomahawk を用いるためには再生用の攻撃をキャプチャーしたデータを自分で作らなければなりません。どこかに公開されていないかと Web で探したものの、(多分どこかに存在するのでしょうが)データライブラリはおろか、1つのデータも見つけることができませんでした。


そんな時に見つけたのがこの Metasploit Framework です。何というか、この手のツールってここまで進化しているのですね。


Metasploit Framework は exploit code を用いてその動作をテストをするためのフレームワークです。すごいところは「脆弱性をつくコード (exploit) 」と「脆弱性をついた後に流す実行させたいコード (peyload) 」とが分離されていて、任意の組み合わせで攻撃を仕掛けることができることです。peyload にはわかりやすい例で言えば「コマンドの実行」、「ユーザ作成」等があります。攻撃ツールと言えば私の中ではその脆弱性に特化したCプログラムをゴリゴリ書いて攻撃ツールを作るイメージがあったのですが、Metasploit Framework を用いれば exploit と peyload の組み合わせを選んでパラメータを指定するだけで良くツールとしてかなり洗練されています。


Metasploit Framework には perl で書かれた 2.x と ruby で書かれた 3.x があります。2.x についてはこのブログエントリがとっかかりとして参考になると思います。


私は 2.x を用いただけですが、世の中の主流は 3.x になりつつあるようです。3.x の目玉としてテストの自動化機能 (Automated Exploitation) が実装されています。日本語情報ではこちらを参照すると良いでしょう。


本家の blog 記事を読むと Automated Exploitation には2つの手法があることがわかります。


・ on vulnerbility reference (“-x” オプション)
・ on port (“-p” オプション)


“-p” の方は nmap 等でポートスキャンを行って、脆弱性を持つサービスのデフォルトポートと同じポートが開いているターゲットを見つけて exploit code を流します。デフォルトと違うポートを使っている場合は見つけ出すことができないようです。


“-x” の方は Nessus を使って見つかった脆弱性の CVEBugtraq ID 等の脆弱性識別情報に基づき exploit code を選択して流します。


新しい脆弱性に対しての exploit code は Metasploit Framework で使える module の形で公開されることが多いようで、例えば MILW0RM ではほとんどがそうなっているように見えます。


当然ながらこの手のツールは自分の管理している端末に対してのテスト目的のツールなのですが、便利になったというか何というか...