안녕하세요. 도깬리 포렌식스 입니다.
오늘은 Zip 파일 복구에 대하여 알아 보겠습니다. 며칠째 계속 비가 내리네요. 기운 잃지 마세요.
Zip 포맷 개요
ZIP 포맷의 개발자: Phil Katz
OS 안에 ZIP 파일을 만들고 풀 수 있는 기능이 내장되어 있습니다.
- Windows Explorer
- Mac OS X Finder
파일의 형식
ZIP 포맷에 대한 정보는 KPWARE 사이트에서 APPNOTE.txt 다운받아 확인 가능합니다.
ZIP 파일에 포함된 모든 개별 파일은 각각의 로컬 파일 헤더와 중앙의 디렉토리 헤더를 모두 갖습니다.
각각의 파일에 대한 압축된 데이터는 각 파일의 로컬 파일 헤더의 바로 다음에 위치합니다.
‘중앙의 디렉토리 헤더’가 있기 때문에 ZIP 파일에 포함되었던 개별 데이터가 삭제되거나 손상되어도 디코딩이 가능합니다.
- 파일의 시그너처: PK
로컬 ZIP 파일 헤더의 구조 (기본 구조임)
Offset | Length | Description |
0 | 4 bytes | Local file header signature (0x04034b50) |
4 | 2 bytes | Version needed to extract |
6 | 2 bytes | General purpose bit flag |
8 | 2 bytes | Compression method |
10 | 2 bytes | Last-modified file-time |
12 | 2 bytes | Last-modified file-date |
14 | 4 bytes | CRC-32 |
18 | 4 bytes | Compressed size |
22 | 4 bytes | Uncompressed size |
26 | 2 bytes | File path/name length |
28 | 2 bytes | Extra field length |
30 | Variable | File path/name |
Variable | Variable | Extra field |
중앙 디렉토리 파일 헤더 시그너처(Central Directory File Header Structure)
Offset | Length | Description |
0 | 4 bytes | Central file header signature (0x02014b50) |
4 | 2 bytes | Version made by |
6 | 2 bytes | Version needed to extract |
8 | 2 bytes | General purpose bit flag |
10 | 2 bytes | Compression method |
12 | 2 bytes | Last modified file-time |
14 | 2 bytes | Last modified file-date |
16 | 4 bytes | CRC-32 |
20 | 4 bytes | Compressed size |
24 | 4 bytes | Uncompressed size |
28 | 2 bytes | File path/name length |
30 | 2 bytes | Extra field length |
32 | 2 bytes | File comment length |
34 | 2 bytes | Disk number start |
36 | 2 bytes | Internal file attributes |
38 | 4 bytes | External file attributes |
42 | 4 bytes | Relative offset of local header |
46 | Variable | File path/name |
Variable | Variable | Extra field |
Variable | Variable | File comment |
로우 레벨 ZIP 데이터 복구
압축 파일이 손상되었을 때에도 로컬 ZIP 파일 헤더를 이용하여 개별적으로 압축된 파일에 대한 선별적 복구가 가능합니다.
로컬 및 중앙의 디렉토리 ZIP 파일 헤더는 하나 이상의 파일이 특정한 장치에 존재했었음을 의미합니다.
File Carver EnScript를 이용하면 삭제된 ZIP 파일을 복구 가능합니다.
ZIP Index Entry Finder EnScript 모듈 사용하기
로컬, 중앙 디렉토리 파일 헤더를 찾아 디코딩하고, 그것을 자동으로 목록화하는 기능이 있습니다.
파일 이름, 마지막으로 쓰여진 날짜, 파일 크기 등에 대한 데이터를 엑셀형식으로 내보낼 수 있습니다.
각각의 헤더에서 CRC-32 값도 추출 가능합니다.
CRC-32 값을 이용하여 문서의 동일성을 검증할 수 있습니다.
다만, 암호가 걸린 ZIP 파일에 대한 처리 기능은 없습니다.
위 그림에서 오프셋 2336256 파일의 경우, ZIP 파일 처럼 보이지만 완전한 것이 아닙니다.(압축을 풀면 에러가 남) 왜냐하면 압축된 데이터 다음에 이어지는 로컬 헤더에 불과하고, 중앙 디렉토리 레코드가 없기 때문입니다.
WinRAR는 한꺼번에 여러 개의 압축에 대한 손상을 복원할 수 있습니다.
감사합니다. 오늘도 즐거운 하루 되세요.
"좋아요"와 "구독하기"는 힘이 됩니다.
참고문서 : EnCase Advanced Forensics
'EnCase' 카테고리의 다른 글
[EnCase] 윈도우 검색 흔적(Windows Search) 분석 (1) (0) | 2022.08.07 |
---|---|
[EnCase] Zip 파일 복구 (2) (0) | 2022.08.05 |
[EnCase] 볼륨 새도우 카피 (Volume Shadow Copy, VSC) 분석 (3) (0) | 2022.07.31 |
[EnCase] 볼륨 새도우 카피 (Volume Shadow Copy, VSC) 분석 (2) (0) | 2022.07.29 |
[EnCase] 볼륨 새도우 카피 (Volume Shadow Copy, VSC) 분석 (1) (0) | 2022.07.27 |