본문 바로가기

Forensic Chellenge

[CFReDS Project] DFR-01-RECYCLE(FAT) : Recover one file from emptied recycle bin

문제를 확인해 보면 dfr-01-recycle-fat.dd.bz2 파일을 제공해 주면서 비어있는 휴지통에서 파일 하나를 복구하는 문제입니다.

문제 사이트 :  https://www.cfreds.nist.gov/dfr-test-images.html

 

bz2 로 압축이 되어있는 파일을 bunzip2 명령으로 압축을 해제해 보겠습니다.

 

dfr-01-recycle-fat.dd 파일로 1GB FAT 파일 시스템 파일입니다.

hex값을 한번 확인해 보면 MBR 영역부터 있는것을 확인할수 있습니다. 이는 물리적인 디스크를 이미지 덤프 뜬것으로 확인이 됩니다.

 

사용하지 않는 영역은 아래와 같이 Empty Sector [Number] not used ZZZZZZZZZZ.. 라고 적혀 있습니다.

 

MBR에 적혀있는 파티션 테이블을 확인해 보면 총 3개의 파티션으로 나뉘어 져 있다는 것을 알 수 있고, 각각 0x00, 0x06, 0x0B 의 값을 가지고 있는 것을 확인할 수 있습니다.  이는 FAT12, FAT16, FAT32를 의미 합니다.

 

위의 HEX값에서 각각의 파일 시스템의 VBR 주소()를 확인 할 수 있습니다.

FAT12(0x01) : 0x80 = 128섹터(0x1C6~0x1C9)

FAT16(0x06) : 0x4080 = 16512섹터(0x1D6~0x1D9)

FAT32(0x0B) : 0x14080 = 82048섹터(0x1E6~0x1E9)

 

Size를 확인해 보면 정확히 딱 맞아 떨어지는 것을 확인 할 수 있습니다.

FAT12(0x01) : 0x4000 = 16384섹터(0x1CA~0x1CD)

FAT16(0x06) : 0x10000 = 65536섹터(0x1DA~0x1DD)

FAT32(0x0B) : 0x20000 = 131072섹터(0x1EA~0x1ED)

 

시작 주소와 파티션 크기를 확인해 보면 아래와 같이 딱 맞아 떨어집니다.

128섹터(Starting LBA Addr) + 16384섹터(Size in Sector) = 16512섹터

 

1. FAT12 File System Recover File

 

FAT12 파일시스템 부터 확인해 보면 아래와 같습니다.

 

FAT12 File System의 VBR 에서 BPB 영역에 중요한 내용을 한번 정리해 보겠습니다.

 

섹터당 바이트 수(0x0B~0x0C) : 512바이트 = 1섹터

클러스터당 섹터 수(0x0D~0x0D) : 1클러스터 = 1섹터

FAT Area가 나오기 전에 예약된 영역의 섹터수(0x0E~0x0F) :  8섹터

FAT Area 개수(0x10~0x10) : 2개 

FAT Area의 섹터수(0x16~0x17) : 0x40 = 64섹터

 

위의 데이터를 바탕으로 Root  Directory Entry 를 찾아 보겠습니다.

FAT Area #1 은 VBR인 128섹터에서 8섹터 뒤에 있으므로 136섹터에 있습니다.

 

1개의 FAT Area의 섹터수가 64섹터 이므로 136+64 = 200 섹터에 FAT Area  #2가 존재 합니다.

 

FAT Area #2 도 64섹터 이기 때문에 Directory Entry 200+64 = 264섹터 입니다.

 

Root Directory Entry 에서 값을 확인해 보면 0x01 의 값을 보고 해당 파일이 삭제된 파일인지 아닌지 판단이 가능합니다.

해당 FAT12 파일시스템의 $RECYCLEBIN 에는 삭제된 파일이 없었으나 Root Directory Entry 에는 삭제된 파일이 있었습니다.

 

0xE5 라는 값을 파일명 맨앞에 들어있다면 해당 파일은 삭제된 파일을 의미합니다.

해당 파일을 복구해 보면 파일의 데이터는 0x0B 클러스터에 있고, 파일 사이즈는 0x1000 입니다.

 

또한 $RECYCLEBIN 폴더의 내용을 한번 확인해 보겠습니다.

Root Directory Entry 기준으로 32섹터 이후가 2번 클러스터(296섹터) 입니다.

 

삭제된 파일이 없는것을 확인 할 수 있습니다.

 

2번 클러스터가 296섹터 이고 1클러스터당 1섹터이므로 삭제된 파일이 있는 0x0B = 11클러스터는 296+9 = 305섹터에 있습니다.

 

XBEID.TXT 의 파일 내용이 들어있습니다.

파일 사이즈가 0x1000 으로 8섹터 이기 때문에 파일의 내용은 312섹터 까지 들어있습니다.

 

2. FAT16 File System Recover File

 

