✅ sdb 파일이란?
- Microsoft Windows에서 애플리케이션 호환성 문제를 해결하기 위한 데이터베이스 파일
- 인덱싱된 이진 파일로, 확장자는 `.sdb`
- 데이터베이스 내에 애플리케이션의 호환성 문제와 그 해결 방법이 저장되어 있음.
응용프로그램을 실행할 때 호환성 문제를 해결하는 함수는 `kernel32.dll`의 내부 함수인 `BasepCheckBadApp`임.
해당 함수가 호출되면, sdb 파일의 내용을 참고하고, 더 빠르게 해결하기 위해서는 심캐시(ShimCache, AppCompatCache)를 참고함.
🔍 sdb 파일의 구성요소
1. 애플리케이션 항목(Application Entries)
데이터베이스는 각 애플리케이션에 대한 호환성 정보와 해결 방안이 저장됨.
-> 특정 프로그램이 특정 Windows 버전에서 충돌이 발생하면, sdb 파일에 해당 프로그램에 대한 수정 사항이 기록됨.
2. 일치 항목(Matching Entries)
호환성 인프라는 실행 파일을 특정 파일 특성(이름, 크기, 체크섬, 버전 등)으로 식별함.
`example.exe`라는 파일이 존재한다면, 이 파일의 크기, 체크섬, 버전 등을 기준으로 데이터베이스에 있는 항목과 비교하여 일치 여부를 확인함.
3. TAG 형식(TAG Format)
sdb 파일의 데이터는 TAG라는 형식으로 저장됨.
각 TAG는 특정한 데이터 유형을 나타냄.
TAG(Exposeenums2managed.h) - Win32 apps
shim 데이터베이스의 항목을 식별합니다.
learn.microsoft.com
🗺️ sdb 파일의 주요 경로
먼저, sdb 파일은 애플리케이션 호환성 문제가 발생할 때 생성됨.
Microsft는 운영체제 업데이트나 보안 패치를 배포할 때, 특정 애플리케이션이 해당 업데이트와 충돌할 가능성이 있으면 sdb 파일을 을 통해 호환성 패치를 적용함.
사용자가 수동으로 호환성 문제를 해결하기 위해 Compatibility Administrator 같은 도구를 사용할 때도 sdb 파일이 생성됨.
경로 | 설명 |
`C:\Windows\apppatch\drvmain.sdb` | 드라이버 호환성 문제 해결을 위한 데이터베이스 |
`C:\Windows\apppatch\pcamain.sdb` | 프린터 및 기타 주변기기 호환성 문제 해결을 위한 데이터베이스 |
`C:\Windows\apppatch\sysmain.sdb` | 운영체제 전반에 걸친 호환성 데이터베이스 |
`C:\Windows\apppatch\msimain.sdb` | MSI(Microsoft Installer) 관련 호환성 문제 관리 데이터베이스 |
`C:\Windows\AppPatch\Custom\*.sdb` | 사용자 정의 Shim Database |
`C:\Windows\System32\ CompatTelRunner.exe` | 호환성 데이터 수집 프로그램 |
사용자 정의 sdb 파일은 `Custom` 폴더에 저장되는데, 다음 ASEC 블로그 글을 확인해 보면 악의적으로 생성된 sdb 파일도 역시 `Custom` 폴더에 만들어지는 것을 확인할 수 있다.
Ammyy 해킹툴에서 확인된 Shim Database(SDB) 인젝션 공격
'기타' 카테고리의 다른 글
[STCON 2024] OWASP Top 10 for LLMs 및 대응 방안 (5) | 2024.11.04 |
---|---|
Binwalk 옵션 (0) | 2023.07.16 |
[자료구조] - 스택 (Stack) (0) | 2022.08.24 |
소켓 통신 (Socket Communication) (0) | 2022.07.26 |
2, 8, 10, 16 진법 변환 쉽게 하기 (0) | 2022.05.03 |