티스토리 뷰
해당 문제는 Dreamhack의 FFFFAAAATTT 문제에 대한 풀이입니다.
설치된 문제 파일: 문제를 설치하니 FFFFFFAAAATTT.001 파일이 생성되었습니다.
.001 확장자는 RAW 데이터로, 손실 압축 없이 원본 데이터를 저장하는 파일 포맷입니다.
FTK Imager로 확인: FTK Imager를 통해 열어본 결과, 파일이 정상적으로 인식되지 않는 것을 알 수 있었습니다.
HxD로 확인: HxD로 해당 파일을 열어보니 MBR(Master Boot Record) 영역이 Fix the Disk!!!!로 덮여 있음을 확인했습니다.
MBR이란?
MBR(Master Boot Record)은 하드 디스크나 USB와 같은 저장 매체의 가장 첫 번째 섹터(512바이트)에 저장된 데이터 구조로, 부팅 프로세스를 시작하는 데 중요한 역할을 합니다.
MBR은 운영체제를 로드할 준비를 하고, 디스크의 파티션 정보를 제공합니다. BIOS에서 로드되는 첫 번째 코드가 포함되어 있으며, 하드 디스크를 초기화하는 데 중요한 요소입니다.
아래는 mbr의 구조이다.
Boot Code는 컴퓨터가 부팅될 때 실행되는 실행 가능한 코드입니다. 운영체제를 로드하거나, 특정 부트 로더를 호출하는 역할을 합니다. Boot Code는 하드웨어와 BIOS 간의 상호작용을 제어하며, OS가 저장된 위치를 파악합니다.디스크의 부팅 문제가 발생하면 이 코드가 손상되었을 가능성이 높습니다.
Partition Table Entry란
이 영역은 디스크의 파티션 정보를 저장합니다. 총 4개의 파티션을 관리할 수 있으며, 각 파티션은 16바이트 크기로 구성됩니다.
각 파티션 엔트리는 다음과 같은 정보를 포함합니다:
부팅 가능 여부(1바이트)
시작 CHS 주소(3바이트)
파티션 유형(1바이트)
끝 CHS 주소(3바이트)
파티션 시작 주소(LBA, 4바이트)
파티션 크기(4바이트)
Signature는
MBR의 마지막 2바이트는 "부트 시그니처"라고 불립니다. 이 값이 0x55AA인지 확인함으로써 디스크가 MBR을 올바르게 포함하고 있는지 판단합니다. 시그니처가 없으면 부팅이 실패하거나 디스크가 제대로 초기화되지 않습니다. BIOS는 이 시그니처를 확인하여 MBR이 유효한지 검증합니다.
다시 문제로 돌아와서 해당 문제는 Boot Code 변조로 의심되기 때문에 백업 BR을 찾아야했다.
아직 어떤파일 시스템인지를 모르기 때문에 fat, ntfs라고 생각하고 접근 했다.
fat란 파일 할당 테이블은 다양한 운영 체제에 대한 기본 컴퓨터의 파일 시스템입니다,
NTFS는 Windows NT의 표준 파일 시스템입니다.그 이후 버전 Windows 2000, Windows XP, Windows Vista, Windows Server 2003, 그리고 Windows Server 2008를 포함됩니다..
복구 과정
파일 시스템 식별: 파일 시스템이 FAT인지 NTFS인지 알 수 없었기 때문에 두 가능성을 모두 고려했습니다.
- FAT: 백업 Boot Record가 6번째 섹터에 위치
- NTFS: 백업 Boot Record가 마지막 섹터에 위치
6번째 섹터를 확인한 결과, 백업 Boot Record를 발견하여 FAT 파일 시스템임을 확인할 수 있었습니다.
MBR 복구: 백업 Boot Record를 복사해 0번 섹터에 붙여넣었습니다. 이후 FTK Imager로 확인한 결과 파일 시스템이 정상적으로 복구된 것을 확인할 수 있었습니다.
복구된 파일 시스템을 탐색하던 중 "noway"라는 의심스러운 압축 파일을 발견했습니다. 그러나 비밀번호가 설정되어 있어 추가적으로 패스워드가를 찾기 위해 파일들을 찾아야 했습니다.
"noway!" 폴더에서 몇 개의 이미지 파일과 함께 삭제된 GG.PNG.swp 파일을 발견했습니다.
swp 파일은 리눅스에서 vi, vim 작업 중 강제 종료 시 생성되는 임시 파일로 이를 통해 GG.PNG 파일을 작업한 흔적이 있음을 알 수 있었습니다.
GG.PNG.swp 파일을 HxD로 열어본 결과, 패스워드로 추정되는 데이터를 확인했습니다. 이를 이용해 "noway" 압축 파일의 비밀번호를 해제할 수 있었습니다.
압축 파일 내부의 "FINISH_FIX.txt" 파일에서 flag를 확인할 수 있었습니다.
FAT 파일 시스템 정리
1. FAT 파일 시스템이란?
- File Allocation Table(파일 할당 테이블)의 약자이며, 디스크 공간을 관리하고 파일의 저장 위치를 추적하기 위해 설계된 파일 시스템입니다.
2. FAT 파일 시스템의 주요 구성 요소
- Boot Sector
- 디스크의 첫 번째 섹터로, 파일 시스템의 설정 정보를 포함합니다.
- File Allocation Table (FAT)
- 파일이 저장된 디스크의 클러스터 체인을 추적하며, 파일이 여러 클러스터에 걸쳐 저장될 경우 다음 클러스터의 주소를 기록합니다.
- Root Directory
- 디스크의 루트 디렉토리에 대한 정보를 저장하는 영역으로, FAT12와 FAT16에서는 고정된 크기를 가지지만 FAT32에서는 클러스터 단위로 동적으로 확장됩니다.
- Data Area
- 파일 데이터가 실제로 저장되는 영역으로, FAT 테이블에서 관리하는 클러스터들이 이 영역에 해당합니다.
3. FAT와 NTFS 비교
파일 시스템 | 최대 파일 크기 | 최대 볼륨 크기 |
FAT32 | 4GB | 2TB |
NTFS | 16TB | 256TB |
- FAT(File Allocation Table, 파일 할당 테이블)은 디스크 공간을 관리하고 파일 저장 위치를 추적하기 위해 설계된 파일 시스템입니다.
'CTF > Dreamhack' 카테고리의 다른 글
Dreamhack - video_in_video (0) | 2025.03.12 |
---|---|
Dreamhack - palm (0) | 2025.03.05 |
Dreamhack - Enc-JPG (0) | 2025.02.15 |
Dreamhack - Basic_Forensics_1 (0) | 2025.01.24 |