하이재킹은 무엇인가를 납치하고 도용한다는 뜻인데요,
2010년 이슈가 되었지만, 아직까지도 많은 악성코드 및 취약점이 생성 되고 있는 방식인 DLL 하이재킹은 어떠한 것을 뜻하는지 알아보도록 하겠습니다.
DLL 파일은 프로그램이 어떠한 행동을 하기 위해 실행해야 할 명령어들을 저장해놓은 라이브러리 라고 생각하시면 됩니다.
실행파일은 DLL 파일에 포함되어있는 라이브러리를 호출하여 실행됩니다.
그런데 여기서 문제가 되는 것은 정상적인 프로그램이 바이러스나 악성코드에 의해 변조된 DLL 파일을 참고 할 경우, 해당 프로그램에 의해 PC에 좋지 않는 영향을 줄 수 있다는 것입니다.
프로그램에서 실행할 DLL 파일의 경로를 정확히 지정하지 않은 경우, 윈도우가 DLL파일을 찾는 위치는 아래와 같습니다.
해커가 위의 취약점을 악용할 수 있는 예를 살펴보겠습니다.
위의 DLL파일을 찾는 위치 목록에서 1번부터 쭉 찾게 되는데, 원래 정상적인 Play.dll 파일은 6번의 환경변수 Path에서 찾아야 합니다.
하지만 “A player”는 5번 현재 작업 디렉터리에서 공격자에 의해 변형된 Play.dll을 참조하여 실행하게 됩니다.
위의 예에서 보신 바와 같이 많은 응용 프로그램들이 이러한 DLL 호출방식을 고려하여 만들어 졌기 때문에 이 취약점에 대한 패치를 준비하였으며, 이미 해당 취약점에 대한 보안 패치가 완료된 경우가 대부분입니다.
따라서, PC에 설치되어있는 응용프로그램의 업데이트 및 보안 패치를 최신으로 유지해주시고, Window의 보안 패치를 최신으로 유지해주시는 것이 DLL 하이재킹으로부터 고객님의 PC를 안전하게 지킬 수 있는 방법이 될 것입니다.
감사합니다.