[하루한줄] CVE-2020-14418 : madCodeHook library LPE
URL
Target
All software using MadCodeHook <= v4.1.3
- Cisco AMP <= v7.2.13
- Morphisec Unified Threat Prevention Platform <= v4.1.2
Explain
madCodeHook은 다양한 API hooking 기능을 지원하는 third party 라이브러리입니다. madCodeHook라이브러리에 포함된 ExprevDriver.sys
라는 드라이버는 유저 모드 프로세스에 Protector32.dll
혹은 Protector64.dll
을 삽입해 그 프로세스를 보호 및 감시할 수 있습니다. DLL injection 공격을 방지하는 기능과 프로세스 모니터링 기능을 제공하므로 몇몇 보안 제품에서 madCodeHook 라이브러리를 사용합니다.
아이러니하게도 DLL injection을 방지하기 위해 사용되는 ExprevDriver.sys
드라이버에 path redirection을 이용한 toctou 취약점이 존재하고, 해커는 이를 악용해 DLL injection을 할 수 있습니다.
실제
Protector64.dll
이 존재하는 디렉터리를 가리키는 juction을 생성합니다.“mklink /J C:\users\<username>\Desktop\exprev C:\Program Files\Cisco\AMP\exprev”
ExprevDriver.sys
에 IOCTL을 넘겨줍니다.“C:\users\<username>\Desktop\exprev\Protector64.dll”
IOCTL을 사용해
ExprevDriver.sys
가 삽입할 DLL의 경로와 대상 프로세스를 지정할 수 있습니다.ExprevDriver.sys
는 DLL을 삽입하기 전에 DLL의 전자서명을 검증하는 단계를 거치는데, IOCTL로 설정된 경로를 사용합니다. Protector64.dll의 경로를 1번에서 만들어 둔 juction으로 설정해줍니다.디렉터리 juction을 삭제하고 가짜
Protector64.dll
을 생성합니다.DLL의 전자서명 검증 이후 juction을 삭제하고 2번 단계에서 지정해준 경로에
Protector64.dll
라는 이름의 악성 DLL을 생성합니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.