2013/03/07

Codegate Forensic 500 문제를 풀기 위해 알아두어야 할 개념


지난주에 Codegate Prequal이 있었는데요..
Forensic 500번 문제가 VBR과 MFT Entry 정보를 통해 이미지 파일을 복구하는 문제였습니다.
어설픈 지식으로 인해 문제를 풀지는 못하였지만 이제라도 알게 되었으니 다행이라 생각되며
잊어버리지 않기 위해 기록해두었습니다.

아래 이미지가 복구해야하는 문제의 그 이미지입니다.


전체적으로 잘 서술된 내용은 링크를 걸어두겠습니다.

Codegate 2013 Forensic 500 by Deok9

그림으로 그려봤습니다. ( 그림으로 그려야 이해가 잘되는 1人입니다. ;-) )



문제의 핵심은 속성의 내용이 너무 커서 MFT Entry에 다 포함시키지 못할 경우 추가적인 클러스터를 할당 받아 저장하는 방식인 Non-resident 속성에 대해서 알고 있냐 없냐 였습니다.
마지막 부분에 있는 22 3D 02 B7 06 22 DF 00 F3 28 22 78 01 56 E4 이 여러 군데 흩어져 있는 파일의 내용에 대한 길이와 오프셋을 나타내고 있습니다. (Cluster Runs 또는 Data Runs)

foremost와 같은 툴을 이용해서 카빙을 하면 첫번째 런리스트에 있는 내용만 카빙이 되어 정상적인 이미지가 보이지 않으며 결국 이 분할된 데이터들을 합쳐서 정상적인 파일을 만드는 것이 문제의 목적이었습니다.

Cluster Runs(Data Runs)에 대한 개념은 아래 링크에서 확인해보시면 잘 이해가 가실겁니다.
(thanks Deok9)

http://www.reddragonfly.org/ntfs/concepts/data_runs.html


추가적으로 참고할 사이트들입니다.

http://www.pc-3000flash.com/eng/help/help_information/ntfs/data_runs.htm
http://www.writeblocked.org/resources/NTFS_CHEAT_SHEETS.pdf


굳이 CTF를 위한 지식이 아닌 포렌식 조사 과정에서 결정적인 증거자료가 될 수 있는 파일들이 분할되어 있을 경우 런리스트에 대한 개념이 잡혀 있다면 파일을 정상적으로 복구해낼 수 있을 것입니다.