DriverJack 은 잘 알려지지 않은 NTFS 기술을 남용하여 취약한 드라이버를 로드하도록 설계된 도구입니다. 이러한 방법은 기존 서비스를 하이재킹하여 시스템에서 드라이버 서비스 등록을 우회하고 드라이버 로드 이벤트에 표시된 이미지 경로도 스푸핑합니다. 취약한 드라이버의 존재를 더욱 위장하기 위해 공격은 에뮬레이트 파일 시스템 읽기 전용 우회를 악용하여 드라이버 파일을 로드하기 전에 마운트된 ISO에 있는 드라이버 파일의 내용을 교환합니다.
DriverJack은 에뮬레이트된 파일 시스템에 마운트된 파일을 RW 페이지로 다시 매핑하여 해당 내용을 덮어쓸 가능성을 남용합니다. 이 RO 우회는 IoCdfsLib 에서 구현됩니다.
ISO가 탑재되면 시작 또는 중지할 수 있는 서비스 드라이버 또는 트리거할 수 있는 서비스 드라이버를 선택하여 공격이 진행됩니다. 잘못 구성하지 않는 한 관리 권한이 필요합니다.
ISO 장착 및 드라이버 선택
드라이버 경로 탈취
이 기술은 설치 프로그램이 C:WindowsSystem32drivers
디렉터리에 직접 액세스하는 기능을 활용하여 해당 디렉터리에 악성 기호 링크를 배치할 수 있도록 합니다. 심볼릭 링크는 OS에 의해 우선적으로 처리되므로 서비스가 다시 시작될 때 악성 드라이버가 로드됩니다.
주요 단계:
NtLoadDriver
함수는 심볼릭 링크의 NT 경로를 정규화합니다. Secret Club 해커 집단의 jonasLyk와 협력하여 개발된 이 방법에는 드라이버 바이너리가 로드되는 경로의 일부인 DeviceBootDevice
NT 기호 링크를 리디렉션하는 작업이 포함됩니다. 이를 통해 시스템 내에서 루트킷을 숨길 수 있습니다.
단계:
BootDevice
심볼릭 링크 대상을 백업합니다.BootDevice
심볼릭 링크를 조작합니다.BootDevice
심볼릭 링크 대상을 복원합니다.이 방법은 Windows Defender 서비스 및 드라이버를 비활성화하기 위해 unDefender 프로젝트에서 사용된 기술에서 영감을 받았습니다. 드라이버 로드 이벤트는 ISO 탑재 지점을 가리키는 로드되는 드라이버의 실제 경로를 계속 표시합니다.
이 기술은 널리 알려져 있지만 시스템 불안정 가능성으로 인해 거의 사용되지 않습니다. 여기에는 BootPartition
에 할당된 드라이브 문자를 일시적으로 변경하여 드라이버 로드 프로세스가 다른 드라이브에 액세스하도록 속이는 작업이 포함됩니다. 앞에서 설명한 NT Symlink 남용과 결합하면 이 기술은 SysMon 및 기타 모니터링 도구의 감지를 우회하여 로드되는 드라이버의 경로를 완전히 가장할 수 있습니다.
DriverJack은 CDFS 에뮬레이트된 파일 시스템과 잘 알려지지 않은 NTFS 심볼릭 링크 속성을 활용하는 취약한 드라이버 로딩을 위한 또 다른 비전통적인 방법을 보여줍니다.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.