TLS 텔넷의 세부정보를 보는 방법은 무엇입니까?

TLS 텔넷의 세부정보를 보는 방법은 무엇입니까?

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와 유사합니다.

데비안 openssl 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한 다음 wiresharkSTARTTLS 또는 이와 유사한 것을 사용하여 결과를 분석하는 것입니다.

1.) 두 개의 터미널 창을 엽니다. 2.) 첫 번째 창에서 캡처를 시작합니다.

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

sudo3.) 필요한 경우 비밀번호를 입력한 후 명령 실행을 유지하고 두 번째 터미널 창으로 이동한 다음 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 암호화된 스트림을 보고 있는 것입니다.

관련 정보