Windows - AppLocker의 "DLL Rules"를 이용해 임의 경로에 설치한 DLL의 로딩을 막는 방법
대개의 경우 기본 설치한 시스템에서는 "Local Security Policy"의 "Security Settings" / "Application Control Policies" / "AppLocker"가 비활성화 상태입니다.
그중에서도 특히 DLL의 로딩을 제어하는 "DLL Rules"는 고급 옵션으로 분리돼 "Advanced" 탭에서 별도로 활성화시켜야 하는데요.
일단 활성화시키면, 다음과 같이 "AppLocker" 하위에 "DLL Rules" 노드가 보이고,
"Create Default Rules" 메뉴를 통해 다음과 같이 3개의 기본 정책을 생성할 수 있습니다.
또한 이런 구성으로 적용하겠다는 것을 다시 속성 창을 통해 "Enforce rules"로 설정하고,
마지막으로, AppIDSvc(Application Identity) 서비스를,
Configure the Application Identity service
; https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-application-control/applocker/configure-the-application-identity-service
시작해 두어야 합니다.
sc.exe config AppIDSvc start= auto
net start AppIDSvc
기본 정책에 따르면, 다음의 경로 하위에 있는 DLL은 모든 사용자 계정에서 접근할 수 있지만,
- %WINDIR%\*
- %PROGRAMFILES%\*
그 외의 폴더에 위치한 DLL은 "Administrators" 그룹에 속한 계정만이 로딩을 할 수 있습니다. 또한, Administrators 그룹이라도 권한 상승한 경우에만 로딩할 수 있으므로 일반 사용자 계정으로는 %WINDIR%, %PROGRAMFIELS% 이외의 디렉터리에 있는 DLL은 로딩할 수가 없게 되는 것입니다.
개인적인 생각으로, 일반 사용자 시스템이 아닌, Web/DB/App 서버 등의 경우에는 안전을 위해 저 정도의 lock-down은 크게 무리가 없어 보입니다. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]