TLS(SSL) 연결이 어떤 알고리즘으로 선택되어 암복호화가 진행된건지 확인하는 방법

대문 / 프로그래밍, 활용 / TLS(SSL) 연결이 어떤 알고리즘으로 선택되어 암복호화가 진행된건지 확인하는 방법

TLS(SSL) 연결이 어떤 알고리즘으로 선택되어 암복호화가 진행된건지 확인하는 방법

1.1. 개요

  1. 사전준비
    • Wireshark 를 적절한 PC에 설치합니다. (pcap 포함)
  2. 장비에서 원하는 TCP 연결 포트에 대한 캡쳐를 tcpdump를 이용하여 캡쳐합니다.
    # tcpdump 'tcp port <캡쳐할 TCP 포트번호>' -i <캡쳐할 인터페이스명> -w <캡쳐된 내용을 저장할 pcap 파일 저장경로>
    
    => 만약 캡쳐할 인터페이스명을 모르거나 여러개인 경우 any 로 지정할 수 있습니다. => '-i any'
    
    예) https://:8443 에 대한 캡쳐
    # tcpdump 'tcp port 8443' -i eth1 -w /tmp/mytrace.pcap
    
  3. tcpdump 캡쳐준비가 되면 실제 연결을 수행합니다. (정확히는 첫 연결부가 캡쳐되어야 합니다.)
    • 캡쳐된 파일은 wireshark 가 설치된 PC로 다운로드 받습니다.
  4. Wireshark로 캡쳐된 pcap 파일을 Open 합니다.
  5. (중요) Wireshark 의 "Analyze > Decode As"를 선택하고 "Current" 항목에 "HTTPS"인 경우 "HTTP" 검색 후 "SSL"검색하여 확인을 누릅니다.
    • 이제 캡쳐된 내용이 TLS 해석된 사항으로 보이게 됩니다. 마찬가지로 "SSH"인 경우 "SSH" 검색 후 "SSL"검색하여 확인 누르는 식으로 진행할 수 있습니다.
    • Decode As 를 잘 선택해야지만 올바른 해석뷰가 보입니다. 이는 Application layer 이기 때문에 Wireshark가 직접 판단할 수 없기 때문에 사용자가 지정해야 합니다.
  6. 이제 "Info" 항목에 "Client Hello" 인 부분을 찾아서 세부 내용으로 "Cipher Suites"를 찾아보면 Client 에서 지원가능한 목록이 확인됩니다.
  7. 그리고 "Info"항목에 "Server Hello"인 부분을 찾아서 "Cipher Suites"를 보면 최종 서버로부터 선택된 알고리즘이 확인 가능합니다.
    • 아래 그림에서 보면 우리 장비의 웹 서버측에서는 Server Hello 에서 AES128GCM-SHA256 이 선택되었다는 것을 알 수 있습니다.

  8. wireshark-http-ssl-cipher-suites.png
    [PNG image (325.76 KB)]



    tshark -nr mytrace.pcap -Y "ssl.handshake.ciphersuites" -Vx > ssl.output.txt
    
    Secure Sockets Layer
        SSL Record Layer: Handshake 
        Protocol: Client Hello        
        Content Type: Handshake (22)        
        Version: TLS 1.0 (0x0301)        
        Length: 512        
        Handshake Protocol: Client Hello            
        Handshake Type: Client Hello (1)            
        Length: 508            
        Version: TLS 1.2 (0x0303)            
        Random                
        GMT Unix Time: Jun 28, 2097 09:17:21.000000000 W. Europe Daylight Time                
        Random Bytes: 577f9fb99f0e042633046e9b969fd957b903edb4bbb77449...            
        Session ID Length: 32            
        Session ID: 888489fa25a177efb30c21cc89b6e447ae680357a0b762b6...            
        Cipher Suites Length: 32            
        Cipher Suites (16 suites)                
            Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)                
            Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)                
            Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)                
            Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)                
            Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)                
            Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
    

1.2. 참고자료


Retrieved from https://www.minzkn.com:443/moniwiki/wiki.php/HowTo_tls_ssl_pcap_analysis
last modified 2023-02-01 12:21:11