이는 Windows에서 아이콘 변경 대화 상자를 사용하는 Windows 탐색기 DLL 주입 기술입니다.
먼저 임시 디렉터리에 폴더가 생성되고 SHObjectProperties를 사용하여 폴더의 속성이 열립니다. 시스템 언어와 독립적으로 창 핸들을 검색하기 위해 EnumWindows는 열려 있는 모든 창에서 고유한 폴더 이름을 확인하는 콜백 함수와 함께 사용됩니다.
속성 페이지를 통해 변경 아이콘 대화 상자가 호출되며 이 대화 상자의 핸들도 EnumWindows를 통해 검색됩니다. 마지막으로 아이콘 경로가 DLL(이 경우 확장자는 .ico)로 변경되어 확인 버튼을 누른 후 탐색기가 DLL을 로드하게 됩니다.
"아이콘"은 실제로 Resource Hacker를 사용하여 추가된 아이콘 리소스가 있는 계산기 앱을 여는 확장명이 .ico인 간단한 DLL 파일입니다.
폴더 보기의 아이콘 모양에 몇 가지 예외가 있습니다. 저는 두 가지 다른 Windows 10 버전(최신 버전과 이전 버전)과 Windows 11에서 이것을 테스트했습니다.
Widnows 10 버전 모두에서 확장명이 .ico로 변경되면 DLL 내부에 저장된 아이콘이 표시되지 않았습니다.
그러나 최신 Windows 10 버전에서는 사진 앱 내부의 "아이콘"을 열려고 할 때까지 작동했습니다. 그 이후로는 다시 만들 수 없었습니다.
Windows 11에서는 아이콘이 탐색기 보기에 일반 아이콘처럼 표시되었습니다. 그런데 사진 앱에서 열면 오류가 표시됩니다.
단순히 폴더 아이콘을 변경하려는 사용자가 대신 악성 DLL을 탐색기에 삽입할 수 있기 때문에 이 동작은 확실히 흥미롭습니다. 이는 다음과 같이 보일 수 있습니다:
이는 일반적인 DLL 주입 API를 사용하지 않기 때문에 Explorer 프로세스에 DLL을 주입하는 매우 은밀한 방법입니다. 그러나 두 개의 짧은 팝업이 생성되지만 그다지 방해가 되지는 않습니다. 따라서 위협 행위자가 합법적인 탐색기 프로세스를 통해 코드를 실행하거나 UMD 루트킷을 로드하기 위해 AV 회피 기술로 사용될 수 있습니다.
또한 .ico 파일로 마스크된 DLL을 확산시키는 것은 흥미로운 공격 벡터가 될 수 있습니다.
올바른 창 핸들을 얻기 위해 Visual Studio와 함께 설치되는 도구인 Spy++를 사용했습니다.
아름다운 폴더 아이콘을 제공해 주신 Microsoft의 Bill G.에게 깊은 감사를 드립니다!
아름다운 주입 아이콘을 주신 인터넷상의 임의의 사람에게 감사드립니다!