SANS에서는 비정기적으로 네트워크 패킷을 기반으로 한 포렌식 챌린지를 진행하곤 한다. 현재 총 10개의 문제가 출제되었고 작년 크리스마스에는 크리스마스 특별(?) 문제를 출제하였었다. 이번에 풀이해 볼 네트워크 포렌식 문제는 가장 최근에 나온 문제로, 필자도 참여했었던 문제이다. 처녀출전이라 어떻게 해야 입상에 가까워지는지 파악을 하지 못해 입상은 하지 못했지만 나름 시간 내가며 풀어 제출 했다는 것에 의의를 두어야 겠다고 생각한다. 총 6개의 질문과 보너스 질문 한가지 존재하며 보너스 질문은 답변 할 시 추가 점수가 부여 된다. 그럼 이제 질문 하나씩 답변 해보자.(아주 간단히 설명하도록 하겠다. 원래는 분석하고 그 정보를 결합해야 하는 부분들이 많이 존재하지만 글이 길어지므로 핵심만 짚고 넘어가겠다.)


문제로는 위에서 설명하였듯이 두가지의 파일이 주어진다.


quarter-SDHC-snippet.dd – A DD image of a the SDHC card found inside the quarter.

pcap-from-surviving-hard-drive.pcap – A packet capture that you copied off the surviving hard drive.


1. In his conversation with juniorkeyy, how old does Larry initially say he is?

(래리는 juniorkeyy와의 대화에서 처음 자신이 몇살이라고 말하는가?)


먼저 문제 파일로 제공 된 dd image 파일을 FTK 등으로 열어보면 여러가지 삭제 된 그림 파일들과 채팅 로그들이 발견된다.


[그림 1 - 삭제된 여러 파일들]


여기서 채팅 로그를 5개 볼 수 있는데 제일 첫번째 채팅 로그를 보면 다음과 같은 말을 한다.

2:38:17 PM Larry Pesce: I'm 4.

채팅 로그를 조금 더 읽어보면 다음과 같은 말 때문에 혼동이 올 수 있지만 질문에서는 처음 말한 말을 지칭하고 있기 때문에 위 말이 정답이 된다.

2:45:27 PM Larry Pesce: oh right.  yeah, I mean I'm 18. I swear.  4 + 14 = 18 right?

 - Answer : 4


2. What was the filename of the file that had the following SHA256 sum:

(다음 SHA256 값을 가지는 파일 이름은 무엇인가?)

e56931935bc60ac4c994eabd89b003a7ae221d941f1b026b05a7947a48dc9366


사실 이 부분에서는 프로그래밍을 해 간단히 알아내는 방법도 있다. 필자도 그렇게 하였다. 하지만 개학하기전 노트북을 새로 설치하며 자료가 사라져 이번에는 인터넷에 배포 되어 있는 툴을 이용하였다. 간단히 하려면 리눅스등에서 지원하는 sha256sum 명령과 *를 이용해 알아내도 된다. 


[그림 2 - 모든 파일의 SHA256 해시 결과]


하이라이트 된 부분을 보면 질문에서 제시 된 해시 값과 동일한 것을 볼 수 있다.


 - Answer : superstrand.jpg


3. What is the SHA256sum of the photo from the “dd” image that shows Larry taking a bite out of a wireless router?

(dd 이미지에서 래리가 라우터를 먹는 듯한 모습이 있는 사진의 SHA256sum 값은 무엇인가?)

사진들을 보면 래리가 라우터를 먹는 듯한 모습은 2개의 사진으로 존재한다. 혹시 몰라 문제 풀이 당시에는 이 두 사진 모두의 해시 값을 제출하였었다.

[그림 3 - haxorthematrix-has-a-posse.jpg]



[그림 4 - larryeatswrt.jpg]


이 두개의 sha256sum 값을 구해보면 다음과 같다.


 - Answer : e4e2fac9fc41546239d4e534bfe6588e4796f3799befc09b2787f5ad6c75faca(haxorthematrix-has-a-posse.jpg)

                1bdfd9d7445d38fdb7ba5acbb58669cf31c7c568c7aa6e6fcf0c961628f4c32e(larryeatswrt.jpg)



4. What is the SHA256sum of the image that shows zombie Larry taking abite out of a cat?

(래리가 고양이를 먹는 듯한 모습이 담긴 사진의 SHA256sum 값은 무엇인가?)

사진 파일들 중에서는 한가지 파일밖에 존재하지 않는다. 왠지 희망을 북돋아주려는(?) 질문 같다.


[그림 5 - Larry_zombie_cat.jpg]


 - Answer : 9c0a8bc6c3baa2ad7f390ef4e41c3edf3d98a543f492afb50a4bab8700af5766(Larry_zombie_cat.jpg)



