Windows - AppLocker의 "DLL Rules"를 이용해 임의 경로에 설치한 DLL의 로딩을 막는 방법
대개의 경우 기본 설치한 시스템에서는 "Local Security Policy"의 "Security Settings" / "Application Control Policies" / "AppLocker"가 비활성화 상태입니다.
![app_locker_dll_rules_1.png](//sysnetblobaccount.blob.core.windows.net/sysnetimages/app_locker_dll_rules_1.png)
그중에서도 특히 DLL의 로딩을 제어하는 "DLL Rules"는 고급 옵션으로 분리돼 "Advanced" 탭에서 별도로 활성화시켜야 하는데요.
![app_locker_dll_rules_2.png](//sysnetblobaccount.blob.core.windows.net/sysnetimages/app_locker_dll_rules_2.png)
일단 활성화시키면, 다음과 같이 "AppLocker" 하위에 "DLL Rules" 노드가 보이고,
![app_locker_dll_rules_3.png](//sysnetblobaccount.blob.core.windows.net/sysnetimages/app_locker_dll_rules_3.png)
"Create Default Rules" 메뉴를 통해 다음과 같이 3개의 기본 정책을 생성할 수 있습니다.
![app_locker_dll_rules_4.png](//sysnetblobaccount.blob.core.windows.net/sysnetimages/app_locker_dll_rules_4.png)
또한 이런 구성으로 적용하겠다는 것을 다시 속성 창을 통해 "Enforce rules"로 설정하고,
![app_locker_dll_rules_5.png](//sysnetblobaccount.blob.core.windows.net/sysnetimages/app_locker_dll_rules_5.png)
마지막으로, 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은 크게 무리가 없어 보입니다. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]