본문 바로가기

Project

(6)
FAT32 분석 - 2 이전에 살펴본 파일들은 파일의 이름 길이와 데이터가 작았기 때문에 Data Area에 대한 분석이 부실했다.따라서 아래의 파이썬 코드를 통해 20자의 파일 이름과 2MB의 크기를 가지는 파일을 생성했다.import osdef create_test_files(base_path, num_files=5, name_length=100, content_size=1024*1024): os.makedirs(base_path, exist_ok=True) for i in range(num_files): filename = f"{str(i).zfill(2)}_" + "A" * (name_length - len(str(i)) - 3) + ".txt" filepath = os.path.jo..
FAT32 분석 - 1 초기 설정USB에 FAT32 볼륨을 생성하였다.이후 해당 볼륨에 "Hello FAT32"라는 내용을 담은 test1.txt 파일과, "Go to trash"라는 내용을 담은 test2.txt 파일을 각각 저장하였다.이 중 test2.txt는 삭제하였다. 이제 해당 볼륨을 FTK Imager를 통해 이미징 하자. 위 이미지들을 하나로 합치기 위해 아래의 명령어를 입력한다.copy /b USB_FAT.001 + USB_FAT.002 + USB_FAT.003 USB_FAT_combined.img 제대로 이미징이 되었는지 확인하기 위해 FTK Imager에 넣어서 파일들을 보자. 생성한 파일들이 보이는 것으로 보아 이미징은 제대로 되었다.이제 이 이미지를 HxD로 분석하자. FAT32의 구조는 아래와 같다.Re..
Non-Resident의 $DATA 확인하기 700 Byte 이상의 파일 크기일 경우 Non-Resident가 설정되어 엔트리 외부에 데이터가 저장된다. 대부분 파일의 데이터는 Non-Resident이므로 이 위치를 찾아가는 방법을 아는 것이 중요하다. 기존에 생성한 test1과 test2는 700 Byte 이하이므로 이를 테스트하기 어려워 다음과 같은 명령어를 통해 test3을 생성하였다.with open("test3.txt", "w") as f: for i in range(1, 1001): f.write(f"TESTDATA-{i:08d}\n") test3가 있는 MFT Entry는 다음과 같다. 이 중 $DATA 속성을 살펴보자.0x08 오프셋에 위치한 Non-Resident 플래그가 1로 설정되어 있으므로 $DATA는 Non..
MFT Entry 개수 찾기 (Run List - Cluster Run) NTFS Parser를 구현하기 위해 MFT Entry의 개수를 찾아야 한다. MFT Entry의 개수는 $MFT의 $Bitmap 속성을 통해 확인할 수 있다. 0x400001B0부터 $Bitmap의 헤더가 시작된다. 0x08 오프셋에 위치한 0x01 값을 통해 Non-Resident임을 확인할 수 있다. 따라서 실제 데이터는 MFT Entry 외부에 저장되므로 Run List를 통해 계산해봐야 한다. 0x04~0x07 오프셋에 위치한 Attribute Size가 0x50인 것을 알 수 있고, 0x20~0x21 오프셋에 위치한 Offset to Run List가 0x40인 것을 알 수 있다. 따라서 0x40부터 0x4F까지가 Run List가 된다.Run List는 위와 같이 계산할 수 있다. 31 01..
NTFS 분석 포맷한 직후의 USB를 FTK Imager를 통해서 이미지로 만든다. FTK Imager는 최대 1.5GB 단위로 파일을 쪼개 저장한다. 따라서 4GB의 파티션만 이미징하기 때문에 아래 사진과 같이 총 3개의 파일이 생성되며, .txt 파일은 이미지 세트에 대한 메타데이터가 적혀 있다. FTK Imager에서는 .001 파일만 선택해도 자동으로 모든 파일을 합쳐서 하나의 완성된 디스크 이미지로 본다.하지만 NTFS Parser를 만들 때를 위하여 하나로 합치는 방법을 사용하자.copy /b USB_Initial_NTFS.001 + USB_Initial_NTFS.002 + USB_Initial_NTFS.003 USB_Initial_NTFS_combined.img cmd에서 위 명령어를 통해 하나의 파일로 ..
ZUICY 버그 바운티 보호되어 있는 글입니다.