コンテンツにスキップ

Metasploit 運用ノート

HTB などの検証環境で Metasploit を使うためのメモです。接続準備はリソーススクリプト (.rc) で自動化し、対象ごとの値はプロファイルに分けます。資格情報やチケットは Git で管理しません。

コードの参照先は、リポジトリ同梱の packages/metasploit-framework です。参照している上流リポジトリのコミットは次のとおりです。

このコミットより後の変更は参照版に含まれません。コマンドや API を使う際は、同梱ツリーの更新履歴も確認してください。

これらのコマンドには、認証情報の取得、リレー、リモート実行、永続化など、対象システムへ大きな影響を与える機能があります。検証環境または明示的な許可を得た環境だけで使用してください。

#用途ページ
0ワークスペース、msfdb、db_nmap、setg、作業ディレクトリ基本操作と DB
1.rc の置き方と再利用リソーススクリプト
2SSH / WinRM ログインと Meterpreter 昇格SSH / WinRM ログイン
3リバースシェルの待ち受けと Meterpreter への昇格ハンドラと待ち受け
4Meterpreter からシェル / PowerShell、portfwdMeterpreter 操作
5vim / tmux 用のフル TTY(Meterpreter 外)Fully Interactive TTY
—オプション誤検知、昇格失敗、到達性、PTY 失敗トラブルシューティング
用途ページ
入口・判断表モジュール作成
共通手順(1 ステップずつ)共通手順
ExploitExploit
AuxiliaryAuxiliary
PostPost
Mixin と APIMixin と API
ヘルパー関数ヘルパー関数
send_request_cgi の使い方send_request_cgi
  • rc/: Git 管理するテンプレート。秘密情報を入れない。
  • profiles/: 対象ごとの RHOSTS、LHOST など。Git 管理しない。
  • logs/: spool の出力先。
  • loot/: 手動で拾ったファイルや Metasploit loot から移した重要ファイルの保管先。
  • .rc の中身は読みやすい複数行で書き、実行時に貼る例は msfconsole 内で run verbose=true option=value のように 1 行で実行する。
~/lab/
├── msf/
│ ├── rc/
│ ├── profiles/
│ ├── logs/
│ └── loot/
└── notes/

~/.msf4 には Metasploit 本体の DB、設定、loot が混在します。自作スクリプトや対象ごとの記録は ~/lab にまとめると、SSH ログイン後に探しやすく、ホスト OS へ rsync する対象も一つにまとまります。

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

起動後はモジュールごとに show options を確認します。Metasploit のバージョンによって、CreateSession、DOMAIN、RPORT、ペイロードのオプションなどの名前や既定値が変わることがあります。

  • SSH / WinRM の認証情報は .rc に保存しない。
  • Meterpreter では、ハンドラによる待ち受けと既存セッションからの昇格を分ける。
  • 列挙や特権昇格を一度に自動化しすぎない。難しい対象では重要な出力が埋もれやすい。
  • バインドシェルは対象側が待ち受け、Kali 側から接続しに行くペイロードとして扱う。
  • Kerberos チケット操作は klist で観察してから、必要な専用手順に分ける。無理に WinRM / SSH のログインスクリプトと統合しない。