Windows 부팅 프로세스 보호
Windows에는 맬웨어로부터 사용자를 보호하는 데 도움이 되는 많은 기능이 있으며 놀랍도록 좋은 작업을 수행합니다. 비즈니스에서 개발하여 내부적으로 사용하는 앱을 제외하고 모든 Microsoft Store 앱은 일련의 요구 사항을 인증하고 Microsoft Store에 포함해야 합니다. 이 인증 프로세스는 보안을 포함한 여러 가지 기준을 검사하며 Microsoft Store에서 맬웨어를 차단하는 효과적인 방법입니다. 악의적인 앱이 통과하더라도 Windows에는 효과를 완화할 수 있는 일련의 보안 기능이 포함되어 있습니다. 예를 들어 Microsoft Store 앱은 샌드박스가 적용되며 사용자 데이터에 대한 액세스 또는 시스템 설정 변경에 필요한 권한이 없습니다.
Windows에는 데스크톱 앱 및 데이터에 대한 여러 수준의 보호 기능도 있습니다. Windows Defender 바이러스 백신은 클라우드 기반 실시간 검색을 사용하여 악성으로 알려진 앱을 식별하고 격리합니다. Windows Defender SmartScreen은 맬웨어로 인식되더라도 신뢰할 수 없는 앱을 실행할 수 있도록 허용하기 전에 사용자에게 경고합니다. 앱이 시스템 설정을 변경할 수 있도록 하려면 사용자는 사용자 계정 컨트롤을 사용하여 앱 관리자 권한을 부여해야 합니다.
이러한 구성 요소는 Windows에서 맬웨어로부터 보호하는 방법 중 일부에 불과합니다. 그러나 이러한 보안 기능은 Windows가 시작된 후에만 보호됩니다. 최신 맬웨어 및 특히 부트킷은 Windows 이전에 시작하여 OS 보안을 완전히 무시하고 숨겨진 상태로 유지할 수 있습니다.
UEFI(Unified Extensible Firmware Interface) 지원을 통해 PC에서 Windows 10 또는 Windows 11을 실행하면 신뢰할 수 있는 부팅이 전원을 켜는 순간부터 맬웨어로부터 PC를 보호합니다. 이 보호는 맬웨어 방지 소프트웨어가 인계될 때까지 계속됩니다. 맬웨어가 PC를 감염하는 경우 숨겨질 수 없습니다. 신뢰할 수 있는 부팅은 맬웨어가 마스킹할 수 없는 방식으로 인프라에 대한 시스템의 무결성을 확인할 수 있습니다. UEFI가 없는 PC의 경우에도 Windows는 이전 Windows 버전에 비해 향상된 시작 보안을 제공합니다.
먼저 루트킷과 해당 기능을 자세히 살펴보겠습니다. 그런 다음 Windows에서 보호를 보장하는 방법을 설명합니다.
위협: 루트킷
루트킷 은 정교하고 위험한 유형의 맬웨어입니다. OS와 동일한 권한을 사용하여 커널 모드에서 실행됩니다. 루트킷은 OS와 동일한 권한을 가지며 그 전에 시작하기 때문에 자신과 다른 애플리케이션을 완전히 숨길 수 있습니다. 루트킷은 종종 로컬 로그인을 우회하고, 암호 기록 및 키 입력을 기록하고 사적 파일을 전송하고 암호화 데이터를 캡처할 수 있는 전체 맬웨어 집합의 일부일 수 있습니다.
시작 프로세스의 여러 단계에서 다양한 유형의 루트킷이 로드됩니다.
- 펌웨어 루트킷. 이러한 키트는 WINDOWS 전에 루트킷을 시작할 수 있도록 PC의 기본 입력/출력 시스템 또는 기타 하드웨어의 펌웨어를 덮어씁니다.
- 부트킷. 이러한 키트는 PC가 OS 전에 부트킷을 로드할 수 있도록 OS의 부팅 로더(OS를 시작하는 작은 소프트웨어 조각)를 대체합니다.
- 커널 루트킷. 이러한 키트는 OS 커널의 일부를 대체하므로 OS가 로드될 때 루트킷이 자동으로 시작될 수 있습니다.
- 드라이버 루트킷. 이 킷은 Windows가 PC 하드웨어와 통신할 때 사용하는 신뢰할 수 있는 드라이버를 가장합니다.
대책
Windows는 시작 프로세스 중에 루트킷 및 부트킷이 로드되지 않도록 하는 네 가지 기능을 지원합니다.
- 보안 부팅. UEFI 펌웨어 및 TPM(신뢰할 수 있는 플랫폼 모듈)이 있는 PC는 신뢰할 수 있는 OS 부팅 로더만 로드하도록 구성할 수 있습니다.
- 신뢰할 수 있는 부팅. Windows는 로드하기 전에 시작 프로세스의 모든 구성 요소의 무결성을 확인합니다.
- ELAM(맬웨어 방지 조기 실행). ELAM은 로드하기 전에 모든 드라이버를 테스트하여 승인되지 않은 드라이버가 로드되지 않도록 합니다.
- 계획 부팅. PC의 펌웨어는 부팅 프로세스를 기록하며 Windows는 PC의 상태를 객관적으로 평가할 수 있는 신뢰할 수 있는 서버로 보낼 수 있습니다.
그림 1은 Windows 시작 프로세스를 보여줍니다.
그림 1. 모든 단계에서 맬웨어를 차단하는 보안 부팅, 신뢰할 수 있는 부팅 및 계획 부팅:
보안 부팅 및 계획 부팅은 UEFI 2.3.1 및 TPM 칩이 있는 PC에서만 가능합니다. 다행히 Windows 하드웨어 호환성 프로그램 요구 사항을 충족하는 모든 Windows 10 및 Windows 11 PC에는 이러한 구성 요소가 있으며 이전 버전의 Windows용으로 설계된 많은 PC도 있습니다.
이어지는 섹션에서는 보안 부팅, 신뢰할 수 있는 부팅, ELAM, 계획 부팅에 대해 설명합니다.
보안 부팅
PC가 시작되면 먼저 OS 부팅 로더를 찾습니다. 보안 부팅이 없는 PC는 PC의 하드 드라이브에 있는 부팅 로더를 실행합니다. PC가 신뢰할 수 있는 OS인지 루트킷인지 알 수 있는 방법은 없습니다.
UEFI가 포함된 PC가 시작하면 PC는 먼저 펌웨어가 디지털 서명되었는지 확인하여 펌웨어 루트킷의 위험을 줄입니다. 보안 부팅이 사용하도록 설정된 경우 펌웨어는 부팅 로더의 디지털 서명을 검사하여 수정되지 않았는지 확인합니다. 부팅 로더가 수정되지 않았다면 펌웨어는 다음 중 하나의 조건이 충족된 경우 부팅 로더를 시작합니다.
- 신뢰할 수 있는 인증서를 사용하여 부팅 로더가 서명되었습니다. Windows용으로 인증된 PC의 경우 Microsoft 인증서를 신뢰할 수 있습니다.
- 사용자가 부팅 로더의 디지털 서명을 수동으로 승인했습니다. 이 작업을 통해 사용자는 비 Microsoft 운영 체제를 로드할 수 있습니다.
모든 x86 기반 Windows PC용 Certified는 보안 부팅과 관련된 몇 가지 요구 사항을 충족해야 합니다.
- 기본적으로 보안 부팅을 사용하도록 설정되어 있어야 합니다.
- Microsoft의 인증서를 신뢰해야 합니다(따라서 Microsoft가 서명한 모든 부팅 로더).
- 사용자가 다른 부팅 로더를 신뢰하도록 구성할 수 있도록 허용해야 합니다.
- 사용자가 완전히 보안 부팅을 해제할 수 있도록 허용해야 합니다.
이러한 요구 사항은 루트킷으로부터 보호하는 동시에 원하는 모든 OS를 실행할 수 있도록 도와줍니다. 세 가지 옵션을 사용하여 Microsoft가 아닌 타사 운영 체제를 실행할 수 있습니다.
- 인증된 부팅 로더와 함께 OS를 사용합니다. 모든 Windows용 인증 PC는 Microsoft의 인증서를 신뢰해야 하므로 Microsoft는 모든 Windows용 Certified PC에서 신뢰할 수 있도록 Microsoft가 아닌 부팅 로더를 분석하고 서명하는 서비스를 제공합니다. 실제로 Linux를 로드할 수 있는 소스 부팅 로더를 열 수 있습니다. 인증서를 가져오는 프로세스를 시작하려면 로 https://partner.microsoft.com/dashboard이동합니다.
- UEFI를 구성하여 사용자 지정 부팅 로더를 신뢰합니다. 모든 Windows PC용 Certified를 사용하면 UEFI 데이터베이스에 서명을 추가하여 인증되지 않은 부팅 로더를 신뢰할 수 있으므로 홈메이드 운영 체제를 포함한 모든 OS를 실행할 수 있습니다.
- 보안 부팅을 끕니다. 모든 Windows PC용 Certified 를 사용하면 모든 소프트웨어를 실행할 수 있도록 보안 부팅을 끌 수 있습니다. 그러나 이 작업은 부트킷으로부터 보호하는 데 도움이 되지 않습니다.
맬웨어가 이러한 옵션을 오용하는 것을 방지하려면 사용자는 수동으로 UEFI 펌웨어를 구성하여 인증되지 않은 부팅 로더를 신뢰하거나 보안 부팅을 해제해야 합니다. 소프트웨어는 보안 부팅 설정을 변경할 수 없습니다.
보안 부팅의 기본 상태는 광범위한 신뢰 원을 가지므로 고객이 필요하지 않을 수 있는 부팅 구성 요소를 신뢰할 수 있습니다. Microsoft 타사 UEFI CA 인증서는 모든 Linux 배포판에 대한 부팅 로더에 서명하므로 UEFI 데이터베이스에서 Microsoft 타사 UEFI CA 서명을 신뢰하면 시스템의 공격 표면이 증가합니다. 단일 Linux 배포판만 신뢰하고 부팅하려는 고객은 원하는 구성보다 모든 배포를 신뢰합니다. 부팅 로더의 취약성은 시스템을 노출하고 고객이 사용하지 않으려는 부팅 로더에 대한 악용 위험에 처하게 합니다(예: GRUB 부팅 로더 또는 펌웨어 수준 루트킷 이 부팅 구성 요소에 영향을 미치는 경우). 보안 코어 PC 는 기본적으로 고객에게 PC의 가장 안전한 구성을 제공하기 위해 Microsoft 타사 UEFI CA 서명을 신뢰하지 않도록 보안 부팅을 사용하도록 설정하고 구성해야 합니다.
Linux와 같은 운영 체제와 UEFI 서명으로 서명된 구성 요소를 신뢰하고 부팅하려면 BIOS 메뉴에서 보안 코어 PC를 구성하여 다음 단계에 따라 UEFI 데이터베이스에 서명을 추가할 수 있습니다.
- 펌웨어 메뉴를 엽니다.
- PC를 부팅하고 제조업체의 키를 눌러 메뉴를 엽니다. 사용되는 일반적인 키: Esc, Delete, F1, F2, F10, F11 또는 F12. 태블릿에서 일반적인 단추는 볼륨 크게 또는 볼륨 다운입니다. 시작하는 동안 키를 언급하는 화면이 있는 경우가 많습니다. 화면이 없거나 화면이 너무 빨리 표시되어 표시되지 않는 경우 제조업체 사이트를 확인합니다.
- 또는 Windows가 이미 설치된 경우 로그온 화면 또는 시작 메뉴에서 전원( ) > Shift 키를 누른 상태에서 다시 시작을 선택합니다. 고급 옵션 > UEFI 펌웨어 설정 문제 해결 > 을 선택합니다.
- 펌웨어 메뉴에서 보안 > 보안 부팅으로 이동하고 "타사 CA"를 신뢰하는 옵션을 선택합니다.
- 변경 내용을 저장하고 종료합니다.
Microsoft는 Linux 및 IHV 에코시스템 파트너와 계속 협력하여 신뢰할 수 있는 게시자와 구성 요소에 대해서만 보안을 유지하고 신뢰를 옵트인하는 데 도움이 되는 최소 권한 있는 기능을 설계합니다.
대부분의 모바일 장치와 마찬가지로 Microsoft Surface RT 디바이스와 같은 Arm 기반 디바이스는 Windows 8.1만 실행하도록 설계되었습니다. 따라서 보안 부팅을 끌 수 없으며 다른 OS를 로드할 수 없습니다. 다행히 다른 운영 체제를 실행하도록 설계된 ARM 프로세서 디바이스의 대규모 시장이 있습니다.
신뢰할 수 있는 부팅
신뢰할 수 있는 부팅은 보안 부팅이 종료되는 위치를 인수합니다. 부팅 로더는 로드하기 전에 Windows 커널의 디지털 서명을 확인합니다. Windows 커널은 부팅 드라이버, 시작 파일 및 ELAM을 포함하여 Windows 시작 프로세스의 다른 모든 구성 요소를 확인합니다. 파일이 수정된 경우 부팅 로더는 문제를 검색하고 거부 손상된 구성 요소를 로드하지 않습니다. 종종 Windows는 손상된 구성 요소를 자동으로 복구하여 Windows의 무결성을 복원하고 PC가 정상적으로 시작되도록 할 수 있습니다.
맬웨어 방지 조기 실행
보안 부팅이 부팅 로더를 보호하고 신뢰할 수 있는 부팅이 Windows 커널을 보호하기 때문에 맬웨어가 시작할 수 있는 다음 기회는 Microsoft 이외의 부팅 드라이버 감염입니다. 기존 맬웨어 방지 앱은 부팅 드라이버가 로드될 때까지 시작되지 않으므로 드라이버로 위장한 루트킷이 작동할 수 있는 기회를 제공합니다.
ELAM(조기 실행 맬웨어 방지)은 Microsoft가 아닌 모든 부팅 드라이버 및 애플리케이션 앞에 Microsoft 또는 타사 맬웨어 방지 드라이버를 로드하여 보안 부팅 및 신뢰할 수 있는 부팅에 의해 설정된 신뢰 체인을 계속할 수 있습니다. OS가 아직 시작되지 않았고 Windows가 가능한 한 빨리 부팅해야 하기 때문에 ELAM에는 모든 부팅 드라이버를 검사하고 신뢰할 수 있는 드라이버 목록에 있는지 확인하는 간단한 작업이 있습니다. 신뢰할 수 없는 경우 Windows에서 로드하지 않습니다.
ELAM 드라이버는 완전한 기능을 갖춘 맬웨어 방지 솔루션이 아닙니다. 부팅 프로세스의 뒷부분에서 로드됩니다. Windows Defender(Windows에 포함)는 여러 타사 맬웨어 방지 앱과 마찬가지로 ELAM을 지원합니다.
계획 부팅
조직의 PC가 루트킷에 감염될 경우 알아야 할 사항이 있습니다. 엔터프라이즈 맬웨어 방지 앱은 IT 부서에 맬웨어 감염을 보고할 수 있지만 현재 상태를 숨기는 루트킷에서는 작동하지 않습니다. 즉, 클라이언트가 정상인지 여부를 알려줄 수 없습니다.
결과적으로 맬웨어 방지가 실행 중이더라도 루트킷에 감염된 PC가 정상 상태로 나타납니다. 감염된 PC는 계속해서 기업 네트워크에 연결되기 때문에 루트킷이 엄청난 양의 중요한 기밀 데이터에 액세스할 수 있으며 잠재적으로 루트킷이 내부 네트워크에서 확산될 수 있습니다.
측정된 부팅은 Windows의 TPM 및 타사 소프트웨어에서 작동합니다. 이를 통해 네트워크의 신뢰할 수 있는 서버가 Windows 시작 프로세스의 무결성을 확인할 수 있습니다. 계획 부팅은 다음 프로세스를 사용합니다.
- PC의 UEFI 펌웨어는 TPM에 펌웨어, 부팅 로더, 부팅 드라이버 및 맬웨어 방지 앱 전에 로드되는 모든 해시를 저장합니다.
- 시작 프로세스의 끝에서 Windows는 Microsoft가 아닌 타사의 원격 증명 클라이언트를 시작합니다. 신뢰할 수 있는 증명 서버는 클라이언트에 고유한 키를 보냅니다.
- TPM은 고유 키를 사용하여는 UEFI에서 기록한 로그를 디지털 서명합니다.
- 클라이언트는 로그를 다른 보안 정보와 함께 서버에 전송합니다.
구현 및 구성에 따라 서버는 이제 클라이언트가 정상인지 여부를 확인할 수 있습니다. 제한된 격리 네트워크 또는 전체 네트워크에 대한 액세스 권한을 클라이언트에 부여할 수 있습니다.
그림 2는 계획 부팅 및 원격 증명 프로세스를 보여 줍니다.
그림 2. 측정된 부팅은 원격 서버에 대한 PC의 상태를 증명합니다.:
Windows에는 측정된 부팅을 지원하는 애플리케이션 프로그래밍 인터페이스가 포함되어 있습니다. 그러나 이를 활용하려면 원격 증명 클라이언트와 신뢰할 수 있는 증명 서버를 구현하기 위해 비 Microsoft 도구가 필요합니다. 예를 들어 Microsoft Research의 다음 도구를 참조하세요.
측정된 부팅은 UEFI, TPM 및 Windows의 기능을 사용하여 네트워크를 통해 클라이언트 PC의 신뢰성을 자신 있게 평가할 수 있는 방법을 제공합니다.
요약
보안 부팅, 신뢰할 수 있는 부팅, 계획 부팅은 기본적으로 부트킷 및 루트킷에 강한 아키텍처를 만듭니다. Windows에서 이러한 기능은 네트워크에서 커널 수준 맬웨어를 제거할 가능성이 있습니다. Windows를 사용하면 OS의 무결성을 신뢰할 수 있습니다.