본문 바로가기
Security Study/forensics

[SANS Forensic Contest Puzzle] #1: Ann’s Bad AIM

by yeong-yi 2025. 8. 2.
Contents

https://forensicscontest.com/2009/09/25/puzzle-1-anns-bad-aim

 

Puzzle #1: Ann’s Bad AIM – Network Forensics Puzzle Contest

Anarchy-R-Us, Inc. suspects that one of their employees, Ann Dercover, is really a secret agent working for their competitor. Ann has access to the company’s prize asset, the secret recipe. Security staff are worried that Ann may try to leak the company

forensicscontest.com

 

포렌식 관련해선 학교에서 한 번 들어본 게 끝인데 그때 좀 열정적으로.. 수업을 들었었던 기억이 있다. 재미있었다. 성적도 잘 나왔었다 다음에 시간이 되면 수업 중 진행했던 포렌식 프로젝트랑 보고서도 따로 정리해서 게시물로 올려야겠다..!!

 

수업 중 풀었던 문제를 다시 정리해보려고 한다

근데 나 수업때 좀 잘 풀었었다... 포렌식 ctf는 처음이었는데.... 접근도 나쁘지 않았다!!

 

위 링크를 들어가면

 

이런 화면이 나온다. 온통 영어이기에 번역을 좀 돌려보면...

퍼즐 #1: Ann의 나쁜 AIM

2009년 9월 25일 / 관리자 / 댓글 5개

Anarchy-R-Us, Inc.는 자사 직원 중 한 명인 Ann Derover가 사실 경쟁사에서 일하는 비밀 요원이 아닐까 의심하고 있습니다. Ann은 회사의 주요 자산인 비밀 레시피에 접근할 수 있는 권한이 있으며, 보안팀은 그녀가 이 레시피를 유출하려고 할까 봐 걱정하고 있습니다.

보안팀은 한동안 Ann의 활동을 감시해 왔지만, 지금까지는 수상한 점을 발견하지 못했습니다. 그러나 오늘, 회사 무선 네트워크에 예상치 못한 노트북이 잠시 나타났습니다. 직원들은 이 노트북이 주차장에 있던 누군가의 것일 수도 있다고 추측하고 있습니다. 건물 안에서는 낯선 사람이 목격되지 않았기 때문입니다. Ann의 컴퓨터( 192.168.1.158 )가 이 노트북과 무선 네트워크를 통해 IM(인스턴트 메시지)을 주고받은 것으로 보이며, 이후 그 노트북은 사라졌습니다.

“우리는 그 활동에 대한 패킷 캡처를 가지고 있어요,” 보안팀은 말합니다. “하지만 무슨 일이 일어난 건지 도무지 알 수가 없어요. 도와줄 수 있나요?”

당신은 디지털 포렌식 조사관입니다. 당신의 임무는 Ann이 누구와 메시지를 주고받았는지, 무엇을 보냈는지 파악하고, 다음과 같은 증거를 복구하는 것입니다:

 

Ann이라는 사람이 비밀 레시피를 유출한 거 같다는 심증은 있지만 물증이 없는 상태에서 회사 네트워크에 ann의 컴퓨터와 통신한 낯선 노트북이 발견되었다.

이 통신에 대한 패킷 캡처본을 포렌식 해 ann이 무슨 행동을 했는지 찾아야 한다.

 

이렇게 패킷 캡처한 pcap 확장자의 파일이 evidence01 이름으로 첨부되어있고 이 파일의 해시값도 같이 나와있다.

포렌식 수업에서 증거물의 무결성 보존은 굉장히 중요하다고 엄청 강조 해서 배웠으며 포렌식을 하기 전 파일의 해시 값과 포렌식을 진행하고 난 후의 해시값을 각각 구해 값을 비교하는 과정까지 거쳐야 하지만 지금은 CTF 문제를 푸는 것이 목표이기 때문에 그 과정은 생략했다.

 

이게 풀어야 할 문제이다

 

1. Ann의 IM 친구 이름은 무엇인가요?
2. 캡처된 IM 대화에서 첫 번째로 나온 댓글은 무엇인가요?
3. Ann이 전송한 파일의 이름은 무엇인가요?
4. 추출하려는 파일의 매직 넘버(앞의 네 바이트)는 무엇인가요?
5. 그 파일의 MD5 해시값은 무엇인가요?
6. 비밀 레시피는 무엇인가요?

 

