brunch

매거진 Rnfwoa

You can make anything
by writing

C.S.Lewis

by Rnfwoa Jun 11. 2016

IconCache 파일 포맷 분석

IconCache 파일 구조와 포렌식적 의미를 알아보자

1. 아이콘 캐시

1.1   아이콘 캐시란?


아이콘 캐시는 사용자 컴퓨터 및 외부 저장매체에서 열람 및 실행한 응용프로그램들의 아이콘 캐시 정보를 저장하고 있다. 또한 기록된 응용프로그램의 아이콘 캐시 정보는 삭제되지 않는 특성을 가지고 있다. 아이콘 캐시는 아이콘을 미리 캐시 해 둔 후 재방문 시 빠르게 로드하기 위해서 사용된다. 

아이콘 캐시는 폴더의 내용을 확인시 로드되는 아이콘을 저장한다. 또한 인터넷에서 다운로드할 경우 폴더 내용을 확인하지 않아도 저장한다. 이렇나 아이콘 캐시는 윈도우 시작 시 메모리에 로드(기본적으로 500개의 아이콘 캐시) 되며  레지스트리 아이콘 캐시의 개수를 설정하려면 아래의 레지스트리 값을 변경시켜주면 된다.

표 1-1 윈도우 시작 시 아이콘 개수 설정(레지스트리)

아이콘 캐시는 윈도우 버전에 따라 저장되는 위치가 다르다. 윈도우 버전에 따른 저장 경로는 아래 표와 같다.

표 1-2 윈도우 버전 별 아이콘 캐시 저장위치




2. 아이콘 캐시 구조(Format)


아이콘 캐시의 구조는 윈도우 버전에 따라 약간 다르다. 공통으로 파일 헤더와 경로 정보를 저장하는 부분이 있다. 윈도우 비스타와 7 같은 경우에는 IconCache.db파일 안에 각 아이콘의 이미지를 해상도에 따라 분류하여 BMP로 저장한다. 그래서 각 이미지 데이터 영역의 크기는 아이콘 캐시가 많을수록 커진다. 윈도우 8부터는 이미지 데이터 없이 경로만 저장한다. 이미지 정보는 아래 표의 위치에 따로 저장하고 아이콘 캐시 이미지 데이트를 해상도 별로 구분하여 파일로 저장한다.

표 2-1 이미지 정보 저장 경로(윈도우 8이상)
그림 2-1 아이콘 캐시 구조(윈도우 비스타 / 7 )
그림 2-2 아이콘 캐시 구조(윈도우 8 )


2.1 파일 헤더


파일 헤더의 크기는 윈도우 XP를 제외한 버전은 0x40로 64 Byte이며, 윈도우 XP는 0x50, 80 Byte이다. 시그니처는 0x57 69 6E 34로 모든 버전이 동일하다. 파일 버전은 파일 헤더의 크기와 마찬가지로 XP만 0x05050000이고 나머지 버전은 0x06 05 00 00이다. 윈도우 빌드 넘버는 각 버전 별로 다른데 XP는 0x 54 0B 00 06 Vista는 0x 72 17 00 06 / 7은 0xB0 1D 01 06 / 8은 0x F0 23 02 06이다. 

그림 2-3 Windows 7 헤더 예제
그림 2-4 Windows 8 헤더 예제


2.2 경로 정보(Path of Icons)


IconCache.db 파일의 헤더 정보 다음에는 아이콘의 경로정보가 저장되어 있다. 각 Section 첫 4바이트는 Section별 경로정보의 개수를 의미한다. 그리고 각 경로정보가 저장된다.

표 2-2 경로 정보 구조

먼저 첫 번째 섹션에는 윈도우 설치 시 기본적으로 설치되는 아이콘의 경로정보와 사용자가 열람 또는 실행하는 응용프로그램의 아이콘 정보가 순서대로 저장된다.. 경로정보는 다음 표와 같은 구조로 저장된다. 첫 2바이트는 시그니쳐를 나타내고 다음 2바이트는 경로 길이를 의미한다. 경로 길이를 이용해서 경로 정보를 구하기 위해서는 시그니쳐를 확인해야 한다. 시그니쳐에 따른 파일 경로 문자열 길이 계산은 아래에서 설명한다. 마지막 4바이트는 아이콘 이미지 위치를 나타낸다. 