5. What is Larry saying as he rocks back and forth? (No spaces or capital letters.)

(래리가 앞뒤로 무엇을 말하는가?)

사실 이 질문은 번역부터 어려웠다. 일단 dd image 파일에는 동영상 파일이 두개 있는데 하나의 파일은 가방을 무식하게 두들겨 가며 여는 동영상이고 하나는 래리로 보이는 사람이 담요를 덮어쓰고 뭐라고 반복해서 말하는 동영상이었다. 아무래도 래리로 보이는 사람이 반복해서 무엇인가를 말하는 동영상이 이 질문과 관련된 동영상 같아서 여러번 반복해서 들어보았다. 조금 느리게 들어보니 "naked hack"이라고 들리는 것을 확인 할 수 있는데, 질문에서 "back and forth" 가 걸렸다. 그래서 "hacknaked" 이라고 문제 풀이 할 때에는 결론을 내렸었다. 하지만 이 결론도 오래가지는 못했다. 아래 질문들을 풀다보면 스테가노그래피에 사용되는 키를 찾을 때 이 질문에서 찾은 답이 키라는 것을 가정하고 여러번(hacknaked, nakedhack, dekankcah 등) 시도를 했었는데 키는 결국 dekankcah 였다.

(답이 확실한지는 아직 모르지만, 답을 제출 할 때에는 제일 신빙성이 있어 보이는 아래 답변으로 제출 하였다.)


 - Answer : dekankcah


6. Where are Paul and John? Report their GPS coordinates:

(Paul과 John은 어디있는가? GPS 좌표를 찾아라)

a) Latitude(위도)

b) Longitude(경도)


dd image에 들어있는 파일들 중 EXIF 포맷의 이미지들이 몇 개 있지만 GPS 정보를 담고 있진 않았다. 이제 네트워크 패킷을 분석 할 차례라고 생각하여 네트워크 패킷을 분석하였다. HTTP 오브젝트 파일들을 보니 다음과 같이 google과 bing을 검색한 흔적이 보였다.


[그림 6 - google 검색 패킷]


참고로 구글의 검색 패킷들은 [그림 6]과 같이 실시간 검색으로 인해 한번의 검색이라도 수많은 패킷들이 생성된다. 실시간으로 계속해서 검색 서버에 쿼리를 날려주기 때문이다.

최종적으로 검색한 결과들을 보면 how do i hide things in pictures 라는 검색을 한 것을 볼 수 있는데 접속한 사이트로 접속을 해보면 7z를 이용한 파일 숨기는 방법이 나열 된 페이지를 볼 수 있다. 분석이 마무리 되어가는 시점에 SMB패킷을 발견했는데 SMB 오브젝트 파일을 검색해 보니 다음과 같이 fragment된 jpg 파일을 볼 수 있었다.


[그림 7 - SMB 오브젝트 리스트]


위 파일들을 저장해 3095byte의 파일을 footer 파일로 정해두고 4096byte 파일 중 헤더 파일을 찾은 뒤 여러 갈래로 조합해 보았다. 조합한 결과는 다음과 같이 참혹하였다.


[그림 8 - 참혹한(?) 조합 결과]


사실 이 이미지는 dd image에서도 찾아 볼 수 있는 이미지이다.(위 3번 질문의 답) 동일한 이미지라고 생각이 되어 다시 한번 조합을 시도해 보았다. 처음에는 SMB 헤더가 들어 있어 안되는 것인줄 알고 SMB 헤더를 제거하고 조합해 보았으나 동일한 결과를 얻었다...(ㅠㅠ) 그 후 다시 이미지를 살펴보았는데 오버랩핑(overlapping) 되는 24byte를 찾을 수 있었다.


[그림 9 - 24byte overlapping]


오버랩핑 된 부분을 한쪽만 지우고 다시 조합하니 아래와 같이 정상적인 이미지를 만들 수 있었다.

[그림 10 - larryeatswrt-with-secretsauce.jpg]


파일 제목과 구글 검색 결과를 연관지어 생각해보면 이미지에 어떠한 것을 숨겼다고 추측 할 수 있다. 일반적으로 이미지에는 스테가노그래피를 이용해 무엇인가를 숨기니 한번 풀어보도록 하자. 먼저 동일한 이미지(3번 질문 이미지)와 해시 값을 비교해 보고 실제로 존재하고 있는지 stegdetect를 이용 해 알아보자.


[그림 11 - md5 해시 값 비교]


[그림 11]을 보면 md5 해시 값이 다르다는 것을 알 수 있다. 조금 더 추측이 정확해져 가고 있다.


[그림 12 - stegdetect]


