Share via


Windows Defender 애플리케이션 제어(WDAC)를 사용하여 스크립트 적용

참고

Windows Defender Application Control의 일부 기능은 특정 Windows 버전에서만 사용할 수 있습니다. 애플리케이션 제어 기능 가용성에 대해 자세히 알아봅니다.

중요

옵션 11 사용 안 함:스크립트 적용Windows Server 2016 또는 Windows 10 1607 LTSB에서 지원되지 않으므로 해당 플랫폼에서 사용하면 안 됩니다. 이렇게 하면 예기치 않은 스크립트 적용 동작이 발생합니다.

스크립트 적용 개요

기본적으로 정책에서 11 사용 안 함:스크립트 적용 옵션이 설정되지 않는 한 모든 WDAC 정책에 대해 스크립트 적용이 사용하도록 설정됩니다. WDAC 스크립트 적용에는 PowerShell 및 WDAC와 같은 인식된 스크립트 호스트 간의 핸드셰이크가 포함됩니다. 그러나 스크립트 호스트는 실제 적용 동작을 처리합니다. Microsoft HTML 애플리케이션 호스트(mshta.exe)와 같은 일부 스크립트 호스트는 WDAC UMCI 정책이 활성 상태인 경우 모든 코드 실행을 차단합니다. 대부분의 스크립트 호스트는 먼저 WDAC에 현재 활성 상태인 WDAC 정책에 따라 스크립트를 실행할 수 있는지 여부를 묻습니다. 그런 다음 스크립트 호스트는 사용자와 디바이스를 가장 잘 보호하기 위해 스크립트를 실행하는 방법을 차단, 허용 또는 변경합니다.

서명된 스크립트에 대한 유효성 검사는 WinVerifyTrust API를 사용하여 수행됩니다. 유효성 검사를 통과하려면 서명 루트가 디바이스의 신뢰할 수 있는 루트 저장소에 있어야 하며 WDAC 정책에서 이를 허용해야 합니다. 이 동작은 루트 인증서를 설치할 필요가 없는 실행 파일의 WDAC 유효성 검사와 다릅니다.

WDAC는 모든 스크립트 적용 이벤트에 대한 AppLocker - MSI 및 스크립트 이벤트 로그를 공유합니다. 스크립트 호스트가 WDAC에 스크립트를 허용해야 하는지 묻을 때마다 WDAC가 스크립트 호스트에 반환된 답변과 함께 이벤트가 기록됩니다. WDAC 스크립트 적용 이벤트에 대한 자세한 내용은 애플리케이션 제어 이벤트 이해를 참조하세요.

참고

정책에서 허용되지 않는 스크립트가 실행되면 WDAC는 스크립트가 "차단됨"임을 나타내는 이벤트를 발생합니다. 그러나 실제 스크립트 적용 동작은 스크립트 호스트에서 처리되며 실제로 파일 실행이 완전히 차단되지 않을 수 있습니다.

또한 일부 스크립트 호스트는 WDAC 정책이 감사 모드에만 있는 경우에도 동작 방식을 변경할 수 있습니다. 이 문서의 스크립트 호스트 특정 정보를 검토하고 환경 내에서 철저히 테스트하여 실행해야 하는 스크립트가 제대로 작동하는지 확인해야 합니다.

Windows의 일부인 인식 스크립트 호스트

PowerShell

WDAC 정책은 모든 PowerShell 스크립트(.ps1), 모듈(.psm1) 및 매니페스트(.psd1)가 전체 언어 권한으로 실행되도록 허용해야 합니다.

WDAC 정책은 허용된 모듈에 의해 로드되는 종속 모듈 도 허용해야 하며, WDAC가 적용될 때 모듈 함수를 이름으로 명시적으로 내보내야 합니다. 내보낸 함수(내보내기 이름 목록 없음)를 지정하지 않는 모듈은 여전히 로드되지만 모듈 함수에 액세스할 수 없습니다. 이름에 와일드카드(*)를 사용하는 모듈은 로드되지 않습니다.

WDAC 정책에서 허용되지 않는 PowerShell 스크립트는 여전히 실행되지만 제한된 언어 모드에서만 실행됩니다.

PowerShell 점 소싱 은 권장되지 않습니다. 대신 스크립트는 PowerShell 모듈을 사용하여 일반적인 기능을 제공해야 합니다. 허용되는 스크립트 파일이 점 소스 스크립트 파일을 실행하려고 하면 해당 스크립트 파일도 정책을 전달해야 합니다.

WDAC UMCI 정책이 적용되고 활성 WDAC 정책이 감사 모드인 경우에도 스크립트 적용을 사용하도록 설정하는 경우 WDAC는 대화형 PowerShell을 제한된 언어 모드로 전환합니다. 전체 언어 권한으로 대화형 PowerShell을 실행하려면 모든 정책에 대해 스크립트 적용을 사용하지 않도록 설정해야 합니다.

자세한 내용은 언어 모드 및 제한된 언어 모드 정보를 참조 하세요.

VBscript, cscript 및 jscript

WDAC 정책은 Windows 기반 스크립트 호스트(wscript.exe) 또는 Microsoft 콘솔 기반 스크립트 호스트(cscript.exe)를 사용하여 모든 스크립트를 실행할 수 있도록 허용해야 합니다. 그렇지 않은 경우 스크립트가 차단됩니다.

MSHTA(Microsoft HTML 애플리케이션 호스트) 및 MSXML

해당 정책이 감사 모드인 경우에도 스크립트 적용이 있는 WDAC 정책이 활성 상태인 경우 MSHTA 또는 MSXML을 사용하는 모든 코드 실행이 차단됩니다.

COM 개체

WDAC는 WDAC 정책이 확장하거나 추가로 제한할 수 있는 COM 개체에 대해 제한된 허용 목록을 추가로 적용합니다. COM 개체 적용은 옵션 11 사용 안 함:스크립트 적용의 영향을 받지 않습니다. COM 개체를 허용하거나 거부하는 방법에 대한 자세한 내용은 COM 개체 등록 허용을 참조하세요.

WDAC에서 직접 제어하지 않는 스크립트

WDAC는 .bat/.cmd 스크립트 파일을 포함하여 windows 명령 프로세서(cmd.exe)를 통해 실행되는 코드를 직접 제어하지 않습니다. 그러나 이러한 일괄 처리 스크립트를 실행하려고 하는 모든 것은 WDAC 제어의 적용을 받습니다. cmd.exe 실행할 필요가 없는 경우 완전히 차단하거나 호출 프로세스에 따라 예외로만 허용하는 것이 좋습니다. Windows Defender 애플리케이션 제어 정책을 사용하여 특정 플러그 인, 추가 기능 및 모듈 제어를 참조하세요.

WDAC는 많은 타사 Java 또는 Python 엔진과 같이 변경되지 않은 스크립트 호스트를 통해 실행되는 스크립트를 제어하지 않습니다. WDAC 정책에서 확인되지 않은 스크립트 호스트를 실행할 수 있도록 허용하는 경우 모든 스크립트가 해당 호스트를 통해 실행되도록 암시적으로 허용합니다. 타사 스크립트 호스트의 경우 해당 스크립트 호스트가 WDAC 정책에 대해 인식되는지 여부를 소프트웨어 공급업체와 검사 합니다.