この記事では、Metasploitの基礎とコマンドラインインターフェースで使用するMetasploitコマンドについて説明します。 最初はMSFコンソールのコマンドラインや利用可能なコマンドの数が多く、理解したり使用したりするのが難しく感じるかもしれませんが、それに怯える必要はありません。 一度、コンセプトと明確な構造を理解すれば、とても簡単なことなのです。 Metasploitフレームワークは、コアとベース、多くのエクスプロイト、ペイロード、モジュール(Rubyクラス)、プラグイン、スクリプト、複数のユーザーインターフェイスから構成されています。 Metasploitフレームワークには、補助モジュールと呼ばれる優れた情報収集ツールも含まれています。 補助モジュールは、ポートスキャン、サービス識別、パスワードスニッフィング、Windowsパッチ列挙などに使用することができます。 Metasploitは上級者向けに高度なカスタマイズが可能で、独自のエクスプロイト、モジュール、プラグイン、スクリプトを記述することによって、ユーザーのニーズに合わせてカスタマイズすることができます。

msfconsole は最も安定したインターフェイスとして知られており、Hacking Tutorials の Metasploit チュートリアルを通して使用されるユーザーインターフェイスです。 安定性とは別に、msfconsole のもう一つの利点は、ping コマンドやタブ自動補完のような外部コマンドを実行するオプションがあることです。 また、Metasploit には Armitage と呼ばれるグラフィカル・ユーザー・インターフェースが用意されています。 Armitage について、また msfconsole の代わりに使用する方法については、後のチュートリアルで説明する予定です。 この Metasploit コマンドのチュートリアルを続け、必要に応じて Metasploit Framework を更新し、その後 msfconsole に切り替えて、どのようなコマンドが利用できるかを見てみましょう。

Basic Msfconsole commands

あなたが Kali Linux 2016 rolling edition であると仮定して、ドックの Metasploit アイコンをクリックすると Metasploit framework と msfconsole が起動できます。 これは、PostgreSQL サービスと Metasploit サービスを自動的に開始します。

msfupdate による Metasploit の更新

まず、ターミナル セッションで次のコマンドを使用して Metasploit を更新します (msfconsole ではありません):

msfupdate

このコマンドにより Metasploit フレームワークを最新版に更新することができます。 アップデートによると、毎週更新されるようです。 注意してください。 msfupdateを実行すると、Metasploitのインストールが壊れるかもしれません。 このチュートリアルのためにこのコマンドを実行した後、次のようなエラーが発生しました:

This error had something to do with PostgreSQL and to fix this problem first try to run the following commands:

apt-get update

apt-get upgrade

apt-get dist-upgrade

これで我々の側の問題は解決しました、おそらく古いバージョンのパッケージと関係があるのでしょう。 アップデートを実行した後に Metasploit のインストールが壊れてしまい、それを修正するために何か助けが必要ですか? 以下のコメント機能を使用してください。 msfconsoleの続きを見てみましょう。

Metasploit msfconsole

Metasploit が起動して msfconsole が利用できるようになったら、「help」と入力して Metasploit コアおよびバックエンド コマンドの概要と説明を表示させることができます。

Metasploit commands

このチュートリアルですべてのMetasploitコマンドを説明するのは時間の無駄で、範囲外でしょう。 このチュートリアルでは、できるだけ早くMetasploitを使えるようになってもらいたいので、基本的なコマンドの知識があれば十分です。 高度なオプションについては、この先、もっとたくさん学ぶことになるでしょう。 また、ほとんどのコマンドの説明には、そのコマンドが具体的に何をするのか、どのように使うのかが明確に書かれているはずです。 今のところ、このチュートリアルで最も使用される基本的な Metasploit コマンドを見ていきます。

  • Basic commands: search, use, back, help, info and exit.
  • Exploit commands: set で変数の設定、show で exploit options, targets, payloads, encoders, nops および advanced and evasion options を表示します。
  • Exploit 実行コマンド: run および exploit は、ターゲットに対してエクスプロイトを実行します。

Metasploit に付属する総合 Metasploit ドキュメントもあり、何かを明らかにするのに使用することが可能です。 Metasploit のコマンドを見てみましょう。

Metasploit commands

楽しい部分から始めて、Metasploitable 2 のように脆弱なマシンでエクスプロイトを使用する方法を学ぶために、素早く Metasploit 基本コマンドを確認します。 基本コマンドは、help、back、exit、infoからなります。

use、back、exitコマンド

Metasploitのuseコマンドは、特定のモジュールを有効にし、msfconsoleのコンテキストをその特定のモジュールに変更するために使用されます。 exploit 名は、次のようにコマンド ライン上に赤字で表示されます。

この例では、コマンド ラインのコンテキストを realvnc_client という exploit に変更しました。 ここから、このエクスプロイトに関する情報を取得し、必要なエクスプロイト パラメータを設定し、ターゲットに対して実行できます。

エクスプロイト コンテキストを終了して msfconsole に戻る場合は、back コマンドを使用する必要があります。 back コマンドを使用すると、一般的なコンテキストで msfconsole に戻ります。 ここから、別の Metasploit モジュールに切り替えるために、再び use コマンドを発行できます。

exit コマンドは msfconsole を閉じ、Kali Linux ターミナルに戻ります。

Help コマンド

このチュートリアルで先に見たように、msfconsole で入力すると help コマンドは説明とともに可能なコマンドのリストを返します。 アクティブなエクスプロイトが選択されている場合、help コマンドを使用して、エクスプロイト コマンドのリストを取得できます。 次のスクリーンショットでは、ie_execcommand_uaf という名前のエクスプロイトで info コマンドを使用しています:

検索コマンド

