App Control을 사용하여 PowerShell 보호
Windows 10에는 애플리케이션을 제어하는 데 사용할 수 있는 두 가지 기술인 비즈니스 용 App Control과 AppLocker가 포함되어 있습니다. 이를 통해 PowerShell 환경을 보호하는 데 도움이 되는 잠금 환경을 만들 수 있습니다.
AppLocker는 소프트웨어 제한 정책의 애플리케이션 제어 기능을 기반으로 합니다. AppLocker를 사용하면 특정 사용자 또는 그룹에 대한 앱을 허용하거나 거부하는 규칙을 만들 수 있습니다. 파일의 고유 속성을 기반으로 앱을 식별합니다.
Windows 10에서 WDAC(Windows Defender 애플리케이션 제어)로 도입된 비즈니스용 애플리케이션 제어를 사용하면 Windows에서 실행할 수 있는 드라이버와 애플리케이션을 제어할 수 있습니다.
잠금 정책 검색
PowerShell은 AppLocker 및 비즈니스용 App Control 시스템 전체 정책을 모두 검색합니다. AppLocker는 정책 적용 상태를 쿼리할 방법이 없습니다. AppLocker에서 시스템 전체 애플리케이션 제어 정책을 적용하는지 감지하기 위해 PowerShell은 두 개의 임시 파일을 만들고 실행할 수 있는지 테스트합니다. 파일 이름은 다음 이름 형식을 사용합니다.
$env:TEMP/__PSAppLockerTest__<random-8dot3-name>.ps1
$env:TEMP/__PSAppLockerTest__<random-8dot3-name>.psm1
비즈니스용 앱 제어는 Windows용 기본 애플리케이션 제어 시스템입니다. App Control은 정책 구성을 검색할 수 있는 API를 제공합니다. 앱 제어는 MSRC(Microsoft Security Response Center)에서 정의한 서비스 기준에 따라 보안 기능으로 설계되었습니다. 자세한 내용은 Windows 및 앱 컨트롤 및 AppLocker 기능 가용성에 대한 애플리케이션 컨트롤을 참조하세요.
참고 항목
App Control 또는 AppLocker 중에서 선택할 때 AppLocker 대신 비즈니스용 App Control을 사용하여 애플리케이션 컨트롤을 구현하는 것이 좋습니다. Microsoft는 더 이상 AppLocker에 투자하지 않습니다. AppLocker는 보안 수정 사항을 계속 받을 수 있지만 기능 향상은 받지 않습니다.
앱 제어 정책 적용
PowerShell이 앱 제어 정책에서 실행되면 정의된 보안 정책에 따라 해당 동작이 변경됩니다. 앱 제어 정책에서 PowerShell은 모드에서 정책에서 허용하는 신뢰할 수 있는 FullLanguage
스크립트 및 모듈을 실행합니다. 다른 모든 스크립트 및 스크립트 블록은 신뢰할 수 없으며 모드에서 ConstrainedLanguage
실행됩니다. PowerShell은 신뢰할 수 없는 스크립트가 모드에서 ConstrainedLanguage
허용되지 않는 작업을 수행하려고 할 때 오류를 throw합니다. 스크립트가 모드에서 올바르게 실행되지 않은 이유를 알기 어려울 수 있습니다 ConstrainedLanguage
.
앱 제어 정책 감사
PowerShell 7.4는 감사 모드에서 앱 제어 정책을 지원하는 새로운 기능을 추가했습니다. 감사 모드에서 PowerShell은 오류 없이 신뢰할 수 없는 스크립트를 모드에서 ConstrainedLanguage
실행하지만 대신 이벤트 로그에 메시지를 기록합니다. 로그 메시지는 정책이 적용 모드에 있는 경우 적용되는 제한을 설명합니다.
변경 내용 기록
Windows PowerShell 5.1은 App Control을 지원하는 최초의 PowerShell 버전입니다. 새로운 PowerShell 릴리스마다 App Control 및 AppLocker의 보안 기능이 향상되었습니다. 다음 섹션에서는 PowerShell의 각 버전에서 이 지원이 어떻게 변경되었는지 설명합니다. 변경 내용은 누적되므로 이후 버전에 설명된 기능에는 이전 버전의 기능이 포함됩니다.
PowerShell 7.4의 변경 내용
Windows에서 PowerShell이 앱 제어 정책으로 실행되면 정의된 보안 정책에 따라 해당 동작이 변경됩니다. 앱 제어 정책에서 PowerShell은 모드에서 정책에서 허용하는 신뢰할 수 있는 FullLanguage
스크립트 및 모듈을 실행합니다. 다른 모든 스크립트 및 스크립트 블록은 신뢰할 수 없으며 모드에서 ConstrainedLanguage
실행됩니다. 신뢰할 수 없는 스크립트가 허용되지 않는 작업을 수행하려고 하면 PowerShell에서 오류를 throw합니다. 스크립트가 모드에서 ConstrainedLanguage
올바르게 실행되지 않는 이유를 알기 어렵습니다.
PowerShell 7.4는 이제 감사 모드에서 앱 제어 정책을 지원합니다. 감사 모드에서 PowerShell은 신뢰할 수 없는 스크립트를 모드로 ConstrainedLanguage
실행하지만 오류를 throw하는 대신 이벤트 로그에 메시지를 기록합니다. 로그 메시지는 정책이 적용 모드에 있는 경우 적용되는 제한을 설명합니다.
PowerShell 7.3 변경 사항
- 이제 PowerShell 7.3은 App Control API를 통해 PowerShell 스크립트 파일을 차단하거나 허용하는 기능을 지원합니다.
PowerShell 7.2 변경 사항
AppLocker에는 거부 규칙만 있고 제한 모드는 실행 정책을 무시할 수 있는 정책을 적용하는 데 사용되지 않는 코너 사례 시나리오가 있었습니다. PowerShell 7.2부터 AppLocker 규칙이 명령보다
Set-ExecutionPolicy -ExecutionPolicy Bypass
우선하도록 변경되었습니다.이제 PowerShell 7.2는 잠긴 컴퓨터에서 모드 PowerShell 세션에서 cmdlet
NoLanguage
을Add-Type
사용할 수 없습니다.PowerShell 7.2는 이제 AppLocker 시스템 잠금 조건에서 COM 개체를 사용하는 스크립트를 허용하지 않습니다. COM 또는 DCOM을 내부적으로 사용하는 Cmdlet은 영향을 받지 않습니다.
추가 참고 자료
- App Control의 작동 방식 및 적용하는 제한 사항에 대한 자세한 내용은 App Control이 PowerShell에서 작동하는 방식을 참조하세요.
- App Control을 사용하여 PowerShell을 보호하는 방법에 대한 자세한 내용은 App Control을 사용하는 방법을 참조 하세요.
PowerShell