제공받은 zipper.zip 파일을 다운받고 압축풀기를 시도했더니 다음과 같은 오류가 발생했다.
어떤 오류인지 인터넷에 찾아보았더니 0xa0000005에 대한 정보는 나타나지 않았으니 zip파일 내부에서 파일이 손상되어 나타난 오류임을 확인하였다. 이를 더 자세히 분석해보기 위해 HxD를 활용했다.
이를 분석하기 위해 ZIP 파일의 구조를 알아야 한다. 다음 게시글은 ZIP 파일 구조에 대한 글이다.
https://papya3086.tistory.com/3
[HEX 분석]
zipper의 Hex 값이다.
- 0x04034b50을 고유값으로 가지는 0x00~0x03을 확인할 수 있고 이 부분이 Local file header이다.
- 0x02014b50을 고유값으로 가지는 0x88~0x8B를 확인할 수 있고 이 부분이 Central file header이다.
- 0x06054b50을 고유값으로 가지는 0xD6~0xD9를 확인할 수 있고 이 부분이 End header이다.
각각의 Header에 맞게 주요하게 살펴본 부분은 다음과 같다.
[Local file header]
- 0x1A~1B : 파일 이름 길이 -> 0x2329 : 9001
- 0x1C~1D : 추가 필드 길이 : 0x18 : 24
- 0x1E : 파일 네임 시작부분
Central file header 까지 106 바이트 (추가 필드 제외하면 82바이트)
file name : 8바이트
extra field : 24바이트
data : 74바이트
[Central file header]
- 0xA4~A5: 파일 이름 길이 -> 0x2329 : 9001
- 0xA6~A7 : 추가 필드 길이 : 0x18 : 24
- 0xB6 : 파일 네임 시작 부분
END 까지 32바이트 (추가 필드 제외하면 4바이트)
file name : 8바이트
extra field : 24바이트
extra field의 크기는 24바이트이므로 file name의 크기는 8바이트임을 유추하였다.
그러나 header 정보에 들어있는 파일 이름의 크기는 0x2329(9001)에 해당됨으로 이것을 0x0008로 바꾸고 실행보았다.
전과 같은 오류는 뜨지 않지만 그럼에도 불구하고 "지정된 경로를 찾을 수 없습니다." 와 같은 오류가 발생함을 알 수 있다.
따라서 파일명을 확인해보았다.
파일명이 나타나지 않는 것은 file name 의 시작부분에서 8바이트까지 확인해보니 00 으로 다 채워져 있기 때문에 파일 네임 또한 나타나지 않았다는 것을 알 수 있다.
따라서 위 사진과 같이 AAAA.txt 파일명을 임의로 집어넣었다.
압축 풀기에 성공한 것을 확인할 수 있었고 정상적으로 AAAA.txt 파일이 생성되었다.
결과물은 위와 같다.
ZIP 파일에서 손상된 부분을 찾고 복구하는 과정을 통해 ZIP 파일 구조를 더 잘 알게 되었던 것 같다.
'Forensic' 카테고리의 다른 글
[Forensic] suninatas 29번 (써니나타스 29번 - Disk 문제) (0) | 2024.07.25 |
---|---|
[Forensic] FAT32 / NTFS / exFAT 파일시스템 정리 (2) | 2024.07.25 |
[Forensic] steganography - Mountains beyond mountains (0) | 2024.07.24 |
[Forensic] zip 파일 구조 정리 (2) | 2024.07.24 |
[Forensic] Steganography 개념 및 툴 정리 (2) | 2024.07.24 |