old

insomnihack 2017 - The Great Escape part 1 - Forensics (와이어샤크 ssl 키 적용 분석)

nopdata 2017. 3. 29. 16:33
keyword : 와이어샤크 ssl 키 적용 분석

문제는 와이어샤크 파일 하나가 주어진다.



다른 50점 문제의 난이도를 보면 꽤나 간단한 문제이다. 대충 흐름을 보면, TLS통신으로 데이터를 송수신한다. 물론 암호화 되어 있어 볼 수 없다.
뒷부분에는 SMTP를 통해 메일 전송을 한다. 중간 부분을 보면 FTP통신도 있다.
패킷량은 적기 때문에 전체 흐름 분석의 난이도는 없는 문제이다.

ftp패킷을 보면 private key가 전송되는 것을 볼 수 있다.


이 private key를 추출해서 tls통신의 암호화 해제에 사용해야 한다. 단, tls통신이 하나의 ip주소에 대해서 하는것이 아니기 때문에, 대상 ip주소를정확히 해야 한다.
여기서 약간 문제가 있었는데 먼저 3번 tcp 스트림을 보면 아래와 같다.


tls통신을 하는데 사용되는 port번호가 info에 적혀 나온다. 53186 -> 443으로 되어 있는데 443은 ssl에 사용되는 포트 번호이며 53186은 로컬 포트로 생각이 된다. 따라서 패킷 전체에서 자주 등장하는 172.31.36.141(172.31.xx.xx)은 서버의 ip주소가 아닌 클라이언트의 주소이다. 443포트를 보고 서버 ip가 하나가 아님을 보고 이걸 어떻게 특정하나 생각을 하지 못하였는데 뒷 부분의 SMTP에 힌트가 있었다고 한다.


SMTP로 전송된 메일데이터이다. 보면 문제 지문에도 있던 Swiss Secure Cloud의 url이 나온다. 단지 이 주소가 part2문제에 주어지는 url로 판단을 하였으나, 이 주소에 대한 ssl통신이 있었고, 이 주소의 ip를 가지고 ssl을 해제 했어야 했다.


따라서 ssc.teaser.insomnihack.ch의 주소는 52.214.142.175가 된다. 이제 추출한 private key를 넣고, 서버 ip를 52.214.142.175로 해서 ssl 해제를 해주면 된다.


wireshark의 edit -> preference를 들어오면 위처럼 나오고 protocol -> ssl을 위처럼 수정해주어야 한다. 이렇게 적용을 시키게 되면, 캡쳐된 패킷내의 모든 tls통신의 암호화가 해제 되는 것이 아닌 서버 ip주소가 52.214.142.175인 tls통신에 대해서만 해제가 된다. 당연히 private key가 적용되는 서버이기 때문에 이 서버만 가능하다.

해서 ssl의 암호화를 해제하고 ssl정보를 보면 각 헤더 정보가 위같이 뜨며, 헤더 정보에 flag값이 숨어있다.

그 이외에 해제된 http정보를 보면 로그인 id,pw 업로드 파일등의 데이터도 있다 아마도 part2, part3를 위한 파일인 것 같다.

Answer : FLAG: INS{OkThatWasWay2Easy}