Open Source/BackTrack

[BackTrack5 R1] ssldump

DarkSoul.Story 2013. 1. 31. 12:37
반응형




1. 개요

 

ssldump는 SSLv3/TLS 네트워크 프로토콜 분석기이다. ssldump는 클라이언트와 ssl 서버간의 요청 내용을 선택한 네트워크 인터페이스를 통해 실제 응용 프로그램 데이터 (HTTP 계층)을 볼 수 있다. ssldump가 SSLv3/TLS 트래픽을 식별하면, 디코딩을 기록하고, 그 내용을 텍스트 형태로 표시한다. 만약 해당 키값 자료와 함께 제공되는 경우, 그 키값을 해독 하여 데이터 트래픽을 표시한다.

 

ssldump는 FreeBSD, 리눅스, 솔라리스  HP에서 공식적으로 동작하는 것으로 알려져 있지만 pcap이 있는 모든 플랫폼에서 동작한다.

 

ssldump를 사용하기 전에 ssl통신이 연결되는 과정을 간단하게 알아본다.

 

 

SSL이 수행되는 단계는 다음 3가지로 분류된다.

 

 SSL 서버 인증 (SSL Server Authentication)

사용자의 웹 브라우저가 Web Server를 인증하는 단계이다.

SSL을 지원하는 웹 브라우저는 표준 공용키 암호화 기법을 사용하여서버의 인증서와 공용 ID를 실제로 브라우저

가 신뢰하는 인증기관 (Trusted CA)으로부터 발급받았는지 여부를 인증하는 기능을 내장하고 있다.

 

 SSL 클라이언트 인증 (SSL Client Authentication)

Web Server가 자신에게 요청한 클라이언트를 인증하는 단계이다.

서버 인증서에 사용했던 동일한 기법으로 인증하는데서버에 내장된 SSL 지원 소프트웨어나 서버 앞에 배치된 

SSL하드웨어는 클라이언트의 인증서와 공용 ID를 실제로 서버가 신뢰하는 인증기관(Trusted CA)으로부터 발급 

받았는지 여부를 인증하는 기능을 내장하고 하고 있다.

 

③ 암호화 통신 (Encrypt Connection)

서로에 대한 인증 단계 이후 정상적으로 종결되면 클라이언트와 서버 사이에 교환되는 모든 데이터는 사적인내용

을 보호하기 위한 암호화를 요구 받는다또한 SSL Connection을 통해 암호화된 데이터 역시 전송 중 

변경을 방지(Message Integrity)하기 위해 Hash 알고리즘을 이용하여 보호한다.

 

 

 3가지 단계를 기반으로 실제로 동작하는 순서는 아래와 같으며아래의 순서를 진행하기 전에 SSL 또한 TCP

프로토콜에 기반을 두고 있으므로 반드시 TCP 3 Handshake가 이루어져 있어야 한다.

 

 

① 클라이언트는 서버에게 Client Hello Message 전송

     - 일반적으로 브라우저를 통해 서버에게 SSL 연결 요청을 하기 위한 초기 단계이다.

 

② 서버는 클라이언트로 Server Hello Massage와 서버 인증서를 전송하며만약 클라이언트 인증서

     가 필요한 경우에 인증서 요청도 함께 전송

    - 서버는 클라이언트가 자신의 적합한 서버인지를 인증할 수 있도록 신뢰하는 인증기관으로부터 발급받은 자

      신의 공인 인증서를 발송한다.

      이때 일반적으로 서버 인증서와 함께 서버의 공용키가 클라이언트 측에 전달된다만약 클라이언트에 대한

      인증을 필요로 하는 트랜잭션이라면 이에 대한 요청도 함께 발송한다.

 

③ 클라이언트는 암호화에 사용되는 Session Key와 함께 클라이언트에서 지원하는 Chipher Suite

     서버로 전송하며서버가 인증서를 요청한 경우에는 클라이언트의 인증서도 함께 전송

     - 서버의 인증서에 대해 클라이언트는 브라우저 내에 저장되어 있는 신뢰기관으로부터의 발급여부를 확인하

       고암호화에 사용될 Session Key를 생성해 서버 공용키로 Session Key를 암호화하여서버에게 전달

       된다또한 암호화된 Session Key와 함께 브라우저가 지원하는 Chipher Suite(암호화 기법 리스트)과 함

       께 서버측에서 클라이언트의 인증서를 요청한 경우 스스로의 인증서를 발송한다.

 

④ 서버는 Chipher Suite를 받아들이고(또는 거부) Finished Message를 클라이언트로 전송한 후 데

      이터 전송 단계로 이동

     - 서버는 클라이언트로부터 클라이언트 브라우저가 지원하는 Chipher Suite를 받고 클라이언트에게 종결

       메시지를 보내고 데이터 전송 단계로 돌입한다여기까지 정상적으로 완료가 되면 클라이언트가 생성한

       Session Key를 클라이언트와 서버가 모두 공유하게 된다.

 

⑤ 클라이언트는 최종 메시지를 서버로 전송하고 데이터 전송 단계로 이동

     -  ④번까지 정상적으로 완료되면 클라이언트는 종결 메시지를 서버로 보내고 실제 데이터를 전송하기 위한

        단계로 돌입한다.

 

⑥ 상호 합의한 Chipher Suite에 의해 암호화된 메시지를 교환

     - ⑤번에서 서로 나누어 가진 Session Key로 암호화된 데이터를 교환하게 된다.

 

위 내용을 가지고 ssldump를 사용하여, ssl 수행 과정을 살펴 보자.

 

2. 상세 분석

 

다음은 ssldump를 실행한 화면이다.



ssldump의 주요 옵션은 다음과 같다.

 

-r  : 파일로 저장된 패킷 덤프 파일 (*.pcap)

-i  : 네트워크 인터 페이스

-k : 암호화 키 값이 저장된 파일

-d : 목적지 포트 지정

 

ssldump를 실행하면 위와 같이 옵션 정보가 출력된다.


참고로 목적지 Port를 지정해 주지 않고, ssldump를 사용할 경우 모든 트래픽에 대해서 출력되기 때문에, 우리가 보고자 하는 ssl 트래픽만 확인하기 위해 목적지 Port를 지정해 준다.



위와 같이 ssldump를 사용해도 아무 변화가 없는것 처럼 나타난다. 하지만, eth0로 지나다니는 웹 트래픽에 대해서 모니터링 하고 있는 상태 이다.

 

이제 ssl 서버에 접속 하면 다음과 같이 ssl통신을 위한 연결하는 모습을 볼 수 있다.

(위에서 언급한 ssl 동작 순서를 참고하여 보기 바란다.)



위에서 보듯이 ssl 연결이 이루어 졌다. 이제 서로 나누어 가진 Session Key로 암호화된 데이터를 교환하게 된다.


반응형

'Open Source > BackTrack' 카테고리의 다른 글

[BackTrack5 R1] UA-Tester  (0) 2013.01.31
[BackTrack5 R1] TLSSLed  (0) 2013.01.31
[BackTrack5 R1] SSLScan  (0) 2013.01.31
[BackTack5 R1] miranta  (0) 2013.01.31
[BackTrack5 R1] NBTscan  (0) 2013.01.31