본문 바로가기
디지털포렌식/기초 이론

[디지털포렌식 - 기초] 애플 파일시스템의 오랜 심장, HFS+ 파헤치기 (feat. APFS 미리보기)

by 컬스터디 2025. 5. 13.
반응형
Old Apple Computer
안녕하세요, 디지털 포렌식의 세계에 오신 것을 환영합니다!
오늘 우리는 애플 컴퓨터 역사의 중요한 한 페이지를 장식했던 파일시스템, 바로 HFS+ (Hierarchical File System Plus)에 대해 깊이 있게 탐구해보려고 합니다.
우리에게는 'Mac OS 확장(Mac OS Extended)'이라는 이름으로 더 익숙한 HFS+는 오랫동안 Mac OS의 핵심 파일 저장 방식으로 사용되었습니다.
"요즘은 APFS 시대인데, 왜 HFS+를 알아야 할까요?"
좋은 질문입니다!
비록 최신 애플 기기들은 APFS를 사용하지만, HFS+로 포맷된 외장 하드디스크, 오래된 Mac 시스템의 디스크 이미지, 혹은 Time Machine 백업 볼륨 등을 분석해야 할 상황은 여전히 존재합니다.
그리고 무엇보다, HFS+의 구조와 특징, 그리고 그 한계를 이해하는 것은 현재 주력 파일시스템인 APFS가 왜 등장했고 어떤 점들이 혁신적으로 개선되었는지 명확히 파악하는 데 아주 중요한 밑거름이 됩니다.
이번 시간에는 HFS+가 어떻게 탄생했고, 그 내부는 어떻게 생겼는지, 그리고 디지털 포렌식 관점에서 흥미로운 '삭제된 파일의 흔적'과 '저널(Journal)'의 비밀을 파헤쳐 보겠습니다.
더불어, 앞으로 우리가 살펴볼 APFS는 HFS+와 비교하여 어떤 점들이 달라졌는지 살짝 맛보는 시간도 가져보겠습니다!

1. HFS+는 어떻게 탄생했고, 무엇이 좋아졌을까요? (HFS와의 비교)

 

HFS+가 등장하기 전, 애플은 HFS(Hierarchical File System)라는 파일시스템을 사용했습니다.
하지만 기술은 발전하고 디스크 용량은 점점 커지면서 HFS는 몇 가지 한계에 부딪혔습니다.
마치 예전의 작은 책꽂이가 늘어나는 책들을 감당하기 어려워진 것과 비슷했죠.
예를 들어, 저장할 수 있는 파일의 총 개수에 제한이 있었고, 파일 이름도 짧게만 써야 했습니다.
그래서 1998년, Mac OS 8.1과 함께 더욱 강력하고 유연해진 HFS+가 등장했습니다!
HFS+는 다음과 같은 중요한 개선점들을 가지고 있었습니다.
  • 더 넓어진 저장 공간 관리 능력:
    이전 HFS보다 훨씬 큰 용량의 하드디스크와 훨씬 더 많은 파일을 효율적으로 관리할 수 있게 되었습니다.
    - 작은 책꽂이가 거대한 도서관 서가로 확장된 셈입니다! -
  • 자유로운 파일 이름:
    한글, 일본어 등 다양한 언어로 된 긴 파일 이름을 최대 255자까지 자유롭게 사용할 수 있게 되었습니다. (유니코드 지원)
  • "안전벨트" 기능, 저널링(Journaling):
    오늘 우리가 주목할 중요한 기능 중 하나입니다!
    파일시스템에 중요한 변경(파일 생성, 삭제, 이동 등)이 발생할 때, 그 내용을 '일지(저널)'에 먼저 기록하여 시스템이 갑자기 멈추거나 전원이 꺼져도 파일시스템이 쉽게 손상되거나 데이터가 뒤죽박죽되는 것을 막아주는 안전장치입니다.
  • 똑똑한 공간 활용:
    디스크 크기에 따라 데이터를 담는 기본 단위인 '할당 블록(Allocation Block)'의 크기를 조절하여, 작은 파일 하나 때문에 너무 큰 공간을 낭비하는 일을 줄였습니다.

 

2. HFS+ 파일 정리함 내부 엿보기: 중요한 서류들은 어디에?

HFS+ 구조

HFS+라는 거대한 '파일 정리함(볼륨 또는 파티션)'은 여러 중요한 '서류철'과 '안내판'들로 체계적으로 구성되어 있습니다.
디지털 포렌식 분석가는 이 구조를 통해 숨겨진 정보의 실마리를 찾아냅니다.

 

① 볼륨 헤더 (Volume Header): 정리함의 '메인 안내판'

