
커널 모드 Windows 드라이버로, 프로세스 생성을 가로채고 eqnedt32.exe에 의해 생성된 악성 하위 프로세스를 차단하여 CVE-2017-11882 악용을 방지합니다.
CVE-2017-11882를 무력화하는 Windows 드라이버 : )
이 프로젝트는 커널 드라이버와 사용자 모드 알림 구성 요소로 나뉘며, **역호출 모델(inverted call model)**을 사용하여 사용자 정의 장치를 통해 통신합니다.
DriverEntry는 PsSetCreateProcessNotifyRoutineEx 콜백을 등록하여 새 프로세스가 실행되기 전에 시스템 전체의 모든 프로세스 생성 시 드라이버가 동기적으로 호출됩니다.ZwOpenProcess를 통해 부모 프로세스를 열고 ProcessImageFileName을 쿼리하여 전체 NT 경로를 검색합니다. eqnedt32.exe에 대한 후행 접미사 RtlCompareUnicodeString 비교를 통해 악용 시도인지 판단합니다.CreateInfo->CreationStatus = STATUS_ACCESS_DENIED로 설정합니다. 이는 콜백에서 프로세스 실행을 중단하는 문서화된 방법입니다.에이전트는 두 개의 스레드를 사용합니다. 하나는 WaitForSingleObject + GetOverlappedResult로 역호출 루프를 실행하는 I/O 디스패처이고, 다른 하나는 경고를 표시하고 MessageBoxW로 렌더링하는 UI 작업자입니다. 핸들은 소형 RAII AutoHandle 래퍼로 관리됩니다.
전체 탐지는 커널이 보고한 부모 PID에 의존합니다. 공격자가 PROC_THREAD_ATTRIBUTE_PARENT_PROCESS와 함께 NtCreateUserProcess를 호출하면 페이로드의 부모를 explorer.exe로 재지정하여 탐지를 피할 수 있습니다 : )
이 솔루션은 프로세스 인젝션이나 메모리 내 코드 실행을 수행하는 고급 악용을 탐지하지 못합니다. 이 CVE에 대한 일반적인 악용(새로운 악성 프로세스를 생성)만 탐지합니다.