この記事の執筆時点で Metasploit には 1,500 以上の異なるエクスプロイトがあり、新しいものが常に追加され続けています。 これだけの数のエクスプロイトがあると、検索機能とその使い方を知ることが非常に重要になります。 検索機能を使う最も簡単な方法は、searchコマンドに続けて検索語を入力することです。例えば、flash playerに関連するエクスプロイトを検索するにはflashと入力します。 検索コマンドを使用すると、Metasploit はモジュール名と説明文の中から指定された検索語を次のように検索します:

予想通り、しばしば脆弱な Flash プレイヤー ソフトウェアに関するエクスプロイトが多数存在します。 このリストには、昨年の Hacking Team のデータ侵害で発見された CVE-2015-5122 Adobe Flash opaqueBackground Use After Free ゼロデイも含まれています。

キーワードによるエクスプロイトの検索

特定の作成者やOSVDB ID、プラットフォームを検索するためにキーワード付きの検索コマンドを使用することも可能です。 help search’ コマンドは msfconsole で利用可能なキーワードを次のように表示します:

キーワードによる検索コマンドの使用方法は非常に単純で、ヘルプ テキストの下に表示されます。 次のコマンドは、2016年からのCVE IDを持つモジュールを検索するために使用されます:

msf > search cve:2016

これは、ごく最近のFortinetファイアウォールSSHバックドア用の補助モジュールスキャナを含む2016年のCVE IDのすべての悪用を私たちに返します。

エクスプロイト用のMetasploitコマンド

前章では、msfconsoleでエクスプロイトを有効にし、useコマンドでコマンドラインのコンテキストをエクスプロイトに変更するMetasploitコマンドを学習してきました。 今度は、exploitのパラメータを表示する方法と、setコマンドでパラメータを変更する方法について見ていきたいと思います。 また、ペイロード、ターゲット、アドバンスド、回避オプションの表示方法についても見ていきます。 help showコマンドは、showコマンドで使用可能なパラメータを表示します:

Show options

コマンドラインは、exploitコンテキストにあるときに使用すると、 exploitで使用可能なパラメータを表示することができます。 adobe_flash_shader_drawing_fill exploit を使用して、次のコマンドでオプションを見てみましょう。

msf > show options

Flash exploit には合計 6 つのオプションがありますが、そのうち必要なのは 2 つだけです。

  • Retries
  • SRVHOST (Required)
  • SRVPORT (Required)
  • SSL
  • SSLCert
  • URLPath

オプション表示コマンドはモジュール オプションより下に現在選択中のターゲットが返されることに注意してください。

デフォルト値を変更するには、オプション名と新しい値の後にsetコマンドを使用します:

Set SRVHOST 192.168.0.100 は、SRVHOST 値を 192.168.0.100 に変更します。168.0.100

Set SRVPORT 80でポートを8080から80

もう一度show optionsコマンドを使用すると、SRVHOSTとSRVPORTの値が変更されていることを確認することができます。 ブール値を変更するには、オプション名と true または false を指定した set コマンドを使用します。 Flash Player エクスプロイトの例では、非常に多くの互換性のあるペイロードが返されます:

An overview of compatible exploits

特定のペイロードを使用するには、set コマンドとペイロード名を続けて使用する必要があります。

Set payload linux/x86/exec

Show targets

show targets コマンドは、選択したエクスプロイトに対して脆弱な OS の一覧を返します。 このコマンドを実行すると、adobe_flash_shader_drawing_fill エクスプロイトに対して次のような出力が得られます:

A overview of available targets for the selected exploit.

This exploit targets both Windows and Linux operating systems. このエクスプロイトとターゲットに関する追加情報を取得するには、infoコマンドを使用できることに注意してください。

ターゲットを設定するには、set コマンドとターゲット ID を使用します。

set target 1

ターゲットを設定することにより、ターゲットと互換性のあるペイロードのみが表示されるので、ペイロードのリストが大幅に削減されます。

高度な設定を変更するには、set コマンドに続けて advanced パラメータと新しい値を使用します:

Set displayablepayloadhandler true

Show encoders

show encoders コマンドは対応するエンコーダを返します。 エンコーダは、ペイロードの特定のバイトを探す単純なIDS/IPSシグネチャを回避するために使用されます。

エンコーダを使用するには、setコマンドの後にエンコーダの名前を続けます。 NOPはNo Operationの略で、一般的なNOPスレッドの単純なIDS/IPSシグネチャをバイパスするために、NOPスレッドのパターンを変更するために使用されます。 NOPジェネレータは、名前にCPUアーキテクチャが含まれているものから始まります。 NOP ジェネレーターを使用するには、set コマンドの後に NOP ジェネレーターの名前を使用します。 exploitが起動されると、NOPソリがNOPジェネレータから取得されます。

Show evasion

show回避コマンドは、利用できる回避技術のリストを返します。

Metasploit のエクスプロイト実行コマンド

ペイロード、NOP ジェネレーター、回避オプション、エンコーディングなどの高度な設定など、エクスプロイトに必要なすべてのオプションが設定されると、エクスプロイトを実行する準備ができている状態にあります。 exploitは、runとexploitという2つのコマンドを使って実行することができます。 msfconsole で run または exploit と入力すると、exploit が実行されます。

以上で、Metasploit コマンドのチュートリアルを終了します。 もし、ここで紹介したコマンドや、紹介しなかったコマンドについて質問があれば、この記事の下にあるコメント機能を使って質問してください。 次回のMetasploitチュートリアルでは、Metasploitable 2マシンを列挙していきます。 その後、収集した情報を使って脆弱性の評価を行う予定です。 Metasploitable 2 をまだインストールしていない場合は、Metasploitable 2 インストールチュートリアルを参照してください。