문제를 풀기에 앞서 먼저 pcap 확장자 파일은 packet cature 파일을 의미한다.

네트워크에서 주고받는 데이어 패킷을 캡쳐한 파일의 형식이며 이 파일을 열어 분석하면 캡쳐한 만큼의 네트워크 트래픽의 세부 내용을 확인할 수 있는 것이다. 주로 wireshark, tcpdump같은 툴을 사용하여 패킷을 캡처하고, pcap 파일을 열어보고 할 수 있다.

 

나는 wireshark로 분석을 할 것이다. 학교에서도 wireshark밖에 안 배웠고 수업에서도 wireshark를 썼다.. tcpdump는 다음 기회에 꼭 한 번 써봐야 겠다.

 

 

evidence01.pcap 파일을 Wireshark로 실행 한 화면이다

 

먼저 아무 tcp패킷이나 잡고 이 tcp 스트림 따라가기 기능을 사용할 것이다.

이 기능을 사용하게 되면 tcp 스트림의 흐름을 쉽게 읽을 수 있는 형태로 재조립해주며 dst에서 src는 파란색, src에서 dst는 빨간색으로 구분 해 패킷을 확인할 수 있다. 

src(출발지) -> dst(도착지) : 파랑
dst(도착지) -> src(출발지) : 빨강

또한 패킷을 다양한 형태로 바꾸어 확인할 수 있는 점도 분석할 때 요긴하게 사용할 수 있다.

 

형식을 ascii로 변경하면 이렇게 패킷들이 ascii 형식으로 바뀐 상태로 확인할 수 있다

오른쪽에 스트림을 하나씩 카운트하면서 패킷을 찬찬히 읽어보며 분석하면 된다.

일단 0번 스트림은 크게.. 확인 할 내용이 없는 거 같다.

 

스트림을 넘기면서 패킷을 확인한다.

 

2번 스트림으로 와서 패킷을 읽어보면 Sec55user1이라는 이름이 반복적으로 등장하는 것을 확인할 수 있고 이를 통해 친구의 이름이 Sec55user1 이라는 것을 추측할 수 있다.

또한 윗 부분을 살펴보면 "Here's the secret recipe... I just downloaded it from the file server. Just copy to a thumb drive and you're good to go >:-)" 라는 내용으로 통신한 흔적과 중간 쯤 살펴보면 recipe.docx 라는 파일을 확인할 수 있다. 이렇게 스트림 하나 만으로 3가지 단서를 찾아낸 것이다.

1. Ann의 IM 친구 이름은 무엇인가요?
Sec55user1
2. 캡처된 IM 대화에서 첫 번째로 나온 댓글은 무엇인가요?
Here's the secret recipe... I just downloaded it from the file server. Just copy to a thumb drive and you're good to go >:-)
3. Ann이 전송한 파일의 이름은 무엇인가요?
recipe.docx

 

이제 4번 문제를 읽어보면 전송한 파일의 매직넘버(앞 4byte)를 찾아야 한다.

사실 이 문제를 보고.. 이걸 패킷에서 추출하고 찾고 해야한다는 건가? docx파일이니 인터넷에 docx파일 시그니처값만 검색해도 정답이 나오는 게 아닌가.. 라고 생각을 했다.

내가 알기로 docx 확장자의 시그니처값은 50 4b 03 04 였고, 답을 확인하니 이게 맞긴 했다.

이 문제에서 요하는 사고가 어떤 건지 잘 감이 안 와 다른 사람들의 문제 풀이를 찾아봤지만 다들 비슷한 거 같았다..!!! 하지만 와이어샤크의 패킷을 좀 더 확인해보면

 

두번째 파란색 박스의 패킷 시작하는 부분에 아스키코드로 PK라고 적혀있는 것을 확인할 수 있다. 이는 zip을 기반으로 한느 거의 모든 컨테이너 파일의 시그니처값으로 볼 수 있다. 아까 확인한 패킷에서 recipe.docx라는 파일을 확인했으므로 이 부분이 docx파일의 헤더 (시그니처값) 라고 유추할 수 있고 이 부분을 raw파일로 변환하면

 

50 4b 03 04 라는 4 byte가 나온당.

4. 추출하려는 파일의 매직 넘버(앞의 네 바이트)는 무엇인가요?
50 4b 03 04

 

