brunch

매거진 Rnfwoa

You can make anything
by writing

C.S.Lewis

by Rnfwoa May 26. 2016

Amcache 분석

프로그램 실행과 관련 있는 아티팩트인 amcache에 대해서 알아보자

'Amcache'는 프로그램 실행과 관련된 윈도우 아티팩트이다. 처음에는 윈도우8이상부터 생겼으나 최근들어 윈도우7에서도 보인다. 따라서 윈도우7에서도 'Amcache'를 분석해야할 필요가 생겼다. 이 글은 'Amcache'와 'RecentFileCache.bcf'에 대한 글이다.




1. RecentFileCache.bcf


‘Amacache’를알기전에먼저‘RecentFileCache.bcf’를 알아보면,’RecentFileCache.bcf’는 윈도우7에서 사용하는 호환성 아티팩트이다.’ RecentFilecache.bcf’는 프로세스가 생성될 때 프로그램경로를 임시로 저장하기 위한 용도로사용된다. 아래의 경로에 유니코드 형식으로 단순히 실행 파일의 전체 경로가 쓰여 있다.


RecentFileCache.bcf 파일 경로 : %SystemDirve%\Windows\AppCompat\Programs\


이러한 ‘RecentFileCache.bcf’은실행파일에서또다른실행파일이파생되는드롭퍼나다른볼륨이나시스템에서복사된프로그램을실행한경우, 해당 프로그램의 정보가 자주 남는다. ‘RecentFileCache.bcf’를이용하면악성코드실행과매우관련이있어서악성코드실행흔적을찾을때이용된다. 하지만 작업스케줄 중 ‘ProgramDataUpdater’가 수행될 때마다 초기화가 되는 단점이 있다.’ ProgramDataUpdater’는 기본적으로 하루에 한 번 수행된다. 따라서 ‘RecentFileCache.bcf’를아티팩트로사용하려면하루에한번씩backup을 해주거나 ‘ProgramDataUpdater’위 수행시간을 늘려주면 된다.




2. Amcache


‘Amacache’는 윈도우7에서의 ‘RecentFileCache.bcf’파일이 윈도우 8에서는 레지스트리 하이브 파일인 ‘Amcache.hve’로 대체되었다. ‘Amacache.hve’은 아래에 위치한다.


Amcache 하이브 파일 경로 : %SystemDrive%\Windows\AppCompat\Programs\Amcache.hve


Amacache’는 최근 실행한 프로그램에 대한 정보를 저장한다. 예를 들면, 실행파일의 경로,TimeStamp(마지막 변경시간, 생성시간), PE헤더 data와 파일정보(제품명, 회사명, 설명)에 대한 정보를 저장한다.


2.1 Amcache 구조


‘Amcache’는작은Hive 파일 구조이다. 아래 그림과 같이 Hive 파일 구조로 되어 있는데, 루트키 아래의 File, Generic, Orphan, Programs 등 4개의 키를 가진다. 또 이러한 키들을 하위에서브키를가지는데, 자세한 내용은 각 키에서 설명하겠다.

그림 2-1 REGA를 이용해서 본 Amcache

Root Key 아래에는 Sync라는 값이 한 개가 존재하는데 이 값은 8바이트 FILETIME 타임스탬프를 가지고 있다. 이 데이터는 ‘Amcache.hve’ 과 같은 폴더에 포함된 'AEINV_CURRENT.xml '파일과 동기화된 마지막 시간을 타내는 것 같다.

그림 2-2 Sync 정보


2.2 File 키


File 키에는 볼륨 GUID로 그룹화되어 있다. 여기서 볼륨 GUID는 SYSTEM Hive 아래에 있는 Mounted Devices와 NTUSER.DAT 아래에 MountPoint2에서 찾을 수 있는 값이다.

그림 2-3 File 키에 불륨 GUID

MountPoint2 의 경로 : NTUSER.DAT\Software\Microsoft\WIndows\CurrentVersion\Explorer\ountPoints2


아래 그림과 같이 볼륨 GUID는 File Reference Key를 가진다. NTFS 볼륨의 경우, 이 키는 000435 b200이라고 볼 수 있다.

그림 2-4 볼륨 GUID 하위키

위에 그림에 맨 마지막인 00은 Sequence Number 와고 앞부분은 File ID이다.

FAT 볼륨일경우는. File Reference는 파일의 Directory entry가 위치하고 있는볼륨의 시작 Byte offset을 말한다. 또 이 키의 마지막 변경시간은 특정한 프로그램이 첫 번째로 실행했던 시간이라고볼수있다. 이 키에서 해당 파일에 대한 세부사항을 가지고 있는데, 아래 그림을 보면 외부 USB 디스크의 FAT볼륨에 있는 파일이다.

