필터 드라이버
Windows 시스템에서 필터 드라이버는 기존 드라이버의 기능을 보강하거나 수정하기 위한 드라이버입니다. 기존 드라이버의 입출력 요청 패킷(IRP) 을 가로채서 추가적인 작업을 수행하는데 보통 특정 장치(파일 시스템, 디스크, 네트워크 등)에 대한 동작을 감시하거나 수정하는 데 사용됩니다.
대표적인 필터 드라이버 종류
- 파일 시스템 필터 드라이버 (예: 안티바이러스, 암호화 프로그램)
- 디스크 필터 드라이버 (예: 볼륨 암호화)
- 네트워크 필터 드라이버 (예: 방화벽)
- 미니필터 드라이버 (Microsoft에서 권장하는 방식)
필터 드라이버의 동작 방식
예를 들어 우리가 애플리케이션을 통해 파일을 오픈하면:
- 애플리케이션이 파일을 열기 위해 요청을 보냅니다.
- 파일 시스템 드라이버가 요청을 받아 특정 디바이스로 전달합니다.
- 디바이스가 요청을 처리하고 결과를 반환합니다.
- 파일 시스템 드라이버가 결과를 애플리케이션에 전달합니다.
이 과정에서 필터 드라이버는 파일 시스템 앞에 위치하여 데이터 흐름을 모니터링하거나 수정할 수 있습니다.
Application → I/O Manager → Filter Driver → Target Driver → Hardware
필터 드라이버 로딩 시점
필터 드라이버의 로딩 시점은 드라이버의 Start Type에 의해 결정됩니다.
| Start Type | 설명 | 로딩 시점 |
| 0 (Boot) | 필수 커널 드라이버 | 시스템 초기 부팅 과정 (부팅 로더 단계) |
| 1 (System) | 시스템 장치 드라이버 | 커널 초기화 중 로드 |
| 2 (Automatic) | 서비스와 함께 자동 로드 | 로그인 이후 서비스 매니저 단계 |
| 3 (Manual) | 필요할 때만 로드 | 명시적인 요청 시 로드 |
| 4 (Disabled) | 사용 안 함 | 절대 로드 안 함 |
필터 드라이버가 0 (Boot) 또는 1 (System) 으로 등록되어 있으면, 시스템 부팅 중 로드됩니다. Start Type이 Boot (0) 또는 System (1) 으로 등록된 필터 드라이버가 로드에 실패하면 BSOD가 발생할 수 있습니다. 특히 파일 시스템 필터 드라이버나 디스크 필터 드라이버가 실패하면 시스템이 더 이상 부팅되지 못할 수 있어요.
- Boot 필터 (0): BSOD (0x7B INACCESSIBLE_BOOT_DEVICE)
- System 필터 (1): BSOD
- Automatic (2): 이벤트 로그만 기록됨
대표적인 오류 코드
- INACCESSIBLE_BOOT_DEVICE (0x7B) → 부팅 필수 드라이버가 실패했을 때
- DRIVER_VERIFIER_DETECTED_VIOLATION
- SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
필터 드라이버 파일 구조
Windows에서 필터 드라이버는 커널 모드 드라이버라서 일반적으로 .sys 파일 형식을 사용합니다.
| 형식 | 설명 | 예제 경로 |
| .sys | 커널 모드 드라이버 실행 파일 | C:\Windows\System32\drivers\MyFilter.sys |
| .inf | 설치 정보 파일 (드라이버 등록용) | C:\Windows\INF\oem1.inf |
| .cat | 디지털 서명 파일 (Driver Signature) | C:\Windows\System32\catroot\ |
위 해당 파일들은 아래 경로에 저장됩니다:
| 경로 | 설명 |
| C:\Windows\INF\ | 설치된 드라이버 INF 파일 저장 위치 |
| C:\Windows\System32\drivers\ | 드라이버 SYS 파일 저장 위치 |
| C:\Windows\System32\DriverStore\FileRepository\ | 원본 드라이버 패키지 저장소 |
| HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyFilter | 레지스트리 등록 정보 |
그럼 우리 시스템에서 확인해 보죠.
# Lists all currently running filter drivers.
fltmc
# Lists detailed info about all loaded filter drivers.
fltmc filters
# Shows filter driver instances attached to volumes.
fltmc instances
# Unloads a filter driver from memory.
fltmc unload <driver_name>
# Loads a filter driver into memory.
fltmc load <driver_name>
시스템에서 fltmc 를 실행하여 활성 필터 드라이브를 확인합니다. 이 때 고도는 드라이버의 우선 순위를 나타내며, 값이 높을수록 높은 우선 순위를 의미합니다. 즉, 더 높은 고도의 필터 드라이버가 더 먼저 실행되어 다른 필터 드라이버보다 우선적으로 작업을 처리합니다.

필터 드라이버의 활용 예시
- 안티바이러스 소프트웨어는 필터 드라이버를 사용하여 파일에 접근하기 전에 악성 코드가 포함되어 있는지 검사합니다.
- 암호화 프로그램은 저장 장치에 데이터가 기록되기 전에 데이터를 암호화하도록 필터 드라이버를 활용합니다.
- 네트워크 방화벽은 네트워크 패킷을 감시하고 특정 트래픽을 차단합니다.
마무리
필터 드라이버는 시스템의 데이터 흐름을 모니터링하거나 수정하는 중요한 역할을 수행합니다. 보안, 데이터 무결성 및 성능 향상을 위한 다양한 소프트웨어에서 필수적으로 사용되는 기술입니다. Windows 시스템에서 필터 드라이버를 활용하면 보다 세밀한 제어와 감시 기능을 구현할 수 있습니다.
'OS > Windows' 카테고리의 다른 글
| Themida 오류 메시지 (0) | 2025.03.05 |
|---|---|
| chatgpt code (1) | 2025.03.03 |
| 볼륨 섀도 복사본 서비스 (1) | 2024.09.25 |
| [Sysinternals] 프로세스 모니터 (0) | 2024.08.15 |
| Windows Management Instrumentation(WMI) (0) | 2024.08.05 |