악용 방지 사용자 지정

적용 대상:

엔드포인트용 Defender를 경험하고 싶으신가요? 무료 평가판을 신청하세요.

악용 방지 기능은 운영 체제 프로세스 및 개별 앱에 다양한 악용 완화 기술을 자동으로 적용합니다.

개별 디바이스에서 Windows 보안 앱을 사용하여 이러한 설정을 구성합니다. 그런 다음 다른 디바이스에 배포할 수 있도록 구성을 XML 파일로 내보냅니다. 그룹 정책을 사용하여 XML 파일을 한 번에 여러 디바이스에 배포합니다. PowerShell을 사용하여 완화를 구성할 수도 있습니다.

이 문서에서는 악용 방지에서 사용할 수 있는 각 완화 기능을 나열합니다. 시스템 전체 또는 개별 앱에 완화를 적용할 수 있는지 여부를 나타내고 완화의 작동 방식에 대한 간략한 설명을 제공합니다.

또한 Windows 보안, PowerShell 및 MDM(모바일 디바이스 관리) CSP(구성 서비스 공급자)를 사용하여 완화 기능을 사용하거나 구성하는 방법을 설명합니다. 네트워크를 통해 배포할 수 있는 구성을 만드는 첫 번째 단계입니다. 다음 단계에서는 여러 디바이스에 구성을 생성, 내보내기, 가져오기 및 배포합니다.

경고

일부 보안 완화 기술에는 일부 애플리케이션과의 호환성 문제가 있을 수 있습니다. 프로덕션 환경 또는 네트워크의 나머지 부분에 구성을 배포하기 전에 감사 모드를 사용하여 모든 대상 사용 시나리오에서 악용 방지 기능을 테스트해야 합니다.

악용 방지 완화

개별 앱에 대해 모든 완화를 구성할 수 있습니다. 일부 완화 기능은 운영 체제 수준에서도 적용할 수 있습니다.

각 완화 기능을 설정, 해제 또는 기본값으로 설정할 수 있습니다. 일부 완화에는 테이블의 설명에 표시된 추가 옵션이 있습니다.

기본값은 항상 각 완화에 대해 기본값 사용 옵션에서 대괄호로 지정됩니다. 다음 예제에서 데이터 실행 방지의 기본값은 "켜기"입니다.

각 완화 설정에 대한 기본값 사용은 가정용 사용자의 일상적인 사용에 대한 기본 보호 수준에 대한 권장 사항을 나타냅니다. 엔터프라이즈 배포는 개별 요구 사항에 필요한 보호를 고려해야 하며 기본값에서 구성을 수정해야 할 수 있습니다.

각 완화에 연결된 PowerShell cmdlet은 이 문서의 맨 아래에 있는 PowerShell 참조 테이블을 참조하세요.