그림 2-5 FAT 볼륨의 File Reference

아래의 표는 Value Name이 값이 의미하는 것에 대한 설명이다.

표 2-1 File Reference Value 의미

그러나 여기서 조금 불확실한 것이 있는데, 위에 표를 보면 두 개의 변경된 타임스탬프가 있다. 17에 있는 타임스탬프는 거의 항상 11에 있는 타임스탬프보다 1초 느리다는 것을 볼 수 있는데, 이거 DOS 타임스탬프로 변경하면서 생기는 것 같다.

File Key에서 중요한 것은 SHA1해시가 있다는 것이다. SHA1 해시는 MS가 추가한 정보의 필수적인 bit이다. 이것을 통해서 시스템에서는 삭제되거나 와이핑된 악성코드를 찾을 수 있다.

그림 2-6 NTFS 볼륨의 File Reference


2.3 Programs 키


Program 키는 설치된 프로그램, Control Panel에서 프로그램&기능에서 볼 수 있는 정보 같은 것에 대한 data가 포함되어 있다. Program 키는 다소 File 키와 유사하다. 각 하위 키는 컴파일할 때마다 MSI(설치) 패키지에 할당 된 ID인 Program ID를 이다. 이러한 각각의 하위키는 아래의 표의 Value를 가진다. 이 Value는 File 키와는 다르다.

그림 2-7 Program 키
표 2-2 Program 키 Value 의미

Program Key에 있는 파일 대부분은 File 키에 있는 File list가 포함하고 있다.


2.4 Orphan과 Generic 키


orphan키는 아래 그림처럼 볼륨 Guid@파일참조 구조로 키를 가지고 있다.

그림 2-8 Orphan 키

예를 들어 156a9290-b1a7-11e4-9741-74d435ab9ec5@0435b200에서156a9290-b1a7-11e4-9741-74d435ab9ec5는 볼륨 GUID이고 0435b20은 파일참조번호이다. 이 키 아래에는 c라는 값이 존재하는데 Dword값으로 0 또는 1이들어가 있는데 알려지지 않은 값이다.

아래에 그림은 Generic키이다. 0 서브키 아래는GUID 또는 File ID로 된 많은 키가 있다. 이 File IDs는 SHA1해쉬값이다. GUID같이 표현하는 알려지지 않은 것도 있다. Orphan키와 비슷하게, 이 키아래에는0 또는 1이 들어간다.

그림 2-9 Generic 키

Orphan키와 Generic 키를 참조하는 파일로부터 File키와 Program 키로 상호 참조하는 엔트리는 일치하는 부분도 있고 틀린 부분도 있다. 아직까진 이 관계가 분명하지는 않다.




3. Other


‘Amcache.hve’ 파일은 AppCompact 폴더에 있는 몇몇 파일에 log / cache와 일부분과 연관이 있는데 아래 같은 파일과 연관이 있다.

    AEINV_AMI_WER_{MachineID-GUID}_DATE_TIME.xml

    AEINV_CURRENT.xml

    AEINV_PREVIOUS.xml

여기서 ‘AEINV’는‘Application Experience Inventory’의약자이다. 위 표에 있는 모든 XML파일은 설치된 프로그램, 파일 / 응용프로그램의 metadata와 IE의 Add-on 정보에 대한정보와 비슷한 정보가 들어가 있다. 여기에 AEINV.xml 파일은 윈도우에러 리포트와 관련이 있다. 여기 MachineID-GRID는 오직 웹에서 생성하고 사용하는 값이다. 이 파일은 윈도우7에도 거의 같은 내용이 존재한다.

Windows 8에서는 장치정보를 저장하고 있다.비록 레지스트리보다 자세한 정보는 아니더라도 찾을 수 있다. 장치의 시리얼 ID나 Container ID는 가지고 있지 않더라도 SegateBackup과 같은 단어는 알 수 있다. 레지스트리나setupapi.log에 있는 정보와 일치하는 것은 아니지만 몇몇 장치의 GUID도 포함한다.


그림 3-1 AIENV_AMI_WER.xml 파일

AEINV_PREVIOS.xml이 윈도우7과 같은 Format으로 존재한다.AEINV_Courrent.xml은 윈도우8에 추가되었고 비슷한 데이터를 가지고 있다.




4. Reference


RecentFileCache.bcf

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

Amcache

    - http://www.swiftforensics.com/2013/12/amcachehve-in-windows-8-goldmine-for.html

    - http://www.swiftforensics.com/2013/12/amcachehve-part-2.html


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