Android Forensic/Evidence Analysis

[Digital Forensic] Android Thumbache Structure Analysis

DF_m@ster 2024. 4. 12. 16:45

Thumbcache

Thumbnail: 사용자가 특정 그래픽 파일을 빠르게 식별하는 데에 사용하는 작은 크기의 그래픽 파일을 의미한다.

Thumbcache: Thumbnail 파일을 메타데이터와 함께 연속적으로 저장하는 단일 파일로, Thumbcache 파일을 분석하면 해당 기기에 저장된 각 Thumbnail 파일을 추출할 수 있다.

 

디지털 포렌식에서 기기에 저장된 그래픽 파일을 활용해 범죄 혐의를 입증 할 수 있다. 하지만 안티 포렌식으로 인해 원본 그래픽 파일이 부재된 경우 Thumbcache를 분석해 부재된 그래픽 파일을 대신하여 범죄 혐의 입증에 사용할 수 있다. 때문에 Thumbcache 파일의 구조를 상세하게 이해할 필요가 있다.

 

본 글은 디지털 포렌식의 관점에서 안드로이드(Android 9 Version)의 Thumbcache 구조를 상세 분석한 글이다.

 

 

 

Thumbnail

Thumbnail은 사용되는 목적에 따라 Square Thumbnail(정사각형)Aspect Ratio Preserved Thumbnail(원본 비율) 두가지 종류로 나뉜다.

 

Square Thumbnail: 원본 그래픽 파일의 비율을 유지하지 않고, 정사각형 비율로 그래픽 파일의 크기를 축소화한 썸네일로, 갤러리 내부에서 사용자가 다양한 그래픽 파일을 구별할 수 있게 해주는 용도로 사용된다.

Aspect Ratio Preserved Thumbnail: 원본 그래픽 파일의 비율을 유지하여 그래픽 파일의 크기를 축소화한 썸네일로, 갤러리 내부에서 사용자가 특정 그래픽 파일을 선택해 원본 그래픽 파일을 불러오는 지연 시간 동안 사용자에게 잠시 보여주는 용도로 사용된다.

 

 

 

Thumbcache Structure

Thumbcache 파일은 '/sdcard/emulated/Android/data/com.sec.android.gallery3d/cache/' 경로에 저장되고, 각 파일의 종류는 파일 이름과 파일 확장자에 따라 나뉜다.

 

파일 이름 종류로는 'imgcache', 'micro', 'mini', 'nano'가 있고, 파일 이름에 따라 Thumbcache 파일에 저장되는 Thumbnail의 해상도가 다르며, 'imgcache', 'micro', 'mini', 'nano' 순서로 Thumbnail의 해상도가 크게 저장된다.

 

파일 확장자 종류로는 '.0', '.1', '.idx'가 있고, 파일 확장자에 따라 Thumbcache 파일이 저장하는 내부 데이터가 다르다. '.0', '.1' 확장자 Thumbcache 파일의 경우 Thumbnail의 그래픽 파일과 메타데이터를 연속적으로 저장한다. '.0' 확장자 Thumbcache 파일부터 순차적으로 Thumbnail을 기록하고, '.0' 확장자 Thumbcache 파일의 용량 혹은 Thumbnail의 개수가 초과될 경우 '.1' 확장자 Thumbcache 파일에 순차적으로 기록한다. '.idx' 확장자 Thumbcache 파일의 경우 '.0', '.1' 파일에 저장된 각 Thumbnail의 데이터 논리 주소를 index 형태로 저장한다.

 

 

 

'[content].0', '[content].1'

'[content].0', '[content].1': 첫 4Byte에 Thumbcache의 Header가 나타나고, 이후부터는 Thumbnail을 저장하는 구조체를 연속적으로 저장한다.

 

Thumbnail을 저장하는 구조체에는, Index, CRC, Start Offset, Thumbnail Size, Thumbnail Metadata #1, Thumbnail Metadata #2, Thumbnail 정보를 포함한다. Thumbnail Metadata #1에는 원본 그래픽 파일이 사진과 영상인 경우 각각 'local/image/item', 'local/video/item' 문구를 저장한다. Thumbnail Metadata #2에는 원본 그래픽 파일의 생성 순번, 원본 그래픽 파일의 마지막 데이터 수정 시간, 해상도 식별자 값을 저장한다. Thumbnail에는 Thumbnail Size 크기의 jpg 파일이 위치하게된다.

 

아래는'[content].0', '[content].1' Thumbcache 파일의 Field를 정리한 내용이다.

'[content].0', '[content].1' Field

Offset Size Info
0x00 ~ 03 4 Header Signature
(0x10 85 24 BD)
0x04 ~ 0B 8 Index
0x0C ~ 0F 4 CRC
0x10 ~ 13 4 Start Offset
(Thumbnail Start Offset)
0x14 ~ 17 4 Thumbnail Size
0x18 ~ 39 22 Thumbnail Metadata #1
0x3A ~ ?? Dynamic Thumbnail Metadata #2
0x?? ~ ?? + Thumbnail Size Thumbnail Size Thumbnail

 

 

 

'[content].idx'

'[content].idx': 첫 4Byte에 Thumbcache의 Header가 나타나고, 이후부터는 '.0', '.1' Thumbcache 파일 내부의 각 Thumbnail을 포인팅하는 Index를 구조체를 연속적으로 저장한다.

 

[content].idx Header에는 Max .idx Amount, Max Thumbcache Size, Active Thumbcache, Thumbnail Count, Thumbcache Size, CRC 값을 저장한다.

 

아래는 '[content].idx' Thumbcache 파일의 Header Field를 정리한 내용이다.

'[content].idx' Header Field

Offset Size Info
0x00 ~ 03 4 Header Signature
(0x30 30 27 B3)
0x04 ~ 07 4 Max .idx Amount
0x08 ~ 0B 4 Max Thumbcache Size
0x0C ~ 0F 4 Active Thumbcache
0x10 ~ 13 4 Thumbnail Count
0x14 ~ 17 4 Thumbcache Size
0x18 ~ 1B 4 -
0x1C ~ 1F 4 CRC

 

Thumbnail을 포인팅하는 Index 구조체에는, Thumbnail Index와 Thumbnail Offset 값을 저장한다. '[content].idx' 파일이 Thumbnail Offset 값을 이용해 '[content].0', '[content].1' 내부의 각 Thumbnail에 접근하고, Thumbnail Index 값을 비교해 무결성을 검증한다.

 

아래는 '[content].idx' Thumbcache 파일의 Index Field를 정리한 내용이다.

'[content].idx' Index Field

Offset Size Info
0x00 ~ 07 8 Thumbnail Index
0x08 ~ 0B 4 Thumbnail Offset

 

 

 

 

 

다음 글

[Digital Forensic] Android Thumbcache File Recovery Analysis

 

[Digital Forensic] Android Thumbcache File Recovery Analysis

Thumbcache File Recovery디지털 포렌식에서 기기에 저장된 그래픽 파일을 활용해 범죄 혐의를 입증 할 수 있다. 하지만 안티 포렌식으로 인해 원본 그래픽 파일이 부재된 경우 Thumbcache 파일을 분석해

digitalforensicmaster.tistory.com

 

 

 

 

 

Reference

https://www.dbpia.co.kr/journal/detail?nodeId=T15660233