완화 설명 에 적용할 수 있습니다. 감사 모드 사용 가능
CFG(제어 흐름 가드) 간접 호출의 제어 흐름 무결성을 보장합니다. 필요에 따라 내보내기가 표시되지 않으며 엄격한 CFG를 사용할 수 있습니다. 시스템 및 앱 수준 아니요
데이터 실행 방지(DEP) 힙 및 스택과 같은 데이터 전용 메모리 페이지에서 코드가 실행되지 않도록 합니다. 32비트(x86) 앱에 대해서만 구성 가능하며, 다른 모든 아키텍처에 대해 영구적으로 사용하도록 설정됩니다. 필요에 따라 ATL thunk 에뮬레이션을 사용하도록 설정할 수 있습니다. 시스템 및 앱 수준 아니요
이미지에 대한 강제 임의 지정(필수 ASLR) /DYNAMICBASE로 컴파일되지 않은 이미지의 강제로 재배치합니다. 필요에 따라 재배치 정보가 없는 이미지 로드에 실패할 수 있습니다. 시스템 및 앱 수준 아니요
메모리 할당 임의 지정(상향식 ASLR) 가상 메모리 할당 위치를 임의로 지정합니다. 여기에는 시스템 구조 힙, 스택, TEB 및 PEB가 포함됩니다. 필요에 따라 64비트 프로세스에 대해 더 넓은 임의화 분산을 사용할 수 있습니다. 시스템 및 앱 수준 아니요
예외 체인 확인(SEHOP) 예외 디스패치 중에 예외 체인의 무결성을 보장합니다. 32비트(x86) 애플리케이션에 대해서만 구성할 수 있습니다. 시스템 및 앱 수준 아니요
힙 무결성 확인 힙 손상이 감지되면 프로세스를 종료합니다. 시스템 및 앱 수준 아니요
임의 코드 가드(ACG) 이미지 기반이 아닌 실행 코드의 도입을 방지하고 코드 페이지가 수정되지 않도록 합니다. 필요에 따라 스레드 옵트아웃을 허용하고 원격 다운그레이드를 허용할 수 있습니다(PowerShell에서만 구성 가능). 앱 수준만
낮은 무결성 이미지 차단 낮은 무결성으로 표시된 이미지가 로딩되지 않도록 방지합니다. 앱 수준만
원격 이미지 차단 원격 장치에서 이미지가 로딩되지 않도록 방지합니다. 앱 수준만 아니요
신뢰할 수 없는 글꼴 차단 시스템 글꼴 디렉터리, 특히 웹의 글꼴에 설치되지 않은 GDI 기반 글꼴을 로드하지 않습니다. 앱 수준만
코드 무결성 가드 Microsoft, WHQL 이상에서 서명한 이미지의 로드를 제한합니다. 필요에 따라 Microsoft Store 서명된 이미지를 허용할 수 있습니다. 앱 수준만
확장 지점 사용 안 함 AppInit DLL, 창 후크 및 Winsock 서비스 공급자와 같은 모든 프로세스에 DLL 삽입을 허용하는 다양한 확장성 메커니즘을 사용하지 않도록 설정합니다. 앱 수준만 아니요
Win32k 시스템 호출 사용 안 함 앱이 Win32k 시스템 호출 테이블을 사용하지 못하도록 합니다. 앱 수준만
자식 프로세스 허용 안 함 앱에서 자식 프로세스를 만들지 못하도록 합니다. 앱 수준만
주소 필터링 내보내기(EAF) 악성 코드로 해결되는 위험한 작업을 검색합니다. 필요에 따라 익스플로잇에서 일반적으로 사용하는 모듈에 의한 액세스의 유효성을 검사할 수 있습니다. 앱 수준만
주소 필터링 가져오기(IAF) 악성 코드로 해결되는 위험한 작업을 검색합니다. 앱 수준만
실행 시뮬레이션(SimExec) 중요한 API에 대한 호출이 합법적인 호출자에게 반환되도록 합니다. 32비트(x86) 애플리케이션에 대해서만 구성할 수 있습니다. ACG와 호환되지 않습니다. 앱 수준만
API 호출 확인(CallerCheck) 합법적인 호출자가 중요한 API를 호출하도록 합니다. 32비트(x86) 애플리케이션에 대해서만 구성할 수 있습니다. ACG와 호환되지 않음 앱 수준만
핸들 사용 확인 잘못된 핸들 참조에서 예외가 발생하도록 합니다. 앱 수준만 아니요
이미지 종속성 무결성 확인 Windows 이미지 종속성 로드에 대한 코드 서명을 적용합니다. 앱 수준만 아니요
스택 무결성 확인(StackPivot) 스택이 중요한 API에 대해 리디렉션되지 않았는지 확인합니다. ACG와 호환되지 않습니다. 앱 수준만

중요

프로그램 설정 섹션에 앱을 추가하고 개별 완화 설정을 구성하는 경우 시스템 설정 섹션에 지정된 것과 동일한 완화에 대한 구성 위에 적용됩니다. 다음 행렬 및 예제는 기본값의 작동 방식을 보여 줍니다.