FAT16 VBR Offset은 16512섹터 입니다.

 

이번에도 중요한 내용을 정리해 보겠습니다.

섹터당 바이트 수(0x0B~0x0C) : 512바이트 = 1섹터

클러스터당 섹터 수(0x0D~0x0D) : 1클러스터 = 1섹터

FAT Area가 나오기 전에 예약된 영역의 섹터수(0x0E~0x0F) :  4섹터

FAT Area 개수(0x10~0x10) : 2개 

FAT Area의 섹터수(0x16~0x17) : 0xFE = 254섹터

 

FAT Area #1 은 VBR인 16512섹터에서 4섹터 뒤에 있으므로 16516섹터에 있습니다.

 

FAT Area의 크기는 254섹터 이므로 16516+254 = 16770 섹터에 FAT16 Area #2 가 있을 것입니다.

 

Root Directory Entry 는 16770+254 = 17024섹터에 위치 합니다.

 

위의 구조에서도 LFN 파일 구조를 가진 삭제된 파일(0x850060~0x8500BF)이 존재 합니다.

 

$RECYCLEBIN 폴더에 있는 삭제된 파일을 복구하는것이 목적이기 때문에 해당 폴더에 삭제된 파일이 없으면 해당 파일을 복구해 보겠습니다.

$RECYCLEBIN 폴더는 2번 클러스터(17024+32 = 17056섹터)에 존재 합니다.

 

삭제된 파일이 2개가 보입니다.

2개의 파일이 보이는 이유는 하나는 삭제된 파일의 이름이 들어있는 파일인 !IOONCP6.txt 파일 이고 하나는 파일 내용이 들어있는 !ROONCP6.txt 파일입니다.

 

2개의 파일을 전부 카빙해보면 파일명과 파일 내용을 확실하게 확인 할 수 있을 것 같습니다.

!IOONCP6.txt 파일은 0x1C(28) 클러스터, !ROONCP6.txt 파일은 0x0B(11) 클러스터에 있습니다.

 

17056섹터가 2번 클러스터 입니다.

11번 클러스터는 17065섹터에 있습니다.

 

파일 사이즈는 0x1000(8섹터)입니다.

 

28번 클러스터에 들어있는 파일명을 확인해 보겠습니다.

28번 클러스터는 17082섹터에 있습니다.

 

Betelgeuse.txt 라는 것을 알 수 있습니다.

 

3. FAT32 File System Recover File

 

FAT32 VBR Offset은 82048섹터 입니다.

 

이번에도 중요한 내용을 정리해 보겠습니다.

섹터당 바이트 수(0x0B~0x0C) : 512바이트 = 1섹터

클러스터당 섹터 수(0x0D~0x0D) : 1클러스터 = 1섹터

FAT Area가 나오기 전에 예약된 영역의 섹터수(0x0E~0x0F) :  0x187E = 6270섹터

FAT Area 개수(0x10~0x10) : 2개 

FAT Area의 섹터수(0x24~0x25) : 0x3C1 = 961섹터

 

FAT Area #1 은 VBR인 82048섹터에서 6270섹터 뒤에 있으므로 88318섹터에 있습니다.

 

FAT Area의 크기는 961섹터 이므로 88318+961 = 89279 섹터에 FAT16 Area #2 가 있을 것입니다.

 

Root Directory Entry 는 89279+961 = 90240섹터에 위치 합니다.

 

Root Directory Entry에 삭제된 파일이 보입니다.

하지만 $RECYCLEBIN 폴더에 삭제된 파일이 있는지 확인해 보겠습니다.

3번 클러스터에 $RECYCLEBIN 폴더가 있습니다.

 

3번 클러스터는 바로 다음 섹터인 90241섹터에 있습니다.

 

앞에서 이야기 한것 처럼 삭제된 파일이기 때문에 2개의 파일이 보입니다.

!IQCRFK5.txt 파일은 0x1D(29) 클러스터, !RQCRFK5.txt 파일은 0x0c(12) 클러스터에 파일 내용이 있습니다.

 

!RQCRFK5.txt 파일을 먼저 확인해 보겠습니다.

12번 클러스터는 90241+9 = 90250섹터 입니다.

 

파일 사이즈는 0x1000 입니다.

 

29번 클러스터는 90250+17 = 90267섹터 입니다.

 

파일 명은 Bellatrix.txt 입니다.

 

카빙한 파일은 아래와 같습니다.

파일명의 앞에는 카빙을 진행했던 파일 시스템을 작성 했습니다.

'Forensic Chellenge' 카테고리의 다른 글

2020 Magnet Weekly CTF Write Up  (0) 2021.01.13
[CFReDS Project] Hacking Case  (0) 2020.04.12
OtterCTF 2018 write up  (0) 2020.04.03
HDCON Track 1 write up  (0) 2020.03.12
WhiteHat 2015 write up  (0) 2020.03.11