HFS+ 볼륨의 가장 앞부분에 위치하며, 이 정리함 전체에 대한 핵심 정보들을 담고 있습니다.
"이 정리함은 'HFS+' 방식이고, 전체 칸 수는 OOO개이며, 중요한 서류철 A는 X페이지에, 서류철 B는 Y페이지에 있다"와 같이 이 볼륨을 이해하는 데 필요한 기본 정보를 제공합니다.
포렌식 분석의 가장 첫걸음은 바로 이 볼륨 헤더를 찾아 그 내용을 확인하는 것입니다.
(`Apple의 HFS+ Manual `에 따르면 `signature`, `blockSize`, `totalBlocks`, 그리고 주요 파일들의 위치 정보 등이 포함됩니다.)
 

② 할당 파일 (Allocation File): '자리 배치도'

정리함의 각 칸(할당 블록)이 현재 '사용 중'인지, 아니면 '비어 있음'인지를 꼼꼼하게 표시해둔 그림판(비트맵)과 같습니다.
파일이 저장되면 해당 칸은 '사용 중'으로, 파일이 삭제되면 '비어 있음'으로 표시됩니다. 
FAT 파일시스템의 File Allocation Table과 비슷한 역할을 수행합니다.
파일이 삭제되어 '비어 있음'으로 표시되더라도, 그 칸에 있던 실제 데이터는 다른 데이터가 그 자리를 덮어쓰기 전까지는 그대로 남아있을 가능성이 매우 큽니다! 여기가 바로 삭제된 파일의 데이터를 찾아낼 수 있는 중요한 단서가 숨겨진 곳입니다.

 

③ 카탈로그 파일 (Catalog File): '종합 도서 목록 카드'

HFS+ 파일시스템의 심장부! 볼륨 내의 모든 파일과 폴더에 대한 상세 정보(이름, 크기, 종류, 생성/수정/접근 시간, 그리고 실제 데이터가 저장된 첫 8개 칸(익스텐트)의 위치 정보 등)를 기록한 '도서 목록 카드' 뭉치입니다.
  • 이 카드들은 B-트리라는 매우 효율적인 방식으로 정리되어 있어 특정 파일을 아주 빠르게 찾아낼 수 있습니다.
  • 파일이 삭제되면 이 목록 카드에서 해당 파일 정보가 제거되거나 '사용 안 함' 표시가 될 수 있지만,
    B-트리 노드 구조의 특성상 그 흔적이 물리적으로 바로 사라지지 않고 남아있을 수 있습니다.

 

④ 익스텐트 오버플로 파일 (Extents Overflow File): '추가 데이터 위치 기록장'

만약 어떤 파일이 매우 커서 데이터 조각(익스텐트)이 8개를 넘어갈 경우, '도서 목록 카드(카탈로그 파일)'에 모든 위치 정보를 다 적을 공간이 부족하겠죠?
그럴 때 이 '추가 기록장'에 나머지 데이터 조각들의 위치 정보를 B-트리 형태로 기록해둡니다.
카탈로그 파일과 익스텐트 오버플로 파일을 함께 확인해야 파일 하나가 디스크 전체에 어떻게 흩어져 저장되어 있는지 완벽하게 파악할 수 있습니다.

 

⑤ 저널 (Journal): '작업 일지' 또는 '안전 기록부' (HFS+ 안정성의 핵심!)

  • HFS+의 안정성을 크게 높여주는 매우 중요한 기능입니다.
    파일 정리함에 어떤 변경(파일 생성, 삭제, 이름 변경, 이동 등)이 생기기 전에, "앞으로 이런이런 작업을 할 예정임!"이라고 그 작업 내용을 미리 상세하게 기록해두는 '작업 일지'와 같습니다.
  • 이 '작업 일지'는 보통 디스크의 특정 예약된 공간에 순환 버퍼(오래된 기록부터 새 기록으로 덮어쓰는 방식) 형태로 기록됩니다.
  • 만약 파일을 옮기거나 이름을 바꾸는 등 중요한 작업을 하다가 갑자기 컴퓨터 전원이 나가버려도, 다시 켜졌을 때 이 '작업 일지(저널)'를 보고 "아, 아까 이 작업을 하다가 멈췄었지! 마저 끝내거나 안전하게 이전 상태로 돌려야겠다!"라고 판단하여 파일시스템이 뒤죽박죽되는 것을 막아줍니다.
디지털 포렌식 관점의 보물창고!
바로 이 저널에 최근에 어떤 파일들이 어떻게 변경되었는지, 심지어 삭제된 파일의 마지막 모습(이름, 크기, 데이터 위치 정보 등)에 대한 매우 구체적인 단서가 고스란히 남아있을 수 있습니다. 

3. HFS+에서 파일이 만들어지고 지워질 때, 그리고 APFS와의 차이점 살짝 엿보기