프로그램 설정에서 사용 시스템 설정에서 사용 동작
아니요 프로그램 설정에서 정의한 대로
프로그램 설정에서 정의한 대로
아니오 시스템 설정에서 정의한 대로
아니요 아니요 기본 사용 옵션에서 정의된 기본값
  • 예제 1 Mikael은 시스템 설정 섹션의 DEP(데이터 실행 방지)기본적으로 해제로 구성합니다. Mikael은 test.exe 앱을 프로그램 설정 섹션에 추가합니다. 해당 앱 옵션의 DEP(데이터 실행 방지)에서 Mikael은 시스템 설정 재정의 옵션을 사용하도록 설정하고 스위치를 켜짐으로 설정합니다. 프로그램 설정 섹션에 나열된 다른 앱이 없습니다. 그 결과 DEP는 test.exe에 대해서만 사용하도록 설정됩니다. 다른 모든 앱에는 DEP가 적용되지 않습니다.

  • 예제 2 Josie는 시스템 설정 섹션의 DEP(데이터 실행 방지)기본적으로 해제로 구성합니다. Josie는 test.exe 앱을 프로그램 설정 섹션에 추가합니다. 해당 앱 옵션의 DEP(데이터 실행 방지)에서 Josie는 시스템 설정 재정의 옵션을 사용하도록 설정하고 스위치를 켜짐으로 설정합니다. 또한, Josie는 miles.exe 앱을 프로그램 설정 섹션에 추가하고 CFG(제어 흐름 보호)켜짐으로 구성합니다. Josie는 DEP 또는 해당 앱에 대한 다른 완화에 대해 재정의 시스템 설정 옵션을 사용하도록 설정하지 않습니다. 그 결과 DEP는 test.exe에 사용하도록 설정됩니다. miles.exe을 비롯한 다른 앱에는 DEP를 사용할 수 없습니다. miles.exe에서는 CFG를 사용할 수 있습니다.

참고

이 문서에서 문제가 발견되면 Windows Server/Windows 클라이언트 파트너에게 직접 보고하거나 해당 국가/지역의 Microsoft 기술 지원 번호를 사용할 수 있습니다.

Windows 보안 앱을 사용하여 시스템 수준 완화 구성

  1. 작업 표시줄에서 방패 아이콘을 선택하거나 시작 메뉴에 Windows 보안을 검색해 Windows 보안 앱을 엽니다.

  2. 앱 및 브라우저 컨트롤 타일(또는 왼쪽 메뉴 모음의 앱 아이콘)을 선택한 후 Exploit Protection을 선택합니다.

  3. 시스템 설정 섹션에서 구성할 완화를 찾은 뒤 다음 설정 중 하나를 선택합니다. 프로그램 설정 섹션에서 개별적으로 구성되지 않은 앱은 여기에 구성된 설정을 사용합니다.

    • 기본적으로 켜기 앱별 프로그램 설정 섹션에서 이 완화 기능이 설정되지 않은 앱에 대해 완화를 사용하도록 설정됩니다.
    • 기본적으로 끄기 앱별 프로그램 설정 섹션에서 이 완화 기능이 설정되지 않은 앱에 대해 완화를 사용하지 않도록 설정됩니다.
    • 기본 사용 - Windows 10 또는 Windows 11 설치로 설정된 기본 구성에 따라 완화 기능이 사용되거나 사용하지 않도록 설정됩니다. 기본값(켜짐 또는 꺼짐)은 항상 각 완화에 대해 기본 사용 레이블 옆에 지정됩니다.

    참고

    일부 설정을 변경할 때 사용자 계정 컨트롤 창이 표시될 수 있습니다. 관리자 자격 증명을 입력하여 설정을 적용합니다.

    일부 설정을 변경하려면 다시 시작해야 할 수 있습니다.

  4. 구성하려는 모든 시스템 수준 완화에 대해 이 작업을 반복합니다.

  5. 프로그램 설정으로 이동하여 완화를 적용할 앱을 선택합니다.

    1. 구성하려는 앱이 이미 나열된 경우 해당 앱을 선택한 다음 편집을 선택합니다.
    2. 앱이 목록에 없으면 목록 맨 위에서 사용자 지정할 프로그램 추가를 선택한 다음 앱을 추가할 방법을 선택합니다.
      • 프로그램 이름으로 추가를 사용해 해당 이름으로 실행 중인 모든 프로세스에 완화를 적용합니다. 확장명으로 파일을 지정해야 합니다. 완화를 해당 위치에서 해당 이름의 앱으로만 제한하는 전체 경로를 입력할 수 있습니다.
      • 정확한 파일 경로 선택을 사용하여 표준 Windows 탐색기 파일 선택 창에서 원하는 파일을 찾아 선택합니다.
  6. 앱을 선택하면 적용할 수 있는 모든 완화 기능 목록이 표시됩니다. 완화를 사용하도록 설정하려면 확인란을 선택한 다음 슬라이더를 켜기로 변경합니다. 원하는 추가 옵션을 선택합니다. 감사를 선택하면 감사 모드에서만 완화를 적용합니다. 프로세스 또는 앱을 다시 시작해야 하거나 Windows를 다시 시작해야 하는 경우 알림을 받습니다.

  7. 구성하려는 모든 앱 및 완화에 대해 이 단계를 반복합니다. 구성 설정이 완료되면 적용을 선택합니다.