아무런 옵션 없이 점검하였을 때는 발견되지 않았지만 알고리즘 강도를 높여 점검하니 스테가노그래피가 적용되었다고 나오는 것을 볼 수 있다.


 * 참고 : 알고리즘 강도를 높이면 정상파일도 스테가노그래피가 적용되었다고 오진을 할 수 있다. 절대적인 신뢰성이 있지는 않다.


이제 outguess로 무엇이 숨겨져 있는지 추출해보자.


[그림 13 - outguess를 이용한 숨겨진 데이터 추출]


어떤 데이터인지 확인하고 열어보면 다음과 같다.


[그림 14 - 추출된 데이터]


정상적으로 숨겨진 데이터를 볼 수 있는데 좌표로 보이는 숫자들이 보인다.


 - Answer : a) Latitude(위도) : 6.421402

                 b) Longitude(경도) : 3.441021



BONUS. What is the name of the nearest bar?

(가장 가까운 bar의 이름은 무엇인가?)


이 문제는 6번 질문과 이어지는 질문으로 구글 지도로 위도와 경도를 검색하면 바로 옆에 보인다.


[그림 15 - GPS 검색 결과]

해당 bar 이름을 클릭하면 리뷰가 하나 있는데 읽어보면 확실하다는 감이 온다.


This bar was good, but there were some rowdy guys who would shout "WE'RE THE WORLDS #1 HACKERS" and then laugh loudly. No one understood why it was funny, but they were nice and bought the whole place many rounds of drinks.


 - Answer : Bar Baric


'[+] Hacking > [-] Challenge Report' 카테고리의 다른 글

pCTF 2013 Forensic 150점 풀이  (0) 2013.04.30
CAT Security Forensic 1 Write-Up  (2) 2012.12.07
SANS Forensics Puzzle 10 Write up  (6) 2012.10.14
exploit-exercises Nebula - Level05  (0) 2012.07.27
exploit-exercises Nebula - Level04  (0) 2012.07.27
  1. 2013.04.10 17:58

    비밀댓글입니다

  2. 11 2013.11.17 21:26

    스태가노그래피은 보통 패스워드가 걸려있는데.. 이런문제들은 어떻게 풀어야하나요?

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2013.11.20 09:03 신고

      비밀번호가 있다면 보통 문제 내에 여러 키워드들 중 하나가 스테가노그래피 비밀번호 입니다. 만약 그렇지 않고 브루트포싱 등의 문제라면 그건 문제의 질이 떨어지는 거라 볼 수 있어요 ㅎ

  3. 1234 2013.11.20 13:57

    아..그러쿤요 이번에 디지털범인을 찾아라 포렌식 대회?를 참여를 하고 있는데.

    패스워드로 추정되는 여러 문구가 나오지만 패스워드가 아니더라구요..

    흐미..무슨 퍼즐마추기 대회 같음 ㅠ

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2013.11.20 20:39 신고

      아 대회 참여중이시군요 ㅎ

      건승하길 빌겠습니다 :)

크리스마스 이벤트 대회 이후에 SANS 문제는 쳐다보지도 않았었는데 여러가지 일을 하다가 머리 좀 식힐겸 하여 SANS Forensic Contest 페이지를 접속 해 보았다.

문제들 중 해당 문제가 Defcon 2010에 출제 되었다고 하여 재밌을 것 같아 도전해 보았다.

생각외로 문제 난이도 높지 않아 심심찮게 놀랐었다.

이번 문제는 이전 문제들처럼 질답 형식이 아닌 단 하나의 질문 답변만 있다.

답변이 곧 키 값이 되는 것이다.

문제 다운로드 주소는 아래와 같다.

http://forensicscontest.com/contest07/evidence-defcon2010.pcap

먼저 이 문제의 지문을 보자.

Ann has arranged a rendezvous with Dark Tangent. You are the forensic investigator. Can you figure out their destination? 

간단하게 번역하면 당신은 법의학 전문가 인데 "그들이 가려고 하는 목적지를 증거분석을 통해 알 수 있겠느냐?" 이다.

패킷파일을 열면 무수히 많은 패킷들이 아래와 같이 나온다.

[그림 1 - 증거로 제시된 pcap 파일 내용]

빨간박스만 봐도 무선랜 패킷 캡쳐 파일인 것을 알 수 있다. 하지만 패킷을 분석하기가 쉬워보이지 않는다.

무선랜이면 암호화가 걸려있을 수도 있으니 aircrack-ng로 한번 알아보자.

[그림 2 - aircrack-ng 스캔 결과]

