これは、私の絶え間ない更新と編集のために完全に長くなりすぎて混乱していた前の質問に関連しており、私はそれを再質問するように言われました。だから私はそれを片付けて、もっと直接的な質問をしている。
まず、これは、順方向と逆方向のsshトンネルがどのように機能するかを学習し、特にネットワーク上のどこにいるかを常に完全に制御し、プロセス全体で足跡を隠すために行う必要のある理論的な実験です。私のトレーナーは私にこの仕事を与えてくれましたが、彼は私が彼の助けなしに自分でそれを理解することを信頼しています。
RDP
(リモートデスクトップ)がRHP(ランダムハイポート)ではなく特定のポートに応答するように強制する方法を理解する必要があります。 RDP
"Listens"を変更する方法を尋ねているのではなく、その逆です。
2つのシステム間に実験的なフォワード/リバースSSH
トンネルを設定しようとしています。フォワードトンネルでIPを隠すためのピボットポイントとして3番目のシステムを使用しています。しかし、フォワードSSHトンネルを介してリモーティングしているシステムが、別のリバースSSH
トンネルを介してRHPではなく「指定された」ポートに応答を送信するようにしたい。基本的な考え方は、リッスンまたは受信するポートを制御できるようにしたいということです。また、ランダムなものは必要ありません。
これらは私の3台のマシンです。 Devilsmilk
はピボットポイントであり、クライアントはkgraves
にあり、私はduclaw
にリモーティングしています。
したがって、RDP
セッション用に2つのパイプが必要です。 1つは順方向用、もう1つは逆方向用です。しかし、私はそれをRHPで送り返したくありません。たとえば:44444
など、特定のポートに送信するように指示する方法がわかりません。
誰かがこれを行う方法を知っていますか?
私はこれを特定の方法で行う必要があります。これらは私が使用するポートです持っている。 1337
ではなくポート3389
でDuclaw
をリッスンするようにRDP
をすでに設定しています。 これがこれを行う最も簡単な方法ではないことを私は知っています。
Wiresharkによると、リモートデスクトップ接続がdevilsmilk
から来ているかのように「表示」する必要があります。しかし、duclaw
を経由せずに、kgraves
が応答をdevilsmilk
に直接返送するようにしたい。したがって、kgraves
にRDP
セッションがlocalhost
に送信され、ssh
トンネルを介してdevilsmilk
を介してduclaw
ですが、その接続に応答して受信されているRDP
パケットは、Duclaw
から直接受信されます。現在、応答はdevilsmilk
を介してRHPに返されています。
私のコマンドは次のとおりです。別のコマンドから行ったCYGWIN
接続を除いて、すべてssh
のまったく同じkgraves
mstsc
コンソールから実行されます。 CYGWIN
ターミナルのkgraves
スイッチに改行を追加しました。
CNO\kgraves@KGRAVES ~
$ ssh -vg -L 3333:localhost:6666 misfitred@devilsmilk
OpenSSH_6.1p1, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to devilsmilk [10.0.10.121] port 22.
debug1: Connection established.
debug1: identity file /home/kgraves/.ssh/id_rsa type 1
debug1: identity file /home/kgraves/.ssh/id_rsa-cert type -1
debug1: identity file /home/kgraves/.ssh/id_dsa type -1
debug1: identity file /home/kgraves/.ssh/id_dsa-cert type -1
debug1: identity file /home/kgraves/.ssh/id_ecdsa type -1
debug1: identity file /home/kgraves/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1
key_read: uudecode devilsmilk ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwVZRlnAgPRPxTx cbTPALg5XPpOnAMhJabQ3Dv/7a95eqe5l7XnKRciYQZ41B61DRgXCzC/M9ObknMR79zG0mkSl+jQTGJ7 klol7nw0+U1dNFknv4fOn+YGAsqECclWEow3OK5xRcla5eBekRGWjrZ7Wbs4F3FeKGQNqU/OuGvdSaQb 3nqgLPGTZfRhNtykQvpNzXw5cjO7XvM0BBv9di4JblLx9Fk3iq2KwdgWmK9uFDPYjU1gkHR8hk+bns1t 16KFcyDKnzhR1CblU6JT/wlBtnFa11no1UJBEHC2UQy8trwkMU6NqUt0X+D/XqW5F6+uWNc/dY97CCky 9HdfWNGQ==
failed
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server Host key: RSA b5:d6:eb:64:50:2f:40:04:32:10:bb:4f:a8:d3:f5:37
key_read: uudecode devilsmilk ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwVZRlnAgPRPxTx cbTPALg5XPpOnAMhJabQ3Dv/7a95eqe5l7XnKRciYQZ41B61DRgXCzC/M9ObknMR79zG0mkSl+jQTGJ7 klol7nw0+U1dNFknv4fOn+YGAsqECclWEow3OK5xRcla5eBekRGWjrZ7Wbs4F3FeKGQNqU/OuGvdSaQb 3nqgLPGTZfRhNtykQvpNzXw5cjO7XvM0BBv9di4JblLx9Fk3iq2KwdgWmK9uFDPYjU1gkHR8hk+bns1t 16KFcyDKnzhR1CblU6JT/wlBtnFa11no1UJBEHC2UQy8trwkMU6NqUt0X+D/XqW5F6+uWNc/dY97CCky 9HdfWNGQ==
failed
The authenticity of Host 'devilsmilk (10.0.10.121)' can't be established.
RSA key fingerprint is b5:d6:eb:64:50:2f:40:04:32:10:bb:4f:a8:d3:f5:37.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'devilsmilk' (RSA) to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interacti ve
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/kgraves/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interacti ve
debug1: Trying private key: /home/kgraves/.ssh/id_dsa
debug1: Trying private key: /home/kgraves/.ssh/id_ecdsa
debug1: Next authentication method: keyboard-interactive
Password:
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to devilsmilk ([10.0.10.121]:22).
debug1: Local connections to *:3333 forwarded to remote address localhost:6666
debug1: Local forwarding listening on :: port 3333.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 0.0.0.0 port 3333.
debug1: channel 1: new [port listener]
debug1: channel 2: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
Last login: Wed Jan 30 16:13:02 2013 from kgraves.cno.local
[misfitred@devilsmilk ~]$ ssh -vg -L 6666:localhost:1337 kgraves@duclaw
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to duclaw [10.0.10.120] port 22.
debug1: Connection established.
debug1: identity file /home/misfitred/.ssh/id_rsa type 1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1
debug1: match: OpenSSH_6.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'duclaw' is known and matches the RSA Host key.
debug1: Found key in /home/misfitred/.ssh/known_hosts:3
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interacti ve
debug1: Next authentication method: publickey
debug1: Offering public key: /home/misfitred/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interacti ve
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interacti ve
debug1: Next authentication method: password
kgraves@duclaw's password:
debug1: Authentication succeeded (password).
debug1: Local connections to *:6666 forwarded to remote address localhost:1337
debug1: Local forwarding listening on 0.0.0.0 port 6666.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on :: port 6666.
debug1: channel 1: new [port listener]
debug1: channel 2: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Last login: Wed Jan 30 15:55:29 2013 from devilsmilk.cno.local
"tty" option detected in CYGWIN environment variable.
CYGWIN=tty is no longer supported. Please remove it from your
CYGWIN environment variable and use a terminal emulator like mintty,
xterm, or rxvt.
kgraves@DUCLAW ~
$ ssh -vg -R 3333:devilsmilk:6666 kgraves@kgraves
OpenSSH_6.1p1, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to kgraves [10.0.10.113] port 22.
debug1: Connection established.
debug1: identity file /home/kgraves/.ssh/id_rsa type 1
debug1: identity file /home/kgraves/.ssh/id_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1
debug1: match: OpenSSH_6.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: ECDSA de:1c:37:d7:84:0b:f8:f9:5e:da:11:49:57:4f:b8:f1
debug1: Host 'kgraves' is known and matches the ECDSA Host key.
debug1: Found key in /home/kgraves/.ssh/known_hosts:3
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interacti ve
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/kgraves/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interacti ve
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interacti ve
debug1: Next authentication method: password
kgraves@kgraves's password:
debug1: Authentication succeeded (password).
Authenticated to kgraves ([10.0.10.113]:22).
debug1: Remote connections from LOCALHOST:3333 forwarded to local address devils milk:6666
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: remote forward failure for: listen 3333, connect devilsmilk:6666
Warning: remote port forwarding failed for listen port 3333
debug1: All remote forwarding requests processed
Last login: Wed Jan 30 16:21:12 2013 from duclaw.cno.local
"tty" option detected in CYGWIN environment variable.
CYGWIN=tty is no longer supported. Please remove it from your
CYGWIN environment variable and use a terminal emulator like mintty,
xterm, or rxvt.
_____________________________________________________________________________
##From separate CYGWIN Terminal##
CNO\kgraves@KGRAVES ~
$ mstsc /v:localhost:3333 /f
CNO\kgraves@KGRAVES ~
$
_____________________________________________________________________________
kgraves@KGRAVES ~
$ debug1: Connection to port 3333 forwarding to localhost port 6666 requested.
debug1: channel 4: new [direct-tcpip]
debug1: Connection to port 6666 forwarding to localhost port 1337 requested.
debug1: channel 4: new [direct-tcpip]
debug1: channel 4: free: direct-tcpip: listening port 3333 for localhost port 66 66, connect from ::1 port 49496, nchannels 5
debug1: channel 4: free: direct-tcpip: listening port 6666 for localhost port 13 37, connect from 127.0.0.1 port 48808, nchannels 5
debug1: Connection to port 3333 forwarding to localhost port 6666 requested.
debug1: channel 4: new [direct-tcpip]
debug1: Connection to port 6666 forwarding to localhost port 1337 requested.
debug1: channel 4: new [direct-tcpip]
$ debug1: channel 3: free: direct-tcpip: listening port 3333 for localhost port 6666, conne ct from ::1 port 49495, nchannels 5
debug1: channel 3: free: direct-tcpip: listening port 6666 for localhost port 1337, connect from 127.0.0.1 port 48807, nchannels 5
$
Localhost:3333へのリモートデスクトップ接続が正常に確立されました。ご覧のとおり、devilsmilk
のduclaw
から来ているように見えます。しかし、kgraves
によると、それはDevilsmilk
から戻ってきています。
これは、wireshark
セッション中にduclawで実行されているRDP
のスナップショットです。
これは、wireshark
セッション中にkgraves
で実行されているRDP
のスナップショットです。
そのため、Duclawが完全に独立したリバーストンネルを介してRDPセッションをKgraves-pcに送り返すようにしたいという私の問題は依然として残っています。それは私が起こる必要があることであり、その方法を理解することはできません。
duclaw
を経由せずに別のトンネルで直接kgraves
に送り返すには、devilsmilk
が必要なだけでなく、送信先のエフェメラルポートを制御する必要もあります。 。ランダムなエフェメラルポートではなく、ポート:44444
に送信してほしい。上記の詳細なデバッグssh
出力でランダムに:48809
を使用しています。
初期の段階で、ユーザーJohn Siuは、TCP通信の性質上、これは不可能であると考えました。kgraves
は、接続が確立されることを期待しているためです。 localhostで確立されたため、localhostから。したがって、duclaw
がセッションをkgraves
に送信する方法が必要ですが、それをlocalhost
多分?
しかし、トレーナーから、127.0.0.1(ローカルホスト)のRFCの性質上、TCP 3ウェイハンドシェイクがOSIモデルのレイヤー4を離れることはなく、何らかの種類があると言われました。 127.0.0.1に接続するときにsyn、syn-ack、ackの要件を排除する「機能」が組み込まれているため、TCPは、localhostに接続するときに同じルールに完全には従いません。レイヤー4でスニッフィングする「wireshark」タイプのプログラムを作成し、接続が確立されるのを見ることができれば、彼が何について話しているかがわかります。
これまでのところ、ユーザーJohnSiuの功績により次の可能な回答が与えられています。
1.)あなたが求めていることを行うために、私が考えることができる唯一の方法は、カスタムrdpプロキシを作成し、kgraves-pcとduclawの両方で実行することです。
2.)また、JohnSiuが話していたrdpプロキシを基本的に模倣する使用できるウイルスがあるかもしれないと言われました。仮想ラボ内では、これらのシステムを悪用するために使用したいマルウェア/ウイルスを使用できます。したがって、何でも可能です。
それ以上の助けをいただければ幸いです。貢献してくれてありがとう!
うまくいけば、これが理にかなっているとは言えませんが...混乱してすみません!
編集#1:この逆トンネルが最初に起こっていると私に信じさせた最初に見たものを再現することができました。 wireshark
トラフィック(上のトラフィックはDuclaw
から、下のトラフィックはkgraves
から)から、ジョンが以下で説明したのはまさに起こっていることであることがわかります。この謎が解けた今でも、RDPをランダムポートではなく特定のポートにコールバックさせる方法を理解する必要があります。
あなたが求めていることをするために、私は次のようにしか考えることができません
カスタマープロキシ1
(Blue) Listen to a local port to wait for client software connection
(Red) Forward incoming packet from C to Custom Proxy 2 public port
(Green) Listen to a public port, forward incoming packet from Custom Proxy 2 to C (via Blue)
カスタマープロキシ2
(Red) Listen to public port for incoming packet from Custom Proxy 1
(Blue) Establish connection with S, forward incoming packet from Custom Proxy 1 to S
(Green) Forward incoming packet from S to Custom Proxy 1 public port
PS:1つのtcp接続のみを使用するTelnet、RDPに焦点を当てます。 FTPは、データ(ファイル)転送にランダムポートを使用した追加のtcp接続を使用するため、はるかに困難です。
これは前のコメントからの「謎」に答えるためです
...しかし、Kgraves-PCでは、10.0.10.120のDuclawからSSHトラフィックが直接送信されていました。では、Kgraves-PCでDuclawからのトラフィックをどのように確認しますか? .。
赤 kgraves-pc:3333からdevilsmilk:6666
kgraves-pc $ ssh -vg -L 3333:localhost:6666 misfitred@devilsmilk(10.0.10.121)
緑 devilsmilk:6666からduclaw:1337
devilsmilk $ ssh -vg -L 6666:localhost:1337 kgraves@duclaw(10.0.10.120)
青 kgraves-pc:3333から(duclaw)からdevilsmilk:6666
duclaw $ ssh -vg -R 3333:devilsmilk:6666 kgraves@kgraves(10.0.10.113)
kgraves-pc$ $ mstsc /v:localhost:3333 /f
赤いトンネルが使用されている場合、SSH(RDP)パケットは次のように前後に続きます
kgraves-pc <--(Red)--> devilsmilk <--(Green)--> duclaw(RDP server end point)
これは、OPwiresharkのスクリーンショットに示されているものです。
青いトンネルが使用されている場合、SSH(RDP)パケットは次のように前後に続きます
kgraves-pc <--(Blue-ssh)--> duclaw(en-route) <--(Blue-non-ssh)--> devilsmilk <--(Green)--> duclaw(RDP server end point)
この場合、それはのように見えます kgraves-pcであり、duclawはwiresharkで直接SSH-RDP接続を持っていますが、そうではありません。