이제 이러한 설정을 XML 파일로 내보내기 하거나 앱별 완화를 계속 구성할 수 있습니다.

구성을 XML 파일로 내보내면 한 디바이스에서 다른 디바이스로 구성을 복사할 수 있습니다.

PowerShell 참조

Windows 보안 앱을 사용하여 Exploit Protection을 구성하거나 PowerShell cmdlet을 사용할 수 있습니다.

가장 최근에 수정된 구성 설정은 PowerShell 또는 Windows 보안을 사용하는지 여부와 관계없이 항상 적용됩니다. 즉, 앱을 사용하여 완화를 구성한 다음 PowerShell을 사용하여 동일한 완화를 구성하면 앱이 업데이트되어 PowerShell에서 변경한 내용을 표시합니다. 그런 다음 앱을 사용하여 완화를 다시 변경하려는 경우 해당 변경 내용이 적용됩니다.

중요

그룹 정책을 통해 디바이스에 배포되는 모든 변경 내용은 로컬 구성을 재정의합니다. 초기 구성을 설정할 때 그룹 정책 구성이 적용되지 않는 디바이스를 사용하여 변경 내용이 재정의되지 않도록 합니다.

PowerShell 동사 Get 또는 Set을 cmdlet ProcessMitigation과 함께 사용할 수 있습니다. Get을 사용하면 디바이스에서 사용하도록 설정된 완화의 현재 구성 상태가 나열됩니다.-Name cmdlet과 app exe을 추가해 해당 앱에 대한 완화를 확인합니다.

Get-ProcessMitigation -Name processName.exe

중요

구성되지 않은 시스템 수준 완화에는 NOTSET상태가 표시됩니다.

시스템 수준 설정의 경우 NOTSET은 해당 완화에 대한 기본 설정이 적용되었음을 나타냅니다.

앱 수준 설정의 경우 NOTSET은 해당 완화에 대한 시스템 수준 설정이 적용되었음을 나타냅니다.

각 시스템 수준 완화에 대한 기본 설정은 Windows 보안에서 볼 수 있습니다.

Set을 사용하여 각 완화를 다음 형식으로 구성합니다.

Set-ProcessMitigation -<scope> <app executable> -<action> <mitigation or options>,<mitigation or options>,<mitigation or options>

여기서,

  • <범위>:
    • 완화를 특정 앱에 적용해야 함을 표시하는 -Name. 이 플래그 뒤에 앱의 실행 파일을 지정합니다.
    • 완화를 시스템 수준으로 적용해야 함을 표시하는 -System
  • <작업>:
    • 완화를 사용하도록 설정하는 -Enable
    • 완화를 사용하지 않도록 설정하는 -Disable
  • <완화>:
    • 아래 완화 cmdlet 표에 정의된 완화 cmdle과 모든 하위 옵션(공백으로 묶임)입니다. 각 완화는 쉼표로 구분됩니다.

예를 들어 ATL 썽크 에뮬레이션을 사용해 C:\Apps\LOB\tests 폴더에서 testing.exe이라는 실행 파일에 대한 DEP(데이터 실행 방지) 완화를 사용하도록 설정하고 해당 실행 파일이 자식 프로세스를 만들지 못하도록 하려면 다음 명령을 사용합니다.

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable DEP, EmulateAtlThunks, DisallowChildProcessCreation

중요

각 완화 옵션을 쉼표로 구분합니다.

시스템 수준에서 DEP를 적용하려면 다음 명령을 사용합니다.

Set-Processmitigation -System -Enable DEP

완화를 사용하지 않도록 설정하려면 -Enable-Disable로 바꾸면 됩니다. 단, 앱 수준 완화의 경우 이 작업을 수행하면 해당 앱에 대해서만 완화 기능을 사용할 수 없게 됩니다.

완화를 시스템 기본값으로 다시 복원해야 하는 경우 다음 예제와 같이 -Remove cmdlet도 포함해야 합니다.