스캔 결과를 보니 WEP 암호화 패킷이라고 알려준다. 친절하게 Key까지 자동으로 찾아 주었다. 우리는 이 key를 이용해 해당 패킷을 복호화 하면 된다. aircrack 패키지에는 복호화 툴도 함께 있는데 그 툴 이름은 airdecap-ng이다.

[그림 3 - 복호화 수행]

복호화가 완료되면 패킷파일이 하나 생성된다. 그 패킷 파일을 보면 IMAP, 프로토콜과 SMTP 프로토콜이 보인다.

이 둘은 전자메일 프로토콜인데 두 프로토콜 패킷들을 보면 어떤 전자메일이 전송 된 것을 확인 할 수 있다.

그 전자메일에는 jpg 첨부파일이 존재하는데 IMAP 프로토콜에서 추출한 jpg 첨부파일 경우 완벽하게 복구가 되지 않고 SMTP 프로토콜에서 추출한 jpg 파일이 완벽하게 복구 된다. 아래는 복구한 메일 내용과 jpg 이미지 파일이다.

[그림 4 - 복원된 메일 내용]

[그림 5 - 복원된 이미지 첨부파일]

메일 내용은 첨부파일에 내용이 목적지 힌트라고 말하고 있다. 첨부파일의 이미지를 보니 5가지의 어떤 제시 문구가 있다. 아무래도 이 제시문구를 기준으로 패킷 파일을 분석하라는 이야기 같다.

각각 하나씩 찾아보도록 하자.

1. App store - App Name
   - 패킷파일에서 HTTP 오브젝트들을 보면 software를 검색한 URL을 볼 수 있다.

[그림 6 - 아이튠즈에 요청한 검색 쿼리 URL]

즉, solitaire 라는 App을 검색한 것이다. 이 이후 URL들은 App과는 별개인 URL 뿐이어서 해당 URL이 제일 유력하다.

2. Podcast Title
   - 팟캐스트는 라디오나 뉴스등을 방송하는 걸 말하는데 HTTP 오브젝트들을 보면 팟캐스트로 추측되는 URL을 볼 수 있다.

[그림 7 - 팟캐스트로 의심되는 URL]

radionews 라는 문자열이 있는 xml 파일인데 해당 파일을 저장하여 보면 아래와 같이 나온다.

[그림 8 - 팟캐스트 title]

팟캐스트가 맞았으며, title은 onion Radio News 이다.

3. YouTube Video Title
    - NetworkMiner로 분석하면 정말 쉽게 찾을 수 있다.

[그림 9 - NetworkMiner의 메시지 파싱기능 결과]

메시지에 나와 있는 주소로 접속하면 아래와 같이 나온다.

[그림 10 - Video title]

Video title은 Cry For Help - Rick Astley

4. Google Earth City Name
    - 이 부분도 NetworkMiner를 이용하면 쉽게 풀린다. NetworkMiner의 Parameter 기능을 이용하면 되는데 일단 google earth 주소를 찾아야 한다. 

[그림 11 - NetworkMiner의 Parameter 기능 결과]

일단 maps.google.com 주소가 google Earth 주소라는 것은 직관적으로 파악 할 수 있다. 그 서버에 q 인자(검색 문자열)로 hacker valley, wv라는 값을 보낸 것을 알 수 있는데 실제로 검색해보면 존재하는 지명이다.

City Name은 hacker valley, wv

5. AIM Buddy Name
    - 이 부분 또한 NetworkMiner를 통해 알 수 있다. Parameter 기능 결과를 보면 아래와 같은 부분을 찾을 수 있다.

[그림 12 -  NetworkMiner의 Parameter 기능 결과]

서버가 aim.net 으로 끝나는 것을 보니 AIM 메신저 서버인듯 하다. 메시지까지 보면 정확하게 추측 했다는 것을 알 수 있다.
일단 서버로 가는 인자만 봐서는 솔직히 어떤게 메신저 대화명인지 모르지만 일단 k에 들어가는 값은 대화명이라고 하기에는 조금 무리가 있어 보인다. 그나마 t 인자값에 들어가는 값이 읽을 수 있어 대화명이라고 할 수 있을 것이다.

즉 AIM Buddy Name은 inter0ptic

결과를 정리하여 보면 아래와 같다.

App store - App Name : solitaire
Podcast Title : onion Radio News
YouTube Video Title : Cry For Help - Rick Astley
Google Earth City Name : hacker valley, wv
AIM Buddy Name : inter0ptic

이렇게만 보면 감이 안오지만 조금만 생각해보면 답이 보인다.

Solitaire
Onion Radio News
Cry For Help - Rick Astley
Hacker valley, wv
Inter0ptic

그들이 가려고 하는 곳은 yes 평창과 라이벌 이었던 Sochi 이다

+ Recent posts