HFS+에서 파일이 생성되거나 삭제될 때, 내부적으로 어떤 일들이 벌어질까요? 그리고 미래의 APFS는 이런 점들을 어떻게 바꾸었을까요?

새 파일 "나의 비밀일기.docx" 저장하기 (HFS+ 방식):

  1. (저널링) "작업 일지(저널)"에 기록:
    "새 파일 '나의 비밀일기.docx' 만들 준비! 내용은 OOO이고, 빈칸 XXX에 저장할 예정!"이라고 저널에 먼저 상세히 기록합니다.
  2. "자리 배치도(할당 파일)" 업데이트:
    일기 내용을 저장할 빈칸을 찾아 '사용 중'으로 표시합니다.
  3. "도서 목록 카드(카탈로그 파일)" 작성:
    "나의 비밀일기.docx"라는 새 카드를 만들고, 파일 이름, 크기, 만든 날짜, 그리고 실제 일기 내용이 저장된 칸의 위치 정보(익스텐트) 등을 꼼꼼하게 기록합니다.
  4. (저널링) "작업 완료!" 표시:
    실제 파일시스템에 모든 변경 사항이 안전하게 적용되면, 저널에 "방금 그 작업 성공적으로 끝났음!"이라고 표시합니다.

"나의 비밀일기.docx" 파일 삭제하기 (HFS+ 방식):

  1. (저널링) "작업 일지(저널)"에 기록:
    "파일 '나의 비밀일기.docx' 지울 준비! 이 파일은 원래 칸 XXX에 있었고, 관련 카드 정보는 YYY였음!"이라고 삭제 직전의 중요한 메타데이터 정보를 저널에 먼저 기록합니다.
    이 정보는 포렌식 분석가가 삭제된 파일의 단서를 찾는 데 매우 중요합니다.
  2. "도서 목록 카드(카탈로그 파일)" 변경:
    "나의 비밀일기.docx" 카드 정보를 '사용 안 함'으로 표시하거나 B-트리에서 연결을 해제합니다. 하지만 이 카드 정보 자체가 물리적으로 바로 사라지는 것은 아닐 수 있습니다.
  3. "자리 배치도(할당 파일)" 변경:
    "나의 비밀일기.docx" 파일이 사용하던 칸들을 "이제 비었음"이라고 표시합니다.
  4. (저널링) "작업 완료!" 표시:
    실제 메타데이터 변경이 완료되면 저널에 해당 트랜잭션이 완료되었음을 알립니다.
중요!
데이터는 아직 그곳에! 파일을 삭제해도, 실제 일기 내용이 담겨있던 디스크 칸들은 청소되지 않고 그대로 남아있습니다.
다른 새 파일이 그 자리를 덮어쓰기 전까지는 말이죠!

 

APFS는 어떻게 다를까? 

  • Copy-on-Write (CoW)의 마법:
    APFS는 데이터를 수정하거나 삭제할 때, HFS+처럼 기존 데이터를 직접 건드리거나 저널에 변경 '예정' 사항을 기록하는 대신, 변경된 내용을 아예 새로운 공간에 기록하고 이전 데이터는 그대로 남겨두는 'Copy-on-Write' 방식을 주로 사용합니다. 
    이는 마치 문서 수정 시 원본은 그대로 두고, 사본에 수정 사항을 적용한 뒤 새 버전으로 저장하는 것과 비슷합니다.
  • 스냅샷 (Snapshots):
    APFS는 특정 시점의 파일시스템 상태를 '찰칵' 사진 찍듯 저장해두는 스냅샷 기능을 기본으로 제공합니다.
    삭제된 파일이나 변경 전 파일이 이 스냅샷 안에 고스란히 남아있을 수 있어, 마치 타임머신처럼 과거의 데이터를 들여다볼 수 있게 됩니다. 
  • 공간 공유 (Space Sharing):
    APFS의 컨테이너와 볼륨 개념은 HFS+의 고정된 파티션보다 훨씬 유연하게 디스크 공간을 활용합니다. 

 

4. 삭제된 파일의 흔적을 찾아서: HFS+ 포렌식 탐험 (저널의 역할 재조명)

HFS+에서 삭제된 파일을 찾는 것은 마치 고고학자가 유적을 발굴하는 것과 같습니다. 특히 '저널'은 매우 중요한 발굴 도구가 됩니다.