Set-Processmitigation -Name test.exe -Remove -Disable DEP

일부 완화를 감사 모드로 설정할 수도 있습니다. 완화에 PowerShell cmdlet을 사용하는 대신 아래의 완화 cmdlet 표에 지정된 감사 모드 cmdlet을 사용합니다.

예를 들어 이전에 사용한 testing.exe에 대해 감사 모드에서 ACG(임의 코드 가드)를 사용하도록 설정하려면 다음 명령을 사용합니다.

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode

동일한 명령을 사용하지만 -Enable-Disable로 대체하여 감사 모드를 사용하지 않도록 설정할 수 있습니다.

PowerShell 참조 표

이 표에는 각 완화를 구성하는 데 사용할 수 있는 PowerShell cmdlet(및 관련 감사 모드 cmdlet)이 나와 있습니다.

완화 적용 대상 PowerShell cmdlets 감사 모드 cmdlet
CFG(제어 흐름 가드) 시스템 및 앱 수준 CFG, StrictCFG, SuppressExports 감사를 사용할 수 없음
데이터 실행 방지(DEP) 시스템 및 앱 수준 DEP, EmulateAtlThunks 감사를 사용할 수 없음
이미지에 대한 강제 임의 지정(필수 ASLR) 시스템 및 앱 수준 ForceRelocateImages 감사를 사용할 수 없음
메모리 할당 임의 지정(상향식 ASLR) 시스템 및 앱 수준 BottomUp, HighEntropy 감사를 사용할 수 없음
예외 체인 확인(SEHOP) 시스템 및 앱 수준 SEHOP, SEHOPTelemetry 감사를 사용할 수 없음
힙 무결성 확인 시스템 및 앱 수준 TerminateOnError 감사를 사용할 수 없음
임의 코드 가드(ACG) 앱 수준만 DynamicCode AuditDynamicCode
낮은 무결성 이미지 차단 앱 수준만 BlockLowLabel AuditImageLoad
원격 이미지 차단 앱 수준만 BlockRemoteImages 감사를 사용할 수 없음
신뢰할 수 없는 글꼴 차단 앱 수준만 DisableNonSystemFonts AuditFont, FontAuditOnly
코드 무결성 가드 앱 수준만 BlockNonMicrosoftSigned, AllowStoreSigned AuditMicrosoftSigned, AuditStoreSigned
확장 지점 사용 안 함 앱 수준만 ExtensionPoint 감사를 사용할 수 없음
Win32k 시스템 호출 사용 안 함 앱 수준만 DisableWin32kSystemCalls AuditSystemCall
자식 프로세스 허용 안 함 앱 수준만 DisallowChildProcessCreation AuditChildProcess
주소 필터링 내보내기(EAF) 앱 수준만 EnableExportAddressFilterPlus, EnableExportAddressFilter [1] 감사를 사용할 수 없음[2]
주소 필터링 가져오기(IAF) 앱 수준만 EnableImportAddressFilter 감사를 사용할 수 없음[2]
실행 시뮬레이션(SimExec) 앱 수준만 EnableRopSimExec 감사를 사용할 수 없음[2]
API 호출 확인(CallerCheck) 앱 수준만 EnableRopCallerCheck 감사를 사용할 수 없음[2]
핸들 사용 확인 앱 수준만 StrictHandle 감사를 사용할 수 없음
이미지 종속성 무결성 확인 앱 수준만 EnforceModuleDepencySigning 감사를 사용할 수 없음
스택 무결성 확인(StackPivot) 앱 수준만 EnableRopStackPivot 감사를 사용할 수 없음[2]

[1]: 다음 형식을 사용하여 프로세스에 대해 dll에 대한 EAF 모듈을 사용하도록 설정합니다.

Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll

[2]: 이 완화에 대한 감사는 PowerShell cmdlet을 통해 사용할 수 없습니다.

알림 사용자 지정

규칙이 트리거되고 앱이나 파일이 차단되는 경우의 알림을 사용자 지정하는 방법에 대한 내용은 Windows 보안을 참조하세요.

참고 항목

더 자세히 알아보고 싶으신가요? 기술 커뮤니티: 엔드포인트용 Microsoft Defender Tech Community의 Microsoft 보안 커뮤니티와 Engage.