Google에서 포렌식 Challenge 목록을 크롤링 중 소규모 Forensic Challenge를 발견하였다. RootBSD 라는 곳에서 주최한 대회로 2010년에 열린 것 같다. 문제의 난이도는 쉬운 편이며, 참가 인원은 30팀 정도 된다고 한다. 대회 방식은 질/답 형식이 아닌 flag 값을 제일 먼저 정확하게 찾아 주최측에 메일로 인증을 받는 형식이다. 찾아야 할 해쉬 값은 총 10개이며 10개 모두 찾아 이메일로 한번에 보내야 한다.
문제 난이도는 어렵지 않으니 훑어 보기만 해도 될 것이다.
일단 문제 파일을 받아보면 tar.gz로 압축되어 있는데 압축을 해제 해 보면 [그림 1]과 같은 디렉토리들이 보이는 걸 확인 할 수 있을 것이다.
[그림 1 - 문제 목록]
각 디렉토리에 있는 파일들을 분석하여 해쉬 값을 찾아내는 것이 목표이니 Documents 디렉토리를 시작으로 하나하나씩 찾아 보도록 하겠다.
Hash Flag 1.
Documents 디렉토리로 이동해 보면 다음과 같은 파일들이 보인다.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Documents$ ls -al
total 4560
drwxr-xr-x 2 sansforensics sansforensics 4096 2012-06-16 14:55 .
drwxr-xr-x 8 sansforensics sansforensics 4096 2010-07-16 07:04 ..
-rw-r--r-- 1 sansforensics sansforensics 370668 2010-07-15 06:38 03-icar-fractal.pdf
-rw-r--r-- 1 sansforensics sansforensics 1175682 2010-07-15 06:39 fractales.pdf
-rw-r--r-- 1 sansforensics sansforensics 965314 2010-07-15 06:39 fractal.pdf
-rw-r--r-- 1 sansforensics sansforensics 582934 2010-07-15 06:42 Fractal.pdf
-rw-r--r-- 1 sansforensics sansforensics 289244 2010-07-15 06:42 fractals2.pdf
-rw-r--r-- 1 sansforensics sansforensics 1262029 2010-07-15 07:04 World_of_Fractal.pdf
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Documents$ file *
03-icar-fractal.pdf: PDF document, version 1.3
fractales.pdf: PDF document, version 1.4
fractal.pdf: PDF document, version 1.6
Fractal.pdf: PDF document, version 1.4
fractals2.pdf: PDF document, version 1.3
World_of_Fractal.pdf: PDF document, version 1.3
[그림 2 - 03-icar-fractal.pdf]
문제를 만들기 위해 이렇게 정성들여 pdf 파일을 만들 것 같지는 않아 혹시나 하고 원본 파일에 해쉬 값을 집어 넣은건 아닐지 해서 Google 검색 엔진을 이용해 검색을 시도 해 보았다.
[그림 3 - Google 검색 결과]
추측대로 원본 파일이 존재하였다. fractals2.pdf 파일을 존재하고 모든 문서 파일의 원본을 구 할 수 있다. 이제 동일 파일인지 확인하기 위해 md5 해쉬 값을 확인하여 보자.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Documents$ md5sum *
3dc8480a8762d1eb2af09482468b0298 03-icar-fractal_o.pdf
3dc8480a8762d1eb2af09482468b0298 03-icar-fractal.pdf
31fb327fcf1f128a7df102e4b13b7727 fractal-1_o.pdf
31fb327fcf1f128a7df102e4b13b7727 fractal-1.pdf
8dcdaea419993e2fdb7f736d539d94da fractales_o.pdf
8dcdaea419993e2fdb7f736d539d94da fractales.pdf
07528724e9c0aea37656e0c794ce30d7 fractal_o.pdf
07528724e9c0aea37656e0c794ce30d7 fractal.pdf
3801073a72e037ee60b532cb8a1254dc fractals2.pdf
6263b0228a08fe3de7677ad2a5cba621 World_of_Fractal_o.pdf
bdbf94bb16895468409f68ecf9401e02 World_of_Fractal.pdf
Author 부분에 원본에 있던 moochi 부분을 지우고 해쉬 값을 넣은 것을 볼 수 있다.
flag : f1809844eaa1ebe050bd4973a456b150
Hash Flag 2.
Download 디렉토리에 보면 pcap 파일만 존재한다. 간단하게 NetworkMiner로 열어보면 세션이 하나만 존재하는 것을 알 수 있다.
[그림 4 - NetworkMiner]
Files 탭을 보면 파일이 하나 존재하는 것을 알 수 있는데 해당 파일 이름이 flags.rar 이다. 이 파일 내용을 보면 flags.jpg라는 이미지 파일이 하나 압축되어 있는데 비밀번호가 걸려 있어 당장 해당 파일을 열어보지는 못한다. 비밀번호를 크랙해야 하는데 문제 설명 페이지에서는 다음과 같이 힌트를 제시하고 있다.
- Pour le rar c'est quelque chose que j'affectionne tout particulierement en 5 lettres.
Brute Force에 너무 시간을 잃지 않길 바라면서 힌트를 준다 :
- 비밀번호는 소문자로 최대 5글자이다.
- 내가 좋아하는 것들 중 5글자 인 것(?)
두 번째 힌트는 외국인에게는 도움이 되지 않는 힌트이다. 첫 번째 힌트를 기억하고 Brute Force 공격을 하면 [그림 5]와 같이 비밀번호를 얻을 수 있다.
[그림 5 - Brute Force 결과]
rar 파일의 비밀번호는 biere(맥주) 이다.... -_-;;;;
비밀번호를 입력하고 해당 rar 파일을 확인하면 해쉬 값을 확인 할 수 있다.
[그림 6 - 해쉬 값]
flag : 203ec6cfbff8288c0ebeec8ea1e70144
Hash Flag 3 ~4.
이번에는 Image 디렉토리에 있는 이미지 파일들을 분석하여 보자.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Images$ ls -al
total 1612
drwxr-xr-x 2 sansforensics sansforensics 4096 2012-06-16 14:55 .
drwxr-xr-x 8 sansforensics sansforensics 4096 2010-07-16 07:04 ..
-rw-r--r-- 1 sansforensics sansforensics 211705 2010-07-15 06:16 fractale10.jpg
-rw-r--r-- 1 sansforensics sansforensics 32151 2010-07-15 06:16 fractale11.jpg
-rw-r--r-- 1 sansforensics sansforensics 54837 2010-07-15 06:14 fractale1.jpg
-rw-r--r-- 1 sansforensics sansforensics 159526 2010-07-15 06:15 fractale2.png
-rw-r--r-- 1 sansforensics sansforensics 95783 2010-07-15 06:15 fractale3.jpg
-rw-r--r-- 1 sansforensics sansforensics 59793 2010-07-15 06:15 fractale4.jpg
-rw-r--r-- 1 sansforensics sansforensics 407821 2010-07-15 06:15 fractale5.jpg
-rw-r--r-- 1 sansforensics sansforensics 64268 2010-07-15 06:15 fractale6.jpg
-rw-r--r-- 1 sansforensics sansforensics 114952 2010-07-15 06:15 fractale7.jpg
-rw-r--r-- 1 sansforensics sansforensics 72212 2010-07-15 06:16 fractale8.jpg
-rw-r--r-- 1 sansforensics sansforensics 37318 2010-07-15 06:16 fractale9.jpg
-rw-r--r-- 1 sansforensics sansforensics 28468 2010-07-15 06:14 fractale.jpg
-rw-r--r-- 1 sansforensics sansforensics 279641 2010-07-15 06:35 jpg_NDH080408ak.jpg
마지막 파일만 다른 파일들과 다르게 이름이 완전히 다르다. 해당 파일의 정보를 보면 다른 파일들과 사뭇 다르다는 것을 확신 할 수 있다.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Images$ file *
fractale10.jpg: JPEG image data, JFIF standard 1.01
fractale11.jpg: JPEG image data, JFIF standard 1.00, comment: "LEAD Technologies Inc. V1.01"
fractale1.jpg: JPEG image data, JFIF standard 1.02
fractale2.png: PNG image, 600 x 600, 8-bit grayscale, non-interlaced
fractale3.jpg: JPEG image data, JFIF standard 1.02
fractale4.jpg: JPEG image data, JFIF standard 1.01
fractale5.jpg: JPEG image data, JFIF standard 1.01, baseline, precision 0, 4360x498
fractale6.jpg: JPEG image data, JFIF standard 1.01
fractale7.jpg: JPEG image data, JFIF standard 1.02
fractale8.jpg: JPEG image data, JFIF standard 1.01
fractale9.jpg: JPEG image data, JFIF standard 1.02
fractale.jpg: JPEG image data, JFIF standard 1.01
jpg_NDH080408ak.jpg: JPEG image data, EXIF standard 2.2
다른 파일들은 일반적인 이미지 파일구조를 가지고 있는데 비해 해당 파일만 EXIF 구조를 가지고 있다. 오프셋을 하나하나 분석하면 좋겠지만 도구로 분석하는 것도 좋은 방법 중 하나이다.(시간 절약)
인터넷에 온라인으로 EXIF를 분석해주는 Viewer들이 많다. 해당 도구 중 하나를 선택하여 사용 해 보자.
[그림 7 - EXIF Viewer]
썸네일에 해쉬 값 이미지가 있는 것을 볼 수 있다.
flag : f2c7ec9225e9158deb7ca7aad0f3504b
또 file * 명령 결과를 보면 EXIF 이미지처럼 어떤 부가 적인 정보를 가지고 있는 파일 두개가 더 있는데 하나는 코멘트를 나타내고 또 하나는 뭔지 모를 정보를 가지고 있다. 코멘트를 출력한 파일은 별볼일 없어보이므로 뭔지모를 baseline, precision 0, 4360x498 이라는 문자열을 출력한 fractale5.jpg 이미지를 한번 살펴보자. 일단 strings 명령어로 살펴보면 바로 처음에 해쉬 값으로 추정 되는 문자열이 보인다.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Images$ strings fractale5.jpg | more
JFIF
"1dcd64e16d97507052d67a6d0557ee8d
Hash Flag 5.
이번에는 Musics 디렉토리로 가보자. 해당 디렉토리에도 mp3 파일 하나만 존재한다. 해당 파일의 속성 창을 열어 여러가지 정보를 봐 보면 앨범 필드에 base64 값으로 추정되는 값이 보인다.
[그림 8 - 속성 창]
하지만 해당 값을 디코딩 하게 되면 올바른 값이 아니라는 메시지와 함께 디코딩 되지 않는다. strings를 이용해 나머지 base64 값이 있는지 찾아보면 다음과 같이 발견 할 수 있다.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Musics$ strings miel-vie.mp3
VW4gZGUgcGx1cyAzMzA2ZWMwOTdmYz
gzMDgxNzE4MTUxNmVhMjhkZWQzOA==
flag : 3306ec097fc830817181516ea28ded38
Hash Flag 6 ~ 7.
이번에는 Private 디렉토리로 가보자. 해당 디렉토리에는 숨겨진 파일 하나와 텍스트 파일 하나가 존재한다.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Private$ ls -al
total 16
drwxr-xr-x 2 sansforensics sansforensics 4096 2012-06-16 14:55 .
drwxr-xr-x 8 sansforensics sansforensics 4096 2010-07-16 07:04 ..
-rw-r--r-- 1 sansforensics sansforensics 65 2010-07-15 09:00 .facile
-rw-r--r-- 1 sansforensics sansforensics 45 2010-07-15 07:06 priv.txt
얼핏 보면 해쉬 값으로 보이지만 그렇지가 않다. 앞에 있는 문구를 보게 되면 일반적인 단어가 아니라는 것을 알 수 있다. 어떤 규칙으로 인코딩 되어 있는 듯 하다. 인코딩 방법에는 여러가지가 있지만 가장 기본적인 치환 방법을 적용해 보도록 하자.
치환 암호에는 대표적으로 ROT와 시저암호가 존재한다. ROT를 먼저 시도 해보면 해당 문자열이 ROT로 인코딩 되어 있었다는 것을 알 수 있다.(ROT-19)
[그림 9 - ROT-19]
flag : 55fe6c0f75c563099e3d332f5c64e690
또 숨겨져 있던 .facile 파일을 열어보면 해쉬 값이 존재하는 것을 볼 수 있다.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/Private$ cat .facile
Pour commencer le plus facile : 8cd4525b78f0488581316bba7734e758
Hash Flag 8.
이번에는 숨겨져 있는 디렉토리인 .mozila 디렉토리로 가보자. 해당 디렉토리는 firefox의 Profile을 담고 있는 디렉토리인데 직접 분석을 해도 좋고 간단하게 Profile을 복구 하여 어떤 Profile인지 분석해봐도 좋다. 먼저 Profile을 불러와 어떤 Profile인지 확인 해 보도록 하겠다.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge/.mozilla$ firefox --Profilemanager
(firefox-bin:2319): GLib-WARNING **: g_set_prgname() called multiple times
[그림 10 - Firefox ProfileManager]
ProfileManager로 해당 문제의 Profile을 불러와 히스토리를 한번 보면 방문 했던 웹 페이지들을 확인 할 수 있다.
[그림 11 - 히스토리]
방문 했던 페이지 중 flags.txt 페이지가 있다. 해당 페이지로 접속해 보면 404 페이지만 나와 아쉽게도 해쉬 값을 얻을 수는 없다. 참고로 히스토리 기록은 place.sqlite 파일에 기록되어 있다.
Hash Flag 9 ~ 10.
이번에는 마지막으로 남은 FS.dd 파일을 분석해 보자. file 명령어로 살펴보면 일반적인 data 파일로 부트 섹터가 포함된 볼륨의 파일시스템 이미지는 아닌 것 같다. 문자열을 뽑아 보면 다음과 같다.
sansforensics@maj3sty-desktop:~/Desktop/forensics_challenge$ strings FS.dd
...............
lost+found
flags.jpg
.flags.txt.swp
flags.txtt.swx
JFIF
Created with GIMP
...............
root
kevin-laptop
/mnt/flags.txt
U3210#"!
Joli : 2843062153121fed0558613602645f81
[그림 12 - 카빙 jpg]
flag : a84774bcf9e00b394d75e4367472e58e
이렇게 해서 해쉬 값 10개(하나는 환경 상 문제로... ㅠㅠ)를 찾아보았다. 별다른 기술을 요구하는 문제들이 아니기 때문에 실제 대회 당시에는 시간 싸움이었을 듯 하다. 개인적으로 포렌식 문제라고 하기에는 대부분 문제들이 맞지 않지 않나 싶다. 파이어폭스 Profile 문제를 제외하고는 말이다..(사실 대회라고 하기에 많이 부족한 것 같다.)
'[+] Hacking > [-] Challenge Report' 카테고리의 다른 글
exploit-exercises Nebula - Level00 (0) | 2012.07.25 |
---|---|
GitS CTF Packet 200 풀이 (1) | 2012.06.29 |
Defcon 2012 CTF Forensic 400 Write-up (7) | 2012.06.06 |
GitS 2012 - TeL aViv+ (5) | 2012.05.05 |