주어진 파일은 NTFS 파일시스템을 가진 이미지파일이다.
어떤 파일이 파일시스템에서 마운팅 되어, 파일로 인식되기 위해서는
MFT영역의 MFTEntry에 메타데이터가(파일이름, 생성시간,...등) 들어있고,
- Resident 파일이라면( $Data 속성 header 다음 contents영역 )안에 // 대부분 700바이트 이하의 경우 resident (항상은 아님)
- Non-Resident 파일이라면 클러스터 런을 통해서 , DATA 영역의 클러스터를 찍어줘야한다.
DATA area에는 클러스터 단위로 파일이 저장되어 있다. 클러스터 런에 따라서!
따라서 해당 파일에 유니코드로 MFT가 있는지 검색해서 $MFT 파일이 있는지 봤더니 없었다.
그런 경우에는 파일 카빙을 통해 사진 파일이 있는지 확인해야 한다. // 참고 1) 데이터복구 - file carving이란
File Digger라는 툴을 사용해서 카빙을 한다.
플래그를 가진 PNG 사진 파일을 발견했다.
클러스터런이 끊겨있는데, MFT정보가 사라져서 그런것 같다.
PNG 구조를 보면, 청크 단위로 되어 있는데,
한 청크당
CHUNK = length(4byte) + chunk type(4byte) + chunk data (length만큼byte) + CRC (4 byte)
의 구조를 가지고 있다.
시그니쳐와, 클러스터 크기로 유추해서 경우의 수를 줄인 뒤, 여러 개 해보면 될 것 같다.
해당 파일을 HxD로 열면, VBR에서 SectorPerCluster가 2이므로
한 클러스터는 1024byte(0x400)이다.
HxD에서 "IDAT"를 검색하니, 여러개가 나오고
"IEND"로는 하나의 검색결과가 나온다.
2) IDAT 797050+8 ffa5 ok
3) IDAT 7A7000+8 FFF4 ok
4) IDAT 19E96400+C FFF4
~19E97000 BFC
~19E97900 14FC
NULL
19E9A400~ F004 해당 CRC는 "87 DB 8B 0D" (F000)
5) IDAT 19EA9400 A561 해당 CRC는 "8D B9 90 31"
다행히, 2)와 3) 그리고, 3)과 4) 사이에는 티나는 공백이 있어서 그대로 이어붙이니 그림파일이 늘어났다.
4)와 5) 사이에는 공백을 지우고 이어주는 것만으로 사진파일이 생기지 않았다.
0x500의 쓰레기 값이 있었는데, (클러스터 기준으로 기록되기 때문에 해당 파일이 아닌 바이트가 있다.)
클러스터 기준으로 자른다음, CRC 영역을 확인해서 어떤 클러스터에 있는 값이 사진파일인지 확인해 준다. // 참고 2) CRC란
PNG Chunk에서 crc는 name과 data로만 계산한다.
그렇게 찾고나서 "IEND"까지 연결하면
이렇게 플래그가 뜬다.
참고1) 파일카빙이란 // http://hy00un.tistory.com/107 |
참고 2)) CRC란 암호화 알고리즘의 하나로, http://mwultong.blogspot.com/2006/06/qna-zip-rar-crc32-crc-crc.html // crc 영역 http://schaik.com/png/pngcsum.html // PNG에서 crc는 name과 data로만 계산한다. http://noteroom.tistory.com/entry/PNG-%ED%8F%AC%EB%A9%A7-1 // png 포맷
|
'FORENSIC' 카테고리의 다른 글
[문제풀이-NTFS]170325_SuNiNATaS_Terrorist(180) (0) | 2017.03.25 |
---|---|
[문제풀이-NTFS]170320_서트워게임 Damaged USB(150) (0) | 2017.03.20 |
저장장치 관련 용어 정리(디스크, 볼륨, 파티션, 파일 시스템) (1) | 2016.08.10 |