응용 프로그램 호환성(AmCache 어플리케이션 캐시) 분석
응용 프로그램 호환성(AmCache) 분석
이 파일은 프로그램이 실행될 때 프로그램 경로를 임시 저장하기 위한 용도로 사용하는 것으로 파일 이름처럼 최근 실행한 프로그램 정보만 저장되어 있다.
실행한 모든 프로세스 정보가 저장되는 것은 아니고 실행 파일에서 또 다른 실행 파일이 파생(드롭퍼)되거나 다른 볼륨이나 시스템에서 복사(인터넷 다운로드 포함)된 프로그램을 실행한 경우 해당 프로그램의 정보가 자주 남는다고 한다.
Amcache의 경우 지속적으로 누적되다보니 시스템을 오래 사용하면 굉장히 많은 데이터를 확인할 수 있습니다. 침해사고 분석 시 악성코드(프로그램, 프로세스) 실행 흔적을 가장 먼저 봅니다. 그 중 가장 가치 있는 정보가 호환성 캐시와 앱캐시입니다.
앰캐시(Amcache.hve) 파일은 프로그램 호환성 관리자(Program Compatibility Assistant)와 관련된 레지스트리 하이브 파일로 응용 프로그램의 실행정보를 저장한다.
이 파일을 통해서 응용 프로그램의 실행경로, 최초 실행시간을 확인할 수 있을 뿐 아니라, 삭제시간까지 추정할 수 있다. 응용 프로그램의 최초 설치시간 및 삭제시간까지 확인할 수 있기 때문에 프리패치(Prefetch) 파일, 아이콘캐시(Iconcache.db) 파일 분석과 병행하면 응용 프로그램의 전체적인 타임라인을 구성할 수 있다.
또한, 앰캐시 파일은 안티포렌식 프로그램, 포터블 프로그램 및 외장저장장치 흔적을 기록하고 있어 디지털 포렌식 관점에서 중요한 아티팩트이다.
하지만 작업스케줄 중 ‘ProgramDataUpdater’가 수행될 때마다 초기화가 되는 단점이 있다.’ ProgramDataUpdater’는 기본적으로 하루에 한 번 수행된다. 따라서 ‘RecentFileCache.bcf’를 아티팩트로 사용하려면 하루에 한 번씩 backup을 해주거나 ‘ProgramDataUpdater’위 수행시간을 늘려주면 된다.
이 파일은 “C:\Windows\AppCompat\Programs\” 폴더에 존재
F:\temp>dir C:\Windows\AppCompat\Programs\
윈도우7에서의 RecentFileCache.bcf 파일이 윈도우 8에서는 Amcache.hve파일로 대체되었음
프로그램 호환성 관리자와 관련된 레지스트리 하이브 파일
- 응용프로그램의 실행정보 저장
- 응용프로그램의 실행경로, 최초 실행시간, 삭제시간 정보 등 저장
- 프리패치 파일과 병행하면 프로그램의 전체적인 타임라인 구성 가능
포렌식 관점
- 모든 실행파일의 목록, 전체 경로 확인
- 파일의 최초 실행시간, 삭제시간 확인
- 안티 포렌식 프로그램, 외부 저장장치 흔적 추적
분석
AppCompatCacheParser
Examples: AppCompatCacheParser.exe --csv c:\temp -t -c 2
AppCompatCacheParser.exe --csv c:\temp --csvf results.csv
F:\temp>"f:\tool\forensic\AppCompatCacheParser\AppCompatCacheParser.exe" --csv f:\temp --csvf amcache.csv
F:\temp>F:\tool\forensic\LogParser\LogParser.exe -stats:on -i:csv "select * from 'f:\temp\amCache.csv'"
AmcacheParser
D:\>RawCopy64.exe /filenamepath:c:\Windows\appcompat\Programs\Amcache.hve /outputpath:d:\temp
D:\>AmcacheParser.exe -f "d:\Temp\Amcache.hve" --csv "d:\temp"
RegRipper
C:\Tools\Forensic\RegRipper2.8>regex.exe -h f:\test\reg-hive-backup
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\Amcache.hve" -p amcache
'DFIR > 사용자 행위 분석' 카테고리의 다른 글
파일 행위 분석-프로그램 대화상자-LastVisitedPidlMRU (0) | 2020.03.06 |
---|---|
파일 행위 분석-탐색기 대화상자-OpenSavePidlMRU (0) | 2020.03.05 |
응용 프로그램 호환성(ShimCache, AppCompatCache) 분석 (0) | 2020.03.05 |
응용 프로그램 실행 분석-최근 실행 프로그램 (RunMRU) 분석 (0) | 2020.03.05 |
응용 프로그램 실행 분석-바로가기 링크파일 분석 (0) | 2020.03.05 |
응용 프로그램 호환성(ShimCache, AppCompatCache) 분석
응용 프로그램 호환성(Shim Cache, AppCompat Cache) 분석
호환성 문제를 신경써야 하는 이유는 윈도우가 버전업 되면서 API도 변경되는데 이 경우 대체 API로 리다이렉트하여 실행될 경우 보안 문제가 발생할 수도 있기 때문이다. 응용 프로그램 실행 흔적 분석에 있어 PreFetch는 128개 라는 크기(개수) 제한으로 인해 PreFetch에는 없는 정보가 Shim Cache-AppCompatCache로 불리기도 함-에는 존재할 수가 있다.
응용 프로그램 간 호환성을 제어하고 트러블슈팅과 문제 해결을 위해 만든 파일
- 악성코드 실행 시 호환성 문제 자주 발생하기 때문에 침해분석에 활용
프리패치와 비슷한 응용프로그램의 실행 정보 저장
- 모든 실행 파일의 경로, 크기, 마지막 수정시간, 마지막 실행 시간 등의 정보를 저장
- 하지만 프리패치는 한정적이라 사라질 가능성이 있음. 그렇지만 Shim Cache에는 존재할 수 있음
또한, 최근 악성코드는 프리패치와 같이 알려진 흔적을 모두 삭제하는 경향이 있다. 이런 상황에서 호환성 캐시 정보는 분석에 매우 중요하게 사용될 수 있다. 특히, 시간 정보가 포함되기 때문에 더할 나위없이 유용하다. 마지막 업데이트 시간이 XP에만 존재하는 것은 안타깝다.
뛰어난 공격자라면 각 운영체제 버전에 맞게 호환성 문제가 없는 프로그램을 사용하겠지만, APT 공격과 같이 오랫동안 여러 시스템을 감염시켜야 하는 경우 시스템 버전이 다양하기 때문에 호환성 캐시에 흔적이 저장될 가능성이 매우 크다.
호환성 캐시는 해당 시스템에서 실행 시 호환성 문제가 발생했던 응용프로그램의 정보를 저장하고 있다. 일반적인 캐시의 역할과 마찬가지로 이미 실행했던 프로그램이라면 데이터베이스를 살펴보기 전에 호환성 캐시를 이용해 빠르게 처리한다. 호환성 캐시 정보는 레지스트리에 저장되는데 경로는 다음과 같다.
Shim Cache 세 가지 경우에 따른 레지스트리 경로
1) 호환성 충돌 대화상자에서 사용자가 “이 프로그램이 제대로 설치되었습니다.”를 선택한 경우
C:\>reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store"
2) 응용프로그램 호환성 데이터베이스에 없을 경우 : 호환성 캐시 레지스트리
C:\>reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache" [/s]
3) 응용프로그램 호환성 해결 설정 : 호환성 모드, 권한 등 설정된 경우
C:\>reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" [/s]
분석
ShimCacheParser Tool
E:\Tools\ShimCacheParser>py -2 ShimCacheParser.py -l -o "e:\temp\shimcache.csv"
[+] Dumping Shim Cache data from the current system...
[+] Found Windows 10 Creators Update Apphelp Cache data...
[+] Found Windows 10 Creators Update Apphelp Cache data...
[+] Writing output to e:\temp\shimcache.csv...
E:\Tools\ShimCacheParser>type e:\temp\shimcache.csv | more
Last Modified,Last Update,Path,File Size,Exec Flag
10/30/14 00:51:20,N/A,C:\Users\admin\AppData\Local\Temp\nsv36D4.tmp\UninstallASM.exe,N/A,N/A
02/20/20 03:31:34,N/A,C:\Users\Public\Documents\DuzonISS\ArgosLiveUpdate\ArgosLiveUpdateUninstaller.exe,N/A,N/A
05/11/19 09:43:41,N/A,C:\WINDOWS\system32\reg.exe,N/A,N/A
......
F:\temp>LogParser.exe -stats:on -i:csv "select filename, path from 'f:\temp\ShimCache.csv'"
Filename Path
--------------------- ----------------------------------------------------------------------------------
f:\temp\ShimCache.csv F:\OSTEMP\nsd4F90.tmp\UninstallASM.exe
f:\temp\ShimCache.csv C:\Program Files (x86)\Google\Chrome\Application\80.0.3987.132\Installer\setup.exe
f:\temp\ShimCache.csv F:\tool\forensic\CrowdResponse64.exe
f:\temp\ShimCache.csv F:\tool\forensic\CrowdResponse.exe
f:\temp\ShimCache.csv C:\WINDOWS\system32\DllHost.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\accesschk.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\accesschk64.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\CrowdResponse.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\CrowdResponse64.exe
f:\temp\ShimCache.csv F:\Dropbox\LiveForensic\Windows\Tools\gawk.exe
......
Python v2.x만 지원, v3.x 지원안됨. 그래서 실행 파일을 만들어 실행
F:\temp>f:\tool\forensic\ShimCacheParser\ShimCacheParser.exe -l -o f:\temp\ShimCache.csv
F:\temp>f:\tool\forensic\ShimCacheParser\ShimCacheParser.exe -l
[+] Dumping Shim Cache data from the current system...
[+] Found Windows 10 Creators Update Apphelp Cache data...
[+] Found Windows 10 Creators Update Apphelp Cache data...
Last Modified Last Update Path File Size Exec Flag
10/30/14 00:51:20 N/A F:\OSTEMP\nsd4F90.tmp\UninstallASM.exe N/A N/A
03/04/20 00:29:04 N/A C:\Program Files (x86)\Google\Chrome\Application\80.0.3987.132\Installer\setup.exe N/A N/A
03/04/20 08:43:35 N/A F:\tool\forensic\CrowdResponse64.exe N/A N/A
11/19/18 23:43:24 N/A F:\tool\forensic\CrowdResponse.exe N/A N/A
......
RegRipper
C:\Tools\Forensic\RegRipper2.8>regex.exe -h f:\test\reg-hive-backup
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\system" -p appcompatcache
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\system" -p appcompatcache_tln
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\system" -p shimcache
F:\tool\forensic\RegRipper2.8>rip.exe -r "f:\Test\reg-hive-backup\system" -p shimcache_tln
<참고 1>
ShimCacheParser Tool 의 아쉬운 점은 디스크 이미지의 분석은 불가능하고 라이브 시스템에서만 동작한다는 점이다.
따라서 타임라인 통합 분석이 힘든 라이브 포렌식에 유용하게 활용 가능하다.
<참고 1>
윈도우의 호환성 관리
윈도우는 어떻게 호환성 문제가 있는 프로그램을 식별하고 해결하는 것일까? 응용프로그램 호환성 데이터베이스가 이 역할을 해준다. 호환성 처리 모듈은 DLL로 구성되어 있고, 호환성 데이터베이스는 Appfix Package라는 형식의 .sdb 파일로 존재한다. 관련 파일은 다음 위치에서 확인할 수 있다.
* C:\Windows\AppPatch\
DLL 이외에 다음과 같은 인덱싱된 SDB(Shim Database) 파일이 보일 것이다.
* sysmain.sdb
* drvmain.sdb
* msimain.sdb
* pcamain.sdb
SDB 파일의 내용을 XML로 변환해주는 sdb2xml 도구도 있다. 이 도구를 이용해 SDB 파일의 내용을 확인해보면 다양한 응용프로그램 목록을 확인할 수 있다.
윈도우에서 응용프로그램을 실행하게 되면 kernel32.dll의 CreateProcessInternalW 함수가 시작되고, 해당 함수는 내부적으로 BasepCheckBadApp 익스포트 함수를 호출한다. 이 함수가 호환성 체크를 담당하는 함수로 데이터베이스 정보를 탐색하기 전에 먼저 호환성 캐시 데이터를 확인한다. 만약, 캐시에서 응용프로그램의 호환성 문제를 발견하지 못하면 데이터베이스를 확인하고 만약 문제가 있을 경우 처리 방안을 선택할 수 있도록 "이 프로그램이 제대로 설치되지 않앗을 수 있습니다" 라는 사용자 알람 창을 표시한다.
'DFIR > 사용자 행위 분석' 카테고리의 다른 글
파일 행위 분석-탐색기 대화상자-OpenSavePidlMRU (0) | 2020.03.05 |
---|---|
응용 프로그램 호환성(AmCache 어플리케이션 캐시) 분석 (0) | 2020.03.05 |
응용 프로그램 실행 분석-최근 실행 프로그램 (RunMRU) 분석 (0) | 2020.03.05 |
응용 프로그램 실행 분석-바로가기 링크파일 분석 (0) | 2020.03.05 |
응용 프로그램 실행 분석-부트프리패치분석 (0) | 2020.03.05 |