아무래도 계속 얘기가 나온 파일의 헤더값에 대한 지식과 이해가 있어야 문제에 쉽게 접근할 수 있을 것이다. 파일의 헤더값에 관한 내용은 다른 게시물로 따로 정리 할 생각이나 간략하게 설명하면

 

파일의 매직 넘버라고도 부르는 파일 시그니처 헤더값은 특정 파일 형식을 식별하기 위해 파일의 시작 부분에 위치하는 고유한 바이트 값이다. 이 값을 통해 운영체제나 프로그램에서 파일의 종류와 형식을 파악하고 처리한다. 파일의 시그니처값과 마찬가지로 파일의 푸터값이라는 것도 있다. 쉽게 말해 파일의 헤더 값이 파일의 시작을 알리는 부분에 위치하는 값이라면 파일의 푸터값은 파일의 끝을 의미하는 부분에 위치하는 값이다.

이 값을 이용해 파일을 복구 할 수도 있고, 추출할 수도 있고 스테가노그래피 된 파일도 경우에 따라 파일의 원본을 찾을 수도 있게 되는 것이다.

 

5번 문제는 ann이 유출 하려고 한 recipe.docx 파일의 MD5값을 찾아야 한다.

MD5는 해시 알고리즘 중 하나로 아마 파일이 변조되지 않게끔 정상적으로 추출할 수 있는지, md5에 대한 개념과 이 해시값이 필요한 이유 등..에 대한 이해를 돕기 위해 출제 된 문제라고 생각한다.

 

MD5 값을 찾기 전 파일을 추출해야 한다. docx 확장자 파일의 헤더 값은 50 4b 03 04 이고 푸터 값은 50 4b 05 06 이다. 이제 이 시그니처 값부터 헤더값까지 복사 해 HxD라는 헥사 에디터 프로그램에 붙여넣는다.

 

이렇게 생각하고 파일을 추출했는데 파일은 정상적으로 추출 됐으나 해시 값이 달라졌다.. 푸터 값 뒤로 헥사값이 조금 남아있었는데 이를 무시하고 그냥 푸터 값까지만 복사를 해서 그랬던 거 같고.. 전송한 데이터의 모든 부분을 복사했어야 해시값이 달라지지 않는 거 같다..!!

 

여하튼 다시 아까 확인한 매직 넘버. 헤더 값부터 전송된 데이터까지 헥사값을 복사 한 후 HxD라는 헥사 에디터 프로그램에 붙여 넣는다

 

프로그램을 실행한 후

 

 

헥사값을 붙여넣은 후

 

recipe.docx 라고 이름을 붙여 다시 저장한다. 이때 꼭 .docx로 확장자를 잘 붙여줘야 정상적으로 저장이 잘 된다.

 

정상적으로 파일이 저장되었음을 확인했다. 이제 이를 실행해보면

 

정상적으로 어떤 레시피가 실행이 된다. 이게 ann이 유출하려했던 파일인 거 같고 레시피의 내용까지 확인할 수 있다.

 

MD5를 포함한 해시값을 확인하는 방법은 다양하지만 그 중 가장 간편하게 해시값을 알아보는 방법은 윈도우의 기본 기능을 사용하는 방법이 있다.

 

파일을 우클릭후 파일의 속성을 들어가면 이렇게 파일 해시탭이 존재함을 확인할 수 있다!

 

파일의 MD5 값은 8350582774E1D4DBE1D61D64C89E0EA1 임을 확인했고 파일의 내용까지 확인했다.


1. Ann의 IM 친구 이름은 무엇인가요?
Sec55user1
2. 캡처된 IM 대화에서 첫 번째로 나온 댓글은 무엇인가요?
Here's the secret recipe... I just downloaded it from the file server. Just copy to a thumb drive and you're good to go >:-)
3. Ann이 전송한 파일의 이름은 무엇인가요?
recipe.docx
4. 추출하려는 파일의 매직 넘버(앞의 네 바이트)는 무엇인가요?
504b0304
5. 그 파일의 MD5 해시값은 무엇인가요?
8350582774E1D4DBE1D61D64C89E0EA1
6. 비밀 레시피는 무엇인가요?
Recipe for Disaster:
1 serving
Ingredients:
4 cups sugar
2 cups water
In a medium saucepan, bring the water to a boil. Add sugar. Stir gently over low heat until sugar is fully dissolved. Remove  the  saucepan from heat.  Allow to cool completely. Pour into gas tank. Repeat as necessary.

 

 

정답!