윈도우 운영체제에서 실행 파일의 흔적을 알 수 있는 대표적인 흔적으로 프리패치(Prefetch) 파일이 있다. 프리패치 파일을 분석하면 프로그램의 실행 날짜, 실행 횟수, 프로그램 경로 등을 알 수 있는데, 프리패치는 메모리의 한계와 페이징으로 프리패칭 기능의 원래 목적 상실, 운영체제에서 프리패치 파일을 관리하는 정책 상 최대 128개의 프리패치 파일 생성이라는 문제로 인해 빠른 대응과 운이 따라주지 않는다면 프리패치를 통한 실행 프로그램의 정보를 획득하기는 쉽지 않다. 프리패치 파일을 카빙하면 이 부분을 어느정도 해소할 수 있지만 복구라는 것은 상황에 따라 결과물이 다르기 때문에 이를 해결책으로 생각해서는 안된다.


 또, 특별한 권한 없이 프리패치 파일에 접근 할 수 있어 많은 악성코드 또는 도구에서 안티 포렌식 대상으로 삼기도 해 요즘은 사실 프리패치에서 많은 정보를 얻진 못한다. 


 이러한 이유들로 예전에는 분석에 초점을 두지 않았던 슈퍼패치가 다시 분석 대상에 오르기 시작하였다. 슈퍼패치는 프리패치와 함께 윈도우 운영체제에서 사용하는 메모리 관리 기술로, 사용자의 프로그램 사용 패턴(얼마나 자주, 언제, 얼마 동안)을 디비 형태의 파일에 기록하고 추적하는 기술이다. 슈퍼패치의 저장 경로는 다음의 경로로 프리패치와 동일하다.


 - %SystemRoot%\Prefetch


 슈퍼패치 기능은 윈도우 운영체제가 설치된 컴퓨터 환경에 따라 기능이 Off 되어 있을 수 있다. 대표적으로 SSD를 사용하는 컴퓨터에 설치된 윈도우 운영체제라면 슈퍼패치와 프리패치 기능은 기본으로 꺼져 있다. 시스템의 성능을 빠르게 하기 위하여 생겨난 메모리 관리 기술이나 SSD는 저장매체 자체가 메모리이기 때문에 그 속도가 HDD와는 다르게 빨라 메모리 관리 기술이 필요 없는 것이다. 오히려 해당 기술로 인해 시스템의 불필요한 퍼포먼스만 추가하게 되는 셈이다. 슈퍼패치는 다음과 같이 슈퍼패치 서비스가 시작되어야 운영체제에서 슈퍼패치 기능을 실행한다.


[그림 1 - 슈퍼패치 서비스]


 또 레지스트리 설정으로 슈퍼패치 기능을 활성화 시킬 수 있다. 이는 인터넷에 자료가 많으니 참고하기 바란다.


 슈퍼패치일 파일은 저장 경로에 접두어 "Ag"로 시작하는 파일이다. 해당 파일의 구조는 다음 문서를 참고하기 바란다.


 - 슈퍼패치 파일 구조


슈퍼패치 파일에서 포렌식 관점의 필요한 데이터는 정리하면 다음과 같다.


1. 실행 프로그램의 이름

2. 실행 횟수

3. Foreground 실행 횟수

4. 실행 프로그램이 메모리에 로드한 파일

 - dll 파일

 - 압축 파일

 - 문서 파일

 - 데이터베이스 파일

 - 이 외의 파일 및 폴더 등

5. 실행 프로그램의 전체 경로

6. 실행 프로그램의 실행 시간대

 - 평일 오전 6시 ~ 오후 12시 (Weekday 6AM to 12PM)

 - 평일 오후 12시 ~ 오후 6시 (Weekday 12PM to 6PM)

 - 평일 오후 6시 ~ 오전 12시 (Weekday 6PM to 12AM)

 - 평일 전체 (Weekday Global)

 - 주말 오전 6시 ~ 오후 12시 (Weekend 6AM to 12PM)

 - 주말 오후 12시 ~ 오후 6시 (Weekend 12PM to 6PM)

 - 주말 오후 6시 ~ 오전 12시 (Weekend 6PM to 12AM)

 - 주말 전체 (Weekend Global)