표 2-3 첫 번째 세션 경로 정보 구조

두 번째 섹션에는 링크 또는 단축 아이콘의 경로정보가 저장되고 마지막 세 번째 섹션에는 윈도우 설치 후 사용자가 실행하거나 열람, 복사한 응용프로그램의 아이콘 경로정보가 순서대로 저장된다. 경로정보 구조는 첫 번째 세션과 다르게 시그니쳐 2바이트가 빠진다. 그리고 아이콘 이미지 위치의 크기도 4바이트에서 12바이트로 저장한다. 

표 2-4 두 번째 세션 경로 정보 구조

시그니쳐에 따른 파일 경로 문자열 길이 계산에 대한 계산 방법은 아래 표와 같다.

표 2-5 시그니쳐에 따른 파일 경로 문자열 길이 계산 방법




3. 포렌식적 의미


사용자가 삭제했거나 외부 저장매체 등을 통해 실행 또는 열람한 응용프로그램의 흔적을 저장하고 있으므로, 사용자의 안티포렌식 행위를 분석하는 방법으로 의미가 있다. 또한 애드웨어와 같이 아이콘을 보유하고 있는 악성코드 흔적 확인이 가능하다.


3.1 삭제된 프로그램에 대한 정보 수집


사용자가 사용한 응용프로그램 은 레지스트리나 프리패치에서 사용 흔적을 찾을 수 있다. 그러나 악의적으로 사용 흔적을 제거하기 위해서 안티포렌식 툴을 사용하는 경우에는 레지스트리나 프리패치에 있는 내용을 지울 수 있다. 하지만 IconCache.db는 널리 알려진 흔적이 아니고 프로그램을 삭제하더라도 그 흔적이 지워지지 않아서 과거에서는 사용되었으나 현재에는 삭제된 응용프로그램에 대한 정보를 얻을 수 있다.


3.2 삭제된 프로그램의 상대적인 시간 정보 확인


IconCache.db 파일에 남아있는 삭제된 응용프로그램의 정보와 레지스트리 및 프리패치에 남아 있는 다른 응용프로그램들의 시간 정보를 비교 분석하면 삭제된 응용프로그램의 상대적인 설치 시간을 확인 가능하다.


3.3 안티포렌식 행위 분석


외장형 저장매체에 있는 실행파일을 열람하거나 복사, 실행할 경우에도 관련 응용프로그램의 아이콘 캐시 정보를 기록, USB에 완전 삭제 프로그램을 저장하고 있거나, 그것을 활용하여 컴퓨터에 저장된 증거자료를 삭제했을 경우, IconCache.db 파일 분석을 통해 사용자의 안티포렌식 행위에 대한 단서를 찾을 수 있다.


3.4 악성코드 침해 분석


악성코드가 사용자가 일반적으로 접근하지 않거나 인지하기 어려운 장소에 저장된다. 때문에 악성코드에 감염되었을 경우 감염 여부 인지와 더불어 악성코드가 설치된 위치를 찾는 것이 쉽지 않다. IconCache를 이용하면 어느 경로에 악성코드가 설치되어 있는지 알 수 있다.


3.5 기타 프로그램 실행 흔적

외부 저장장치뿐 아니라 CD/DVD에 저장된 응용프로그램의 정보도 포함하고 있다. 또한 인터넷을 통해 응용프로그램을 다운로드할 경우 응용프로그램을 다운로드한 인터넷 URL 주소를 저장한다. 또한 네트워크를 통해 공유된 컴퓨터에 저장된 응용프로그램을 열람 및 실행할 경우에도 공유된 컴퓨터와 응용프로그램의 이름을 확인할 수 있다.




4. Reference

논문, Windows 7, 8 IconCache.db 파일 포맷 분석 및 활용 방안 – 이찬연, 이상진


블로그, IconCache를 최대한 활용하자 – forensic-proof

http://forensic-proof.com/archives/5168


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari