본문 바로가기
OS/Windows

필터 드라이버(Filter Driver)

by 헬로웬디 2025. 3. 3.

필터 드라이버

Windows 시스템에서 필터 드라이버는 기존 드라이버의 기능을 보강하거나 수정하기 위한 드라이버입니다. 기존 드라이버의 입출력 요청 패킷(IRP) 을 가로채서 추가적인 작업을 수행하는데 보통 특정 장치(파일 시스템, 디스크, 네트워크 등)에 대한 동작을 감시하거나 수정하는 데 사용됩니다.

 

대표적인 필터 드라이버 종류

  • 파일 시스템 필터 드라이버 (예: 안티바이러스, 암호화 프로그램)
  • 디스크 필터 드라이버 (예: 볼륨 암호화)
  • 네트워크 필터 드라이버 (예: 방화벽)
  • 미니필터 드라이버 (Microsoft에서 권장하는 방식)

필터 드라이버의 동작 방식

예를 들어 우리가 애플리케이션을 통해 파일을 오픈하면:

  1. 애플리케이션이 파일을 열기 위해 요청을 보냅니다.
  2. 파일 시스템 드라이버가 요청을 받아 특정 디바이스로 전달합니다.
  3. 디바이스가 요청을 처리하고 결과를 반환합니다.
  4. 파일 시스템 드라이버가 결과를 애플리케이션에 전달합니다.

이 과정에서 필터 드라이버는 파일 시스템 앞에 위치하여 데이터 흐름을 모니터링하거나 수정할 수 있습니다.

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