코드 무결성 검사

메모리 무결성은 Windows 10, Windows 11 및 Windows Server 2016 이상에서 사용할 수 있는 VBS(가상화 기반 보안) 기능입니다. 메모리 무결성 및 VBS는 Windows의 위협 모델을 개선하고 Windows 커널을 악용하려는 맬웨어에 대해 더 강력한 보호를 제공합니다. VBS는 Windows 하이퍼바이저를 사용하여 커널이 손상될 수 있다고 가정하는 OS의 신뢰 루트가 되는 격리된 가상 환경을 만듭니다. 메모리 무결성은 VBS의 격리된 가상 환경 내에서 커널 모드 코드 무결성을 실행하여 Windows를 보호하고 강화하는 중요한 구성 요소입니다. 또한 메모리 무결성은 시스템을 손상시키는 데 사용할 수 있는 커널 메모리 할당을 제한하므로 보안 런타임 환경 내에서 코드 무결성 검사를 통과한 후에만 커널 메모리 페이지가 실행 가능하도록 하고 실행 파일 페이지 자체는 쓰기가 불가능합니다.

참고

메모리 무결성은 HVCI(하이퍼바이저 보호 코드 무결성) 또는 하이퍼바이저가 적용한 코드 무결성이라고도 하며 원래 Device Guard의 일부로 릴리스되었습니다. Device Guard는 그룹 정책 또는 Windows 레지스트리에서 메모리 무결성 및 VBS 설정을 찾는 것 외에는 더 이상 사용되지 않습니다.

코드 무결성 검사는 메모리 무결성의 커널 메모리 사용 요구 사항과의 호환성을 확인하고 다음 위반을 검색합니다.

오류 코드 코드 무결성 문제
0x2000:
  • 2 - 오류가 검색된 드라이버 코드의 주소입니다.
  • 3 - 풀 유형입니다.
  • 4 - 풀 태그(제공된 경우).

호출자가 실행 가능한 풀 유형을 지정했습니다. (예상: NonPagedPoolNx)
0x2001:
  • 2 - 오류가 검색된 드라이버 코드의 주소입니다.
  • 3 - 페이지 보호(WIN32_PROTECTION_MASK).
호출자가 실행 가능한 페이지 보호를 지정했습니다. (예상: 지워진 PAGE_EXECUTE* 비트)
0x2002:
  • 2 - 오류가 검색된 드라이버 코드의 주소입니다.
  • 3 - 페이지 우선 순위(MM_PAGE_PRIORITY 논리적으로 OR'd mdlMapping*).
호출자가 실행 가능한 MDL 매핑을 지정했습니다. (예상: MdlMappingNoExecute).
0x2003:
  • 2 - 이미지 파일 이름(유니코드 문자열)입니다.
  • 3 - 섹션 헤더의 주소입니다.
  • 4 - 섹션 이름(UTF-8로 인코딩된 문자열)입니다.
이미지에는 실행 가능 섹션과 쓰기 가능 섹션이 포함되어 있습니다.
0x2004:
  • 2 - 이미지 파일 이름(유니코드 문자열)입니다.
  • 3 - 섹션 헤더의 주소입니다.
  • 4 - 섹션 이름(UTF-8로 인코딩된 문자열)입니다.
이미지에는 페이지가 정렬되지 않은 섹션이 포함되어 있습니다.
0x2005:
  • 2 - 이미지 파일 이름(유니코드 문자열)입니다.
  • 3 - IAT 디렉터리.
  • 4 - 섹션 이름(UTF-8로 인코딩된 문자열)입니다.
이미지에는 실행 파일 섹션에 있는 IAT가 포함되어 있습니다.

이 옵션 활성화:

드라이버 검증 도구 관리자 또는 Verifier.exe 명령줄을 사용하여 하나 이상의 드라이버에 대한 코드 무결성 검사를 활성화할 수 있습니다. 자세한 내용은 드라이버 검증 도구 옵션 선택을 참조하세요. 코드 무결성 검사 옵션을 활성화하거나 비활성화하려면 컴퓨터를 다시 시작해야 합니다.

  • 명령줄에서

    명령줄에서 코드 무결성 검사는 0x02000000(비트 25)로 표시됩니다. 예를 들면 다음과 같습니다.

    verifier /flags 0x02000000 /driver MyDriver.sys

    이 기능은 다음 부팅 후에 활성화됩니다.

  • 드라이버 검증 도구 관리자 사용

  1. 드라이버 검증 도구 관리자를 시작합니다. 명령 프롬프트 창에 검증 도구 를 입력합니다.
  2. 사용자 지정 설정 만들기(코드 개발자용)를 선택하고 다음을 클릭합니다.
  3. (검사) 코드 무결성 검사를 선택합니다.
  4. 컴퓨터를 다시 시작합니다.

메모리 무결성 호환 코드 구현