Security & Forensic

반응형

응용 프로그램 호환성(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 익스포트 함수를 호출한다. 이 함수가 호환성 체크를 담당하는 함수로 데이터베이스 정보를 탐색하기 전에 먼저 호환성 캐시 데이터를 확인한다. 만약, 캐시에서 응용프로그램의 호환성 문제를 발견하지 못하면 데이터베이스를 확인하고 만약 문제가 있을 경우 처리 방안을 선택할 수 있도록 "이 프로그램이 제대로 설치되지 않앗을 수 있습니다" 라는 사용자 알람 창을 표시한다.

반응형