TLS Telnetの詳細を表示するには?

TLS Telnetの詳細を表示するには?

Debian(およびソースコードを再コンパイルする場合は他のディストリビューション)はtelnetdのSSLバージョンを使用できます。

telnet-ssl -z cacert=/etc/ssl/certs/mydomain.crt -z cert=/etc/ssl/certs/client.mydomain.crt -z key=/etc/ssl/private/client.mydomain.key othersite

Trying 192.168.0.217...
Connected to othersite.mydomain
Escape character is '^]'.
[SSL - attempting to switch on SSL]
[SSL - handshake starting]
[SSL - OK]

SSL接続(使用されたパスワードなど)の詳細について知りたいです。このコマンドを知っています。

openssl s_client -showcerts -connect othersite.mydomain:23 -tls1_2

しかし、返品のみ...

CONNECTED(00000003)

また、s_clientの--certおよび--keyフラグを使用して証明書を渡そうとしましたが、他に何もありません。CONNECTED(00000003)

このオプションを使用すると、一部の出力が生成されますが、詳細は生成されません。

openssl s_client -key KEYPATH -cert CERTPATH -CAfile CACERTPATH  -connect othersite.mydomain:23 -starttls telnet

CONNECTED(00000003)
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 3 bytes and written 0 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)

このサービスのSSL接続の詳細をどのように表示できますか?

答え1

クライアントの初期接続メッセージtelnet-ssl:

Connected to othersite.mydomain
Escape character is '^]'.
[SSL - attempting to switch on SSL]

「SSLを開こうとしています」を含めることは、クライアントがデフォルトのTCP接続を確立した後に単にSSL接続ネゴシエーションを開始するのではなく、最初に「暗号化を使用したい」と言う方法を含むTelnetプロトコルハンドシェイクの一種を実行しますを表します。明らかに、サーバー側はこれを確認するまでSSLネゴシエーションを開始しません。したがって、通常のSSLではなく、実際にSTARTTLSに似ています。

Debianopenssl s_clientにはこの-starttls <protocol>オプションがあり、この場合はこれが選択です。残念ながら、Telnetプロトコルのサポートは含まれていないようです。

~によると期限切れのインターネットドラフト、TCP接続が開かれると、サーバーはIAC DO START_TLSTCP接続の3バイトである16進数0xff 0xfd 0x2eのTelnetプロトコルメッセージを送信する必要があります。これはSSL handshake has read 3 bytes and written 0 bytesメッセージと一致します。

クライアントは、SSL / TLS暗号化された接続を確立できることを確認する別のTelnetプロトコルメッセージで応答する必要があり、その後、SSL / TLSネゴシエーションの実際の開始を示すために別のメッセージのペアが交換されます。ただし、openssl s_clientTelnetの使用方法がわからないため、SSL / TLSネゴシエーションを開始できる応答をサーバーに提供することはできません。

TelnetプロトコルのSTARTTLSサポートを含むバージョンが見つからない限りopenssl s_client、唯一の方法は、tcpdump実際のクライアントによって行われた接続ネゴシエーションをキャプチャしtelnet-sslてからwireshark、STARTTLSなどを使用して結果を分析することです。

1.)2つの端末ウィンドウを開きます。 2.) 最初のウィンドウでキャプチャを開始します。

sudo tcpdump -i <network interface> -s0 -Knpvv -w telnet-ssl-dump.cap host othersite

sudo3.)必要に応じてパスワードを入力してコマンド実行を維持し、2番目のターミナルウィンドウに移動してそこからtelnet-sslコマンドを実行します。最初のウィンドウでは、キャプチャされたパケットカウンタが増加していることがわかります。

4.) 実際にログインする必要はありません。リモートログインプロンプトが表示されたら、SSL / TLSネゴシエーションを完了する必要があり、Ctrl最初のウィンドウに移動して+を押してパケットのキャプチャを停止できますC

これで、最初のターミナルウィンドウセッションでさらにtelnet-ssl-dump.cap分析できるファイルが必要です。

ワイヤーシャークGUIインターフェイスを備えたプロフェッショナルネットワークトラフィックアナライザです。ローカルワークステーションで実行するのが最善です。ローカルシステムがLinuxの場合は、ディストリビューションのパッケージストアにあります。 Windowsの場合は上記のリンクからダウンロードできます。

パケットキャプチャファイルの名前をWiresharkに引数として指定する場合、実行に特別な権限は必要ありませんwireshark telnet-ssl-dump.cap。引数がない場合、Wiresharkはトラフィックのキャプチャを開始する予定であると想定し、使用する項目に関するいくつかの情報を表示できます。ネットワークインターフェイスの問題。ただし、パケットキャプチャファイルから始めると、キャプチャされたパケットのリストがすぐに表示されるはずです。これらのいずれかを選択して、Wiresharkが解析できる詳細な分析を表示できます。 SSL / TLSプロトコルネゴシエーションを含むパケットを見つけると、他の接続の詳細とともにどの暗号化アルゴリズムが選択されているかを確認できます。リストされているパケットの内容だけが表示されている場合は、あまりにも遠くに移動し、<encrypted data>ネゴシエーションが完了した後にSSL / TLS暗号化ストリームを見ています。

関連情報