들어가며
다양한 기업용 PC 보안 솔루션을 접하다 보면 자연스레 호기심이 생깁니다. "이거 대체 어떻게 구현한 거지?"
사실 오래전, DLP 보안 솔루션 전문 기업에 입사 지원을 했다가 서류에서 탈락했던 아쉬운 기억이 있습니다.
원래부터 이 분야에 워낙 관심이 많았는데, 최근 여러 보안 솔루션의 동작 방식을 다시 분석하다 보니 그때의 기억이 새록새록 떠오르더군요.
USB를 꽂자마자 차단하고, 파일 첨부를 막아내는 이런 로우레벨의 제어 기술들은 단순히 유저모드의 소프트웨어 레벨에서는 구현이 불가능합니다.
USB를 꽂자마자 차단하고, 파일 첨부를 막아내는 이런 로우레벨의 제어 기술들은 단순히 유저모드의 소프트웨어 레벨에서는 구현이 불가능합니다. 그래서 과거의 아쉬움도 달래고 심도 있는 시스템 스터디도 할 겸, 직접 제 손으로 만들어보기로 했습니다.
상용 제품 수준을 목표로 하는 커널 드라이버 기반 DLP 시스템, OpenGuard는 그렇게 시작되었습니다.
다음편 보러가기
https://imoracle.tistory.com/73
[DLP 개발기] 2. 커널 드라이버와 IOCTL, 그리고 E2E 파이프라인 구축
들어가며지난 1편에서 설계한 아키텍처를 바탕으로, 이번 편에서는 실제로 데이터가 흐르고 동작하는 E2E(End-to-End) 파이프라인을 완성해 보겠습니다. 목표는 심플합니다. "관리자 웹에서 정책을
imoracle.tistory.com
OpenGuard 핵심 요구사항 및 구현 아이디어
본격적인 개발에 앞서 OpenGuard가 담당할 핵심 기능과 이를 구현하기 위한 기술적 아이디어를 정리했습니다.
시스템은 크게 5가지 축으로 동작하게 됩니다.
1. 정보 유출 방지 : 매체별 차단(USB/Bluetooth/WiFi 등), 파일 첨부 차단, 화면 캡처 및 클립보드 제어, 공유폴더 차단 등
2. 민감 정보 관리 : 실시간 검사, 예약 검사, 파일 자동 암호화, 파일 완전 삭제
3. 소프트웨어 실행 관리 : 블랙리스트 기반 카테고리별 프로세스 실행 차단 및 경고
4. 웹사이트 접속 관리 : 카테고리/URL 기반 네트워크 접속 제어
5. 자가 보호 : 에이전트 및 사용자 UI 커널기반 보호
기능들을 구상하면서 몇 가지 재미있는 구현 방식을 설계해 보았습니다.
- 파일 첨부 차단 우회 기법 : 무작정 에러 팝업을 띄우는 대신, 프로그램 입장에서는 정상적으로 첨부된 것처럼 보이게 하되 실제로는 0바이트짜리 빈 파일을 첨부시키는 방식입니다. 이를 위해 Minifilter의 PostRead 콜백에서 버퍼를 ZeroMemory 로 덮어씌우는 트릭을 사용할 예정입니다.
- 투명 암호화 (Transparent Encryption) : 파일 저장 시점에 Minifilter가 개입하여 자동으로 파일을 암호화 하고 자체 확장자를 붙이는 방식을 구현합니다.
- 실시간 검사 트리거 최적화 : 모든 I/O를 감시하면 부하가 심하므로, IRP_MJ_WRITE(파일 내용 수정), IRP_MJ_INFORMATION(파일 이름 변경), IRP_MJ_CREATE(신규 파일 생성) 세 가지 핵심 액션만 후킹하여 실시간 검사를 수행합니다.
전체 아키텍처
위의 구상을 바탕으로 설계한 OpenGuard의 전체 구조입니다. 핵심은 커널 드라이버가 DB나 외부 정책을 직접 읽지 않는다는 점입니다.

유저모드 에이전트가 서버로부터 정책을 받아 IOCTL을 통해 드라이버로 밀어 넣으면, 커널 드라이버는 메모리에 올라온 정책 구조체만 확인하여 차단 여부를 빠르게 판단하는 구조입니다.
기술 스택
| 구성 요소 | 적용 기술 |
| 커널 드라이버 | C, WDK (KMDF) |
| 유저모드 에이전트 | C++ (Win32) |
| 관리자 웹 콘솔 | PHP 8.4 + MariaDB |
| 사용자 UI 프로그램 | C# WPF (.Net framework 4.8) |
| 빌드 환경 | Visual Studio 2022 + WDK |
| 테스트 환경 | Windows 11 (테스트 모드) + VMware |
개발 로드맵
한 번에 모든 것을 만들려다간 지쳐 떨어지기 십상이므로, 최대한 명확하게 단계를 나누어 개발을 진행합니다.
- 1단계 - 파이프라인 구축 : IOCTL 통신 골격 작성, 소프트웨어 실행 차단, 관리자 웹 기초. (정책 서버의 변경 사항이 드라이버까지 도달하는 E2E 파이프라인 완성이 목표)
- 2단계 - 매체 제어 : Minifilter 입문, USB 차단 및 읽기 전용 처리, 파일 첨부 차단(빈 파일 치환 로직 구현).
- 3단계 - 네트워크 & 모니터링 제어 : WFP 기반 웹사이트 차단, 화면 캡처 및 클리보드 차단.
- 4단계 - 민감정보 제어 : 실시간 패턴 검사, 파일 자동 암호화 및 완전 삭제.
- 5단계 - 완성도 향상 : 승인 요청 시스템, 에이전트 자기 보호(Self-Defense) 기능 및 전체 시스템 통합
- ?단계 - 그 외 기능들 추가 및 다듬기 : 출력물 워터마크, USB 외에도 다양한 연결장치 차단 등
다음 편 예고
다음 2편에서는 커널 드라이버 프로젝트 초기 세팅부터 IOCTL 통신 골격을 구현하는 과정까지 다루어 보겠습니다.
이전에 진행했던 안티치트 프로젝트(SimpleAC)에서 다루었던 ObRegisterCallbacks 구조를 베이스로,
에이전트와 커널 드라이버가 정책을 주고받는 튼튼한 파이프라인을 만들어 볼 예정입니다.
끝까지 읽어주셔서 감사합니다.
다음편 보러가기
https://imoracle.tistory.com/73
[DLP 개발기] 2. 커널 드라이버와 IOCTL, 그리고 E2E 파이프라인 구축
들어가며지난 1편에서 설계한 아키텍처를 바탕으로, 이번 편에서는 실제로 데이터가 흐르고 동작하는 E2E(End-to-End) 파이프라인을 완성해 보겠습니다. 목표는 심플합니다. "관리자 웹에서 정책을
imoracle.tistory.com
'Project > [DLP] OpenGuard' 카테고리의 다른 글
| [DLP 개발기] 5. Minifilter 확장: 민감정보 패턴 검사와 파일 첨부 차단 (0) | 2026.05.08 |
|---|---|
| [DLP 개발기] 4. WFP DNS 차단의 한계와 유저모드 클립보드 제어 (0) | 2026.05.06 |
| [DLP 개발기] 3. WPF 트레이 앱 통신과 커널 레벨 매체/파일 제어 (USB & Minifilter) (0) | 2026.05.06 |
| [DLP 개발기] 2. 커널 드라이버와 IOCTL, 그리고 E2E 파이프라인 구축 (0) | 2026.04.29 |