어디를 살펴봐야 할까요?

  • "자리 배치도(할당 파일)"에서 '빈칸' 뒤지기 (파일 카빙):
    할당 파일에서 '비어 있음'으로 표시된 영역을 직접 스캔하여 의미 있는 데이터 패턴(예: JPG 파일의 시작 표시)을 찾아 삭제된 파일의 내용을 복구하는 방법입니다. 하지만 파일 이름이나 원래 위치 같은 메타데이터는 알기 어렵고, 파일이 여러 조각으로 흩어져 있었다면(단편화) 완벽한 복구가 어려울 수 있습니다.
  • "도서 목록 카드(카탈로그 파일)" 뭉치 속 남겨진 정보:
    카탈로그 파일의 B-트리 노드 내부에는 삭제되었지만 아직 완전히 덮어쓰이지 않은 과거 파일 레코드의 흔적이 남아있을 수 있습니다.
  • "작업 일지(저널)"의 결정적 단서! :
    • 앞서 설명했듯이, 저널에는 파일 시스템 메타데이터의 변경 사항이 트랜잭션 형태로 기록됩니다.
      파일이 삭제될 때, 삭제되기 직전의 카탈로그 파일 레코드익스텐트 오버플로 파일 레코드의 내용(파일 이름, 경로, 크기, 생성/수정 시간, 그리고 가장 중요하게는 파일 데이터가 실제로 저장되어 있던 디스크 상의 위치 정보인 익스텐트 목록)이 저널 트랜잭션 안에 포함되어 있을 가능성이 매우 높습니다.
    • 포렌식 분석가는 이 저널을 면밀히 분석하여 삭제된 파일의 메타데이터를 확보하고, 이를 바탕으로 실제 데이터가 저장되었던 디스크 위치로 직접 찾아가 데이터를 복구할 수 있습니다.
      이는 단편화된 파일 복구에도 매우 유리하게 작용합니다.
하지만 기억하세요! 저널은 크기가 제한된 순환 버퍼입니다. 즉, 오래된 기록은 새로운 기록으로 덮어쓰입니다.
따라서 저널을 통한 복구는 주로 비교적 최근에 삭제된 파일에 대해 효과적입니다.
  • 시간 정보의 활용 (MAC 타임):
    파일이 언제 만들어지고(Birth), 언제 마지막으로 고쳐졌고(Modified), 언제 마지막으로 열어봤는지(Accessed), 언제 메타데이터가 변경되었는지(Changed) 등의 시간 정보는 사용자 활동을 시간 순서대로 재구성하는 데 매우 중요한 단서가 됩니다.
    (HFS+는 초 단위 정밀도의 타임스탬프를 사용합니다. APFS는 이보다 훨씬 정밀한 나노초 단위를 사용하죠!)
  • Mac OS X 특정 아티팩트:
    `.DS_Store` 파일(폴더 보기 설정 등), 사용자 홈 디렉터리 내 다양한 설정 파일(plist), 로그, 캐시, 그리고 휴지통(`.Trashes` 폴더) 등 Mac OS X 환경 고유의 아티팩트들도 중요한 증거가 될 수 있습니다.

5. HFS+의 시대는 갔지만, 그 지혜는 여전히 우리 곁에

비록 최신 macOS는 APFS라는 더욱 진보된 파일시스템을 사용하고 있지만, HFS+로 포맷된 외장 하드디스크, 오래된 Mac 시스템의 디스크 이미지, 또는 Time Machine 백업 볼륨(일부 구형) 등을 분석해야 할 상황은 디지털 포렌식 분야에서 여전히 발생할 수 있습니다.
특히 HFS+의 저널링 메커니즘과 이를 활용한 삭제 파일 복구 기법에 대한 이해는 분석의 깊이를 더해줄 것입니다.
HFS+의 구조와 특징, 그리고 그 한계를 이해하는 것은 현재 주력 파일시스템인 APFS가 왜 등장했고 어떤 점들이 혁신적으로 개선되었는지 더욱 명확하게 파악하는 데도 큰 도움을 줍니다.

 

6. 마치며: 과거를 알아야 현재가 보인다, HFS+ 탐험 완료! 

오늘은 애플 Mac OS의 오랜 동반자였던 HFS+ 파일시스템에 대해, 특히 그 구조와 저널의 비밀, 그리고 삭제된 파일의 흔적을 추적하는 방법에 대해 자세히 알아보았습니다.
HFS+는 단순한 파일 저장 방식을 넘어, 데이터의 안정성과 복구 가능성에 대한 고민이 담겨 있는 시스템이었습니다.
디지털 포렌식의 세계에서는 아주 작은 흔적 하나가 사건 해결의 결정적인 열쇠가 되기도 합니다.
HFS+의 내부를 들여다보는 경험은 여러분이 미래의 어떤 디지털 증거와 마주하든, 그 본질을 꿰뚫어 보는 통찰력을 기르는 데 중요한 밑거름이 될 것입니다.
이제 HFS+에 대한 이해를 바탕으로, 다음 시간에는 더욱 강력하고 현대적인 애플의 파일시스템, APFS의 세계로 함께 떠나보겠습니다!
반응형