DLL Hijacking

Nowaday/보안 이슈 2010. 8. 27. 22:26 Posted by 알 수 없는 사용자

요즘 DLL Hijacking Exploit 이 쏟아져 나오고 있습니다. >> Exploit Database - Search Dll Hijacking

DLL Hijacking은 윈도우즈 기반의 어플리케이션이 DLL을 로딩할 때 DLL의 경로가 지정되어 있지 않아서 발생하는 취약점입니다. 윈도우즈는 DLL의 경로가 지정되어 있지 않으면, DLL 검색 경로에서 DLL을 찾게 됩니다. 이 때 DLL의 검색 경로 우선순위는 다음과 같습니다.

1. 응용 프로그램이 로드되는 디렉터리
2. 시스템 디렉터리
3. 16비트 시스템 디렉터리
4. Windows 디렉터리
5. CWD(현재 작업 디렉터리)
6. PATH 환경 변수에 나열되는 디렉터리

위에 나와있는 6번째 경로까지 검색을 하였음에도 불구하고, DLL을 찾지 못하면 에러가 발생합니다. 이번 DLL Hijacking은 5번째의 CWD를 참조하는데서 문제가 발생하였습니다. 어플리케이션이 파일을 읽을 때 악성 DLL파일이 실제 파일과 같은 경로에 있으면 CWD로 인식하여 악성 DLL이 삽입되는 것입니다. 즉, 파일을 읽어들이는 윈도우즈 기반의 어플리케이션은 모두 공격 대상이 될 수 있습니다. 게다가 공유폴더를 이용한 원격 공격까지 가능해서 악성코드 유포에도 이용될 것으로 보입니다.

이에 임시 대응책으로 마이크로소프트에서는 DLL 검색 경로 알고리즘을 제어하기 위해 새로운 CWDIllegalInDllSearch 레지스트리를 소개하고 있습니다.

Microsoft 고객지원 : http://support.microsoft.com/kb/2264107

하지만 이것은 임시방편일 뿐이고, 어플리케이션의 오작동이 발생할 수 있습니다. 더구나 DLL Hijacking은 메커니즘 상의 문제라서 패치가 된다하여도 어플리케이션마다 별도로 패치하지 않으면 여전히 취약점으로 남을 것입니다. 아래 동영상은 Offensive Security에서 공개한 메타스플로잇을 이용한 공격 시연 영상입니다.

KB: We can't fix this one - Microsoft DLL Hijacking Exploit from Offensive Security on Vimeo.



<참고 사이트>
[1] http://hisjournal.net/blog/341#entry341Comment : 까보소님의 포스팅을 참조하였습니다.


AND