7. 타임스탬프


슈퍼패치를 분석할 수 있는 도구는 Superfetchlist 도구와 CrowdResponse 도구가 있다. 입맛에 맞는 도구를 사용하면 된다. 다만, Superfetchlist 도구의 경우 CLI 기반과 GUI 기반의 도구로 나뉘어져 있고 파싱되어 출력된 정보가 CrowdResponse 도구에 비해 많지 않아 필요로 하는 정보를 얻지 못할 수 있다. 다음은 두 도구의 실행 화면이다.


[그림 2 - Superfetchlist 도구 실행 화면 (출처: http://www.tmurgent.com/)


[그림 3 - CrowdResponse 도구 HTML 보고서 (출처: http://digital-forensics.sans.org/)]


[그림 4 - CrowdResponse 도구 csv 보고서 (출처: http://digital-forensics.sans.org/)]


프리패치보다 정보가 많고 데이터베이스 구조이기 때문에 프리패치처럼 정보가 쉽게 날라가지 않아 프리패치보다 정보를 얻을 확률이 더 높고 프리패치 만큼의 정보를 얻을 수 있다. 하지만 환경에 따라 기본 설정이 Off 되어 있는 만큼 기존에 설정을 해줄 필요가 있다.



  1. 익명 2015.02.17 13:57

    비밀댓글입니다

참고문서 : http://digital-forensics.sans.org/blog/2010/11/02/digital-forensics-time-stamp-manipulation/


위 글에서 나온 시간 변화 별 행위 표를 이용하여 간단하게 체크할 수 있는 엑셀 시트를 만들어 보았다.


사용 법은 엑셀 시트 오른쪽 상단에 적어두었다.





시간변화 매크로.xlsx


  1. BlogIcon 해피용 2014.12.24 06:34

    안녕하세요 블로그통해서 왔습니다.
    한수 배우도록 하겠습니다.

  2. 하일리거 2015.04.28 14:37

    엑셀 수식에 의한 결과가 실제 행위와 약간 틀리게 나오는거 같은데요,
    같은 하드디스크 내에서 C드라이브(파티션)와 D드라이브(파티션)를 나눠서 쓰고 있다고 치고,

    ① C드라이브에서 D드라이브로 파일 이동
    ② C드라이브에서 D드라이브로 파일 복사후 원래의 C드라이브 파일 삭제

    ①,②의 결과는 똑같지만 과정은 살짝 다릅니다.
    위 두 가지 경우에서 타임스탬프 관련 엑셀 수식도 다르게 나오는지요?

    결국은 볼륨간 이동이긴 한데, 로컬에서 삭제 행위가 있고 없고의 차이이거든요..
    해석하기에 따라 행위 양상이 다르게 평가될 수 있는 부분이 있어서 질문 드립니다.

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2015.04.30 10:20 신고

      질문 감사합니다.

      두 과정을 엑셀 파일에서는 판별해주지 않습니다. 단지 시간을 비교하여 판단을 하도록 조건식을 만들어두었습니다.

      질문주신 과정들은 결과가 동일하므로 복사된 파일의 시간만으로 두 과정을 판별해내기는 어렵습니다. 다만, 원본 파일의 삭제 시간과 복사된 파일의 시간을 이용해 연관성 판단을 했을 때 두 과정을 판단할 수 있습니다.

      또한 엑셀 파일에 정의된 행위가 이뤄졌을 때 매번 동일하게 시간이 변화하는 것은 아니면 여러 행위가 겹치게 되면 해당 파일에 일어난 행위는 파일의 시간 값만으로 위 엑셀에서 모든 행위를 판단할 수 없습니다.

      이 점 참고하여 엑셀 파일을 사용하시기 바랍니다.

      감사합니다.

윈도우 NTFS 파일시스템의 타임스탬프 변화 표는 여러 블로그와 홈페이지에 연구되어 포스팅되어 있는 것들을 보았지만, 아직까지 리눅스 배포판에 대한 정리 표가 없는 것 같아 정리를 해 보았다.


리눅스 배포판 중 우선 Ubuntu 배포판을 선택하여 Ext3 파일시스템의 시간 변화에 대하여 조사하였고, 아래와 같이 엑셀 파일로 정리하였다.


혼자 정리했기 때문에 빠진 행위나 부족한 점이 있을지도 모르니 피드백을 보내면 피드백을 수렴하여 현재 배포판의 표 수정과 함께 다음 배포판 변화 표에 추가해 정리하도록 하겠다




리눅스 배포판 Time 변화 표 v0.1.xlsx




  1. Favicon of https://blueh4g.tistory.com BlogIcon bughela 2014.10.28 16:07 신고

    우와.. 정말 천재시네요 ㅜㅜ 이런건 어떻게 하나요? ㅠㅠㅠ

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2014.10.30 16:31 신고

      앗, ㅋㅋㅋㅋ 깜짝이얔ㅋㅋㅋ

      포렌식 공부하시면 할 수 있습니당!

Network Forensics Puzzle Contest는 매년 열리는 데프콘에서 이벤트성으로 열리는 챌린지이다. 자세한 대회 소개는 다음 글을 읽어보기 바란다. 

주소  http://maj3sty.tistory.com/1083



[Round 1]

Password : izDEFCONf33ling22?#tSwift


 - 문제 지문

EFCON 2013 Network Forensics Puzzle Contest: From Pyongyang with Love


Thank you for accepting the case. Our Russian comrade has indicated that said documents released by Snowden may contain information about a bribery involving the 2015 Chess Boxing World Title. We've been monitoring Snowden's traffic, and need to know who all is involved. We suspect that there is a list of usernames, and we would like you to tell us who is the second name on the list. 

Use the Round 1 packet capture in this folder to learn more about the case and answer the following question: 


What is the second name on the list of usernames? 


문제 지문을 보면, 스노덴의 트래픽을 감시하여 유저명의 목록을 획득하려고 하는데, 가장 중요하게 얻으려 하는 유저명은 목록 중 두 번째의 유저명이다. 유저명은 텍스트 또는 파일로 스노덴이 다른 사람에게 전송할 가능성이 많으므로, 먼저 전송되는 파일들을 살펴본다.


[그림 1 - SMB 프로토콜로 전송되는 파일 목록]


SMB 프로토콜로 전송되는 파일 오브젝트들을 보면 Documents.zip 파일이 존재한다. 해당 파일을 해제하면 다음과 같이 여러 폴더와 파일들이 나오는데, 파일들의 내용은 모두 base64 인코딩 방식으로 인코딩되어 있어 인코딩을 해제해야만 문서의 내용을 획득할 수 있다.


[그림 2 - 인코딩되어 있는 docx 내용]


그 중 track6.docx 파일의 내용을 디코딩하면 다음과 같은 목록을 획득 할 수 있다.


The Mystery of Chess Boxing:

(usernames)


Mr. Method

Kim Ill-Song

Mr. Razor

Mr. Genius

Mr. G. Killah

Matt Cassel

Mr. I. Deck

Mr. M Killa

Mr. O.D.B.

Mr. Raekwon

Mr. U-God

Mr. Cappadonna (possibly)

John Woo?

Mr. Nas


두 번째 유저명이므로 답은 "Kim Ill-song" 이다.

Answer : Kim Ill-song


[Round 2]

Password : #pshth@twaSteh3@$y1#


 - 문제 지문

We see that North Korea is in the running for hosting next year's title fight. Kim Ill-song might be exactly who we are looking for. We've taken a capture of Mr. Kim Ill-song's network traffic, and we see that he's been communicating with many people from different countries. We suspect that he is among those making bribes, but we need proof. Cash is relatively easy to move, but we've got word that one of the bribes was something else. Voting for the hosting city begins soon. 

Use the Round 2 packet capture in this folder to learn more about the case and answer the following question: 


What city's official is accepting a non-cash bribe?


이번에는 김일성이 제공한 뇌물을 받은 도시의 관계를 찾는 것이다. 패킷의 대부분은 IRC 패킷으로 이루어져 있어 TCP 스트림을 살펴보면 IRC 메시지를 모두 살펴 볼 수 있다.

IRC 메시지 중 PRIVMSG로 'Killah'란 닉네임을 가진 사용자에게 인코딩된 메시지를 전송하는 것이 여럿 보인다. 해당 메시지는 처음에는 base64로 인코딩되어 있으며, 그 다음에는 base32로 인코딩되어 있다. 인코딩을 모두 풀고나면 다음과 같이 md5 hash 값이 보인다.


[그림 3 - base32 디코딩 모습]


획득한 md5 hash 값을 크랙하면 다음과 같은 값이 나온다.

[그림 4 - md5 cracker]


Answer : Caracas


[Round 3]

Password : Ib3tuth0ughtQat@r&&


 - 문제 지문

Thank you for getting that information to us. We can clearly see that the briber, Ill-song, is communicating with the official from Caracas to set up a non-cash bribe. We need more than that, however. We need an idea of what Ill-song is using to bribe the official. Look through this capture and see if you can find out what the non-cash bribe is. Please hurry, the voting is about to begin! 

Use the Round 3 packet capture in this folder to learn more about the case and answer the following question: 


What is the non-cash bribe? 


이번에는 김일성이 제공한 뇌물을 특정하는 문제이다. 패킷 파일을 열어보면 수많은 패킷들이 있어, 프로토콜로 일단 분석 포인트를 찾아보았다. 


[그림 5 - 프로토콜 정렬]


프로토콜을 기준으로 해당 패킷 파일에는 총 3개의 프로토콜이 존재한다. http, https, FTP가 그것인데, FTP의 내용을 보면 zip 파일을 전송하는 것을 볼 수 있다.


[그림 6 - FTP 내용]


zip 파일은 간단히 시그니처 카빙을 통해 추출하면 다음과 같은 파일들을 획득 할 수 있다.



[그림 7 - 카빙한 zip 파일 내용]


'sandofwhich.zip' 파일 말고도 여러 압축 파일들이 존재한다. 해당 파일들을 모두 카빙하면 동일하게 '.jpg' 확장자 파일들이 나오는데, 해당 파일들의 제목을 이어 붙이면 다음과 같은 문장이 만들어진다.


"I can’t in good conscience allow the U.S. government to destroy privacy, internet freedom and basic liberties for people around the world with this massive surveillance machine they’re secretly building."


그림 파일들을 보면 몇개의 파일들은 깨져보이며, 대부분의 파일들이 정상적으로 이미지를 보여주지 않는다. 위 문장의 처음인 "I"와 "building" 문자열의 파일을 보면 그림 파일의 헤더 시그니처와 푸터 시그니처를 가지고 있는 것을 볼 수 있다. 그러므로 각 단어들 제목의 파일 바이너리 데이터를 하나의 파일로 합쳐 보면 다음과 같은 이미지를 만들 수 있다.


[그림 8 - 조립된 이미지]


Answer : Chess Set


[Round 4]

Password : h0wd1dug3tth@t1?%


 - 문제 지문

Unfortunately, you were not quick enough and Pyongyang has been chosen for the Chess Boxing World Title. Furthermore, the chess set you uncovered was one of a very limited set and is incredibly expensive. To be frank, we're not sure how Kim Ill-song has the resources to obtain it. We've begun looking into Ill-song, but we can't seem to find anything on the guy. Rumor has it that he's trying to communicate with a particular individual, but we need to find out who and why. This capture shows him talking with someone else, but we're not sure how or what's being said. We need information on Ill-song before we can move on to his partner. Can you get us the device name of Ill-song's computer? 

Use the Round 4 packet capture in this folder to learn more about the case and answer the following question: 


What is the device name of Ill-song's computer?


김일성 컴퓨터의 이름을 파악하는 문제이다. 패킷 파일을 보면 기본적으로 http, https가 있는 반면에 STUN 프로토콜 패킷이 존재한다. STUN 프로토콜 패킷은 NAT 환경에서의 External IP/PORT를 P2P 단말이 알아볼 수 있도록 해주는 프로토콜이다. P2P 통신에 필요한 프로토콜이므로 컴퓨터에 대한 정보도 얻을 수 있지 않을까하여 해당 프로토콜에 분석 초점을 두고 분석을 시작 해 보았다. 또 문제 지문을 보면 개인적인 통신을 한다고 하니 STUN 프로토콜의 내용이 더욱더 의심이 간다.


문제 지문을 잘 읽어보면 해당 패킷 캡쳐를 통해 김일성이 누군가와 대화를 하고 있다고 한다. 그러므로 김일성의 통신 내용을 캡쳐했다고 볼 수 있다. STUN 프로토콜의 내용을 보면 다음과 같은 문자열이 전송되는 것을 볼 수 있다.


[그림 9 - 전송되는 컴퓨터 이름]


주소가 루프백이므로 주소 앞에 있는 값이 김일성 컴퓨터의 이름이다.


Answer : drpoppins-735


[Round 5]

Password : ur0nar0lln0w!@


 - 문제 지문

One of your colleagues was able to intercept messages between Ill-song and Ann Dercover, a professional chess boxer. The Chess Boxing World Title will be held in Pyongyang next year, and we know that this is only because of a bribe from a "Kim Ill-song". We now believe that this is an alias. Whoever it is has relations with Ann Dercover, and we believe that that Ill-song is using the Title to get her into North Korea. Since "Ill-song" is so determined to contact Ann, we've begun investigating her. So far we've just been tapping her phone and home network traffic. Based on their conversation, we believe that Mr. Ill-song (or whoever he is) will try to contact her in the near future and set up a time to meet. Look through this capture and let us know if you find out a meeting time. Remember, we need the date AND time. 

Use the Round 5 packet capture in this folder to learn more about the case and answer the following question: 


What is the month, date, and time of their meeting? 


어떤 여자와의 만나는 일자를 알아내는 것이 이번 문제의 목표이다. http 패킷의 대부분 내용이 SMS 메시지이다. 하지만, 메시지 대부분은 내용이 없는데, 몇 개의 메시지는 내용이 들어 있어 http 패킷 여러개를 보면 다음과 같은 패킷을 볼 수 있다.


[그림 10 - SMS 메시지]


"still we should be careful. Pay attention. I want to meet in September at 5PM" 이라는 메시지를 보면 September 5PM이란 대략적인 날짜와 시간을 알 수 있다. 하지만 정확한 기간은 다른 메시지들을 본 후 파악이 가능하다. 해당 메시지는 다음과 같다.


[그림 11 - 위치 표시 값]


[그림 11]을 보면 위도/경도 값이 보인다. 위 패킷 다음으로 계속해서 위도/경도 값이 나오는데, 해당 값들을 모두 조회하여 보면 다음과 같은 형태가 된다.


[그림 12 - 위도/경도 조회 결과]


Answer : September 17th at 5 PM


[Round 6]

Password : gud$luk^^0nth1s1


 - 문제 지문

Since the meeting time between Ann and Ill-song isn't for another month, we've continued monitoring their traffic and communications. This information led investigators to a hotel in Pyonyang. After a failed attempt to apprehend Ill-song in his hotel room, a detective found a thumb drive he left behind. One of your colleagues has discovered what appears to be encrypted data on the thumb drive. We don't know if there will be anything useful on it yet, but we think the data might be from an Apple device. If so, there may be network credentials from his personal network on the device. We'd like you to get the SSID from the network he was using. You can do that, right? 

Use the Round 6 zip file in this folder to learn more about the case and answer the following question:


What is the Wifi SSID from the device?


이번 문제는 Wifi SSID를 찾는 문제이다. 이번 문제는 처음에 패킷파일이 바로 주어지지 않는다. 조각난 것처럼 보이는 파일들이 압축되어 있는 압축파일 하나가 주어진다. 하지만 주어진 문제를 풀기전에 이전 문제 파일들로부터 얻어야 할 정보들이 있다.


먼저, Round 1에서 획득 했던 Documents.zip의 압축 파일들 중 "More Document" 디렉터리에 파일들에서 "NorthKorea.jpeg" 파일에 끝에 붙어 있는 "untitled.zip" 파일을 획득한다.


[그림 13 - 압축파일 획득]


압축 파일에는 "broken.py" 파일이 존재한다. 파이썬 스크립트 파일까지 획득 했다면, 이제는 Round 3 문제에서 획득 했던 이미지를 대상으로 스테가노그래피 기법을 이용 해 숨겨진 메시지를 획득해야 한다. 여러번 시도한 결과 "Slient eye" 도구를 이용 해 획득 할 수 있었다.


[그림  14 - 스테가노그래피 해제]


"i2454 2497d2496n2502 2470 2500 2507o2436s2452 2500s2503n2502l2487e2456 2497 2500h2485l2487 2470b2490e2491a2501m2466 2483a2501a2501e2505 2497 2500a2486"


"broken.py" 스크립트는 현재 스크립트로 정상 동작하기 위한 조건을 가지고 있지 않아 조금의 수정이 필요하다. 다음은 수정 전의 스크립트 코드이다.


--------------------------------------------------------------------------------------------------------------

def fileToString(pathToFile):

f = open(pathToFile, "r")

strs = ""

#adds each line of the file to the strs string

for line in f.readlines():

strs+=line

return strs

def ASCII():

#number of ASCII characters

NumOfASCII == 0

#returns list of all ASCII characters

return "".join([chr(i) for i in range(NumOfASCII)])

def sumName(name):

sums=0

#sums the indices in ASCII of all the characters in name

for x in name:

sums+=ord(x

return sums

def indexInFile(password):

indices = []

ASCIIArray = ASCII()

#populates an array of indices to be used by the encoder

for chrs in password:

indices.append(ASCIIArray.index(chrs)+sumName(name)*2

return indices

def indexInASCII(name):

indices = []

ASCIIArray = ASCII()

#split on all non-numeric characters

#remove first index because it is blank

indexList = re.split("[^\d]",encoded)[1:]

#converts encoded characters to ASCII

for index in indexList:

indices.append(ASCIIArray[int(index) - (sumName(name)*2)])

#returns decoded message

return "".join(indices)

def encode(name):

#returns a list of indices to be used for encoding

indices = indexInFile(password,name)

#convert file associated with name to a string

bill = fileToString("./%s.txt"%name)

encoded = ""

#add letter in file plus index of the letter in the file to the encoded string

for index in indices:

encoded+=bill[index]+str(index)


return encoded

--------------------------------------------------------------------------------------------------------------


다음은 수정 후의 스크립트 코드이다.


--------------------------------------------------------------------------------------------------------------

import re


def fileToString(pathToFile):

f = open(pathToFile, "r")

strs = ""

#adds each line of the file to the strs string

for line in f.readlines():

strs+=line

return strs


def ASCII():

#number of ASCII characters

NumOfASCII = 128

#returns list of all ASCII characters

return "".join([chr(i) for i in range(NumOfASCII)])


def sumName(name):

sums=0

#sums the indices in ASCII of all the characters in name

for x in name:

sums+=ord(x)

return sums


def indexInFile(password, name):

indices = []

ASCIIArray = ASCII()

#populates an array of indices to be used by the encoder

for chrs in password:

indices.append(ASCIIArray.index(chrs)+sumName(name)*2)

return indices

                       

def indexInASCII(password, name):

indices = []

ASCIIArray = ASCII()

#split on all non-numeric characters

#remove first index because it is blank

indexList = re.split("[^\d]",password)[1:]

#converts encoded characters to ASCII

for index in indexList:

indices.append(ASCIIArray[int(index) - (sumName(name)*2)])

#returns decoded message

return "".join(indices)


def encode(name):

#returns a list of indices to be used for encoding

indices = indexInFile(password,name)

#convert file associated with name to a string

bill = fileToString("./%s.txt"%name)

encoded = ""

#add letter in file plus index of the letter in the file to the encoded string

for index in indices:

encoded+=bill[index]+str(index)


return encoded


def decode(password, name):

    return indexInASCII(password, name)

--------------------------------------------------------------------------------------------------------------


획득한 문자열을 위 스크립트 코드에 넣고 디코딩하면 다음과 같이 패스워드가 출력된다. 인코딩 키는 "BillOfRights"이다.


[그림 15 - 패스워드 복호화]


복호화 문자열 : DontTry2BruteForceThisPassword


이제부터 이번 라운드 문제를 살펴보도록 하겠다. 이번 문제의 파일들은 모두 조각 형태로 이루어져 있다. 해당 파일들은 iPod touch의 iOS backup 파일들이 암호화되어 있는 파일들이다. 암호화를 풀기위한 도구들의 설치 과정 설명은 생략하도록 하겠다.


iphone-dataprotection 도구를 이용 해 복호화를 시도하면 다음과 같은 화면이 나오는데, 패스워드는 위에서 복호화한 문자열을 사용하면 된다. 


[그림 16 - 복호화]


복호화를 진행하면 다음과 같이 복호화된 파일들이 생성된다.


[그림 17 - 복호화되어 생성된 파일들]


이번에는 복호화된 백업 파일들을 대상으로 키체인을 찾아야 한다. 키체인 역시 iphone-dataprotection 도구의 키체인 스크립트를 사용하면 된다.


[그림 18 - 복호화 완료]


Answer : LeakingSecrets


[Round 7]

Password : !LA$$t0n3!!


 - 문제 지문

The International Chess Boxing Association is reviewing the decision to let Pyongyang host the Title, but we're still not sure of the true indentity of Mr. Ill-song. We did, however, manage to get ahold of a FireTV left behind back in the hotel in Pyongyang. We want you to look for any videos he might have been watching, and see if there isn't a more personal one with intimate information on it. Hopefully something with a meeting location in it. Our sources tell us that this location is probably in the US. We don't need to know the exact location, but we need the state that's mentioned in the video. This is the final task and it is very important, so please don't just try guessing the states starting with Alabama. 

Use the Round 7 file in this folder to learn more about the case and answer the following question: 


What is the name of the state mentioned in the video? 


이번 문제는 동영상 파일에서 언급하는 주 이름을 찾는 문제이다. 문제 파일은 압축파일로, 압축파일을 해제하면 iOS 계열 폴더들과 파일들이 나오는데 "/usr/share/networkFiles/" 디렉터리 아래에 "amazon.pcap" 파일과 "trekking.pcap" 파일이 존재한다. 일단 두 파일을 분석하는데에 초점으로 맞추고 분석을 진행한다.

"trekking.pcap" 파일을 보면 다음과 같이 "jumbled.mp3.zip" 파일을 하나 추출할 수 있다.


[그림 19 - 압축파일 전송 스트림]


압축 파일에는 mp3 파일이 압축되어 있고, 해당 mp3 파일을 들어보면 어떤 여성의 목소리가 들린다. 이외에는 해당 패킷 파일에서 획득할 정보가 없어 다음 패킷 파일 분석으로 넘어간다.


"amazon.pcap" 파일은 무선 네트워크 패킷을 캡쳐한 파일이다. 그러므로 우선적으로 802.11 프로토콜 패킷을 복호화 해야만 한다. 해당 프로토콜의 복호화는 와이어샤크에서 기본으로 제공해주는 기능을 이용해 복호화할 수 있다. 이전 문제에서 획득한 SSID의 비밀번호인 "UncrackableNetwork75"를 이용하여 복호화를 시도한다.


암호화는 WPA-PWD 방식으로 되어 있어, 다음과 같이 키를 추가한 후 복호화를 시도하면 복호화가 완료된다.


[그림 20 - 키 추가]


복호화를 하면 "synergy" 프로토콜이 많이 보인다. "synergy" 프로토콜은 키보드와 마우스를 공유해주는 소프트웨어에서 사용하는 프로토콜로, 패킷을 보면 키보드에서 전송된 문자가 무엇인지 파악 할 수 있다.


techno viking

nyam cat ncat nick cage

cats and bears and stuff

carve 0x250c6

carve 0xa250c5

defcon 22

stewie madT

stuart


대략 위와 같은 문자가 전송된 것을 파악할 수 있는데, 오프셋 카빙을 지시하는 말 같은것이 전송된 것을 볼 수 있다. mp3 파일을 대상으로 오프셋을 이용 해 카빙하면 바이트 분포도가 일정한 파일이 나오는데 이것으로 보아 해당 파일은 Truecrypt 컨테이너 파일로 의심할 수 있었고, 비밀번호는 앞서 획득한 mp3 파일의 음성을 들어보면 획득할 수 있다. 여성이 말하는 단어들은 모두 NATO의 Phonetic code로 해독하면 "True HOOHA."라는 문자열을 획득 할 수 있다. 이를 이용하여 컨테이너 파일을 복호화하면 다음과 같이 비디오를 획득 할 수 있다.


[그림 21 - 비디오 획득]


Answer : New Jersey


이번 챌린지의 주요 문제는 Round 7이 끝이다. 보너스 문제로 Round 8이 존재하며 문제 파일은 Round 4의 문제파일로 진행된다. 해당 문제는 아직까지 챌린지가 진행되고 있어 풀이를 공개하지 못하는 점 이해하기 바란다.



이번 챌린지 문제는 다양한 난이도와 다양한 컨텐츠로 인해 재미있었다는 것이 지금 느끼는 가장 큰 소감이다. 하지만, 힌트 없이는 조금 풀기 어려울 수도 있다는게 개인적인 생각이며, 오프라인으로 챌린지를 진행하게 되면 많이 당황했을 수도 있겠다는 생각이 든다.

이 글을 보는 사람들도 한번쯤은 문제 풀이를 실습할 겸 풀어보는 것도 좋을 것 같다.


  1. 익명 2017.12.17 21:06

    비밀댓글입니다

일전에 올렸던 글에서 사용했던 도구를 공개합니다.


파이썬 2.7 버전으로 작성되었고, 필요한 라이브러리는 압축 파일 내부에 소개되어 있습니다.



jp 배포.zip


'[+] Forensic' 카테고리의 다른 글

시간 변화 별 행위 파악 엑셀 시트  (3) 2014.12.11
[정리] Linux Timestamp Change Table  (2) 2014.09.11
[Tool] Windows JumpList Analysis Tool  (0) 2014.08.11
[Tool] Windows Link Analysis Tool  (0) 2014.08.11
[정리] Havex Artifacts  (0) 2014.06.30

+ Recent posts