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