2010년 8월 22일 일요일

패킷포렌직 - '우리가 만날 카페의 이름을 알아내라' 문제풀이

두번째 패킷문제를 내고, 첫 문제보다 많은 분들이 답을 풀어주셨습니다. :-)

첫번째로 문제의 정답을 제출하신 분은 '무적코만도' 님 이십니다. 코만도님외 코알라님,불독형사님께서도 정답을 맞춰주셨습니다. 모두 축하드립니다 ^.^

이번 문제는 쉽게 출제하였는데요, 정답은 패킷인사이드 로고 파일안에 숨겨져 있습니다. 로고파일의 뒷 부분에
Secret Message: What is the worlds deepest sea? 문자열이 들어 있었습니다. 일반 이미지 파일안에 문자열을 숨겨서 넣은 것입니다. 이런 형태는 스테가노그래피(Steganography)로 불리는데 이미지나 오디오 파일과 같은 디지털매체에 메시지를 숨기는 것입니다.  문자열은 이미지파일만 열어봐도 아래그림과 같이 금방 확인이 됩니다:

[그림] 윈도우의 메모장을 통해 파일을 열어본 화면

만약, 이 문자열이 이렇게 바로 보이는 형태가 아니라 암호화 되어 있거나, 조금 다른 형태로 바뀌어져 있었다면 더욱 알기가 힘들었을 것이다.  첫 문제인 만큼 쉽게 알아볼 수 있도록 하였는데, 문제가 차츰 거듭될수록 더 어려워질 것이다. :-) 아, 문자열은 바로 정답을 넣은것이 아니라 세계에서 가장 깊은 바다가 어디인것인가를 물어보는 메시지였다. 구글링을 해 보면 '마리아나' 해구라는 것을 금방 찾을 수 있다. 즉, 문제에서 이미지 파일을 통해 만날 장소를 뜻하는 메시지를 넣어놓았고, 그들이 만날 최종 장소는 마리아나 카페가 되었던 것이다.

자 정답은 이렇다 치고, 어떻게 문제의 정답을 찾을 수 있을까 하는 부분에 대해서 얘기를 해보자. 문제는 사실 어렵지 않은데, 이것을 찾는 것이 다소 어렵게 느껴질 수 있다. 하지만, 처음에 패킷덤프를 해보라는 문제의 힌트를 제시하였다. 패킷덤프를 시작하고, 패킷인사이드에 접속하고 덤프 파일을 열어보자.

몇백개의 패킷으로 내용이 많긴 한데, 여기서 적절히 걸러낼 수 있는 경험치가 필요한 것이다. 패킷을 대충 훑어보면 이상한 점을 찾아볼 수도 있고, 너무 내용이 많아서 어려울수도 있다. 앞서 말한것과 같이 패킷인사이드 로고에 정답이 들어있는데, 이상하게도 해당 이미지파일이 조작된 형태라고 나오는 메시지를 확인할 수 있다. 추가힌트에서도 말했지만 Malformed Packet 이라는 것을 볼 수 있다. 이미지파일이 열려서 보이기는 하는데, 이미지 파일의 끝 부분에 그냥 추가한 형태다 보니 구조가 달랐던 것이다.  이렇게 일일이 다 봐서 찾을 수도 있지만, 더 쉬운 방법은 와이어샤크에서 Expert Infos 를 클릭해 보면 더 쉽게 찾아 볼 수 있다. 주욱 보다 보면, 유독 빨간색으로 선명하게 Malformed Packet 라인을 볼 수 있기 때문이다.

[그림] 와이어샤크의 Expert Infos 를 통해 찾아본 화면

이 기능을 통해 찾아보니 너무 쉽게 찾을 수가 있었다. 문제에서도 쉽게 정답이 들어있는 파일을 찾을 수 있도록 이런 힌트를 남겨놓은 것이다. 좀더 정교하게 파일을 작성할 수도 있겠지만, 의도적으로 Malformed Packet 형태가 보이도록 만들어 놓은 것이다.

이번 문제를 통해 다음을 익힐 수 있도록 한 것이다.
- 조작된 형태의 파일  
- 스테가노그래피
- 패킷파일 분석능력
- 어떤 방법을 통해 빨리 정답을 알아낼 수 있는가? (Expert Infos, 필터 등)
- 끈기

P.S 문제 정답자 분들에게 선물이라도 드릴 수 있으면 좋을텐데, 아직은 마련되어 있지 않습니다.^^ 기회가 되면 선물도 준비해 보겠습니다. 선물 후원이 가능하신분은 댓글 부탁드립니다 :-)
아, 그리고 아직 이미지파일은 그대로 이니 아직 문제를 풀어보시지 못했다면 지금 해보세요.

[참고]
1. 마리아나 해구
2. 스테가노그래피
3. 무적코만도님의 문제풀이 요약

다음은 첫번째로 정답을 제출하신 무적코만도님이 기술하신 내용을 요약한 것입니다.
패킷인사이드에 올려져 있는 여러 내용들이 참고가 되어 아래와 같은 방법으로 확인하였다고 합니다.
처음에는 찾느라, 눈이 벌개질 만큼 뚫어져라 보셨는데 그래도 첫번째 정답 제출의 영광을 가지셨습니다.

- 덤프된 패킷을 와이어샤크로 열어서 Statistics > Conversations > TCP 부분확인하며
각 연결된 세션을 하나하나 Follow TCP Stream 보면서 확인
- 패킷인사이드 이미지의 속성을 확인, 에디터로 열어서 확인
- 와이어샤크의 File -> Export ->Objects -> HTTP 순으로 오브젝트 리스트를 뽑아서 확인
- Malformed Packet : PNG 파일 확인

이전에 소개한 포스팅에서 HTTP 의 오브젝트를 확인하는 방법을 이용하셨는데,
빨리찾기 위한 좋은 방법입니다 :-)

댓글 없음:

댓글 쓰기