Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Zerologon(CVE-2020-1472): Active Directory를 무너뜨릴 수 있는 치명적 취약점 완벽 가이드

2020년 8월, 마이크로소프트는 Active Directory에 존재하는 치명적인 Windows Server 취약점 CVE-2020-1472(일명 Zerologon)을 수정하는 보안 업데이트를 공개했습니다. 현재 이 업데이트는 모든 도메인 컨트롤러에 성공적으로 설치된 상태입니다. 그러나 많은 Windows 관리자가 놓치고 있는 중요한 사실이 있습니다. 바로 도메인 컨트롤러(DC)에 업데이트를 설치하는 것만으로는 이야기가 끝나지 않는다는 점입니다.

이 글에서는 Zerologon 취약점의 원리, AD 도메인 컨트롤러를 보호하는 방법, 2021년 2월에 추가로 배포되는 두 번째 업데이트의 의미, 그리고 Windows Server 관리자가 반드시 해야 할 작업까지 체계적으로 정리합니다.

ZeroLogon: Windows Netlogon 취약점 CVE-2020-1472란?

CVE-2020-1472는 모든 Windows Server 버전(2008 R2, 2012, 2016, 2019)의 Active Directory에 영향을 주는 치명적 취약점으로, 인증되지 않은 사용자가 원격으로 도메인 관리자 권한을 획득할 수 있게 합니다.

원인은 Netlogon 원격 프로토콜(MS-NRPC)의 AES-CFB8 암호화 구현상 결함입니다. 네트워크를 통해 도메인 컨트롤러에 접근할 수 있는 공격자는 권한을 상승시킨 뒤 AD에서 도메인 컨트롤러 계정의 비밀번호를 변경할 수 있습니다. 이후 공격자는 SYSTEM 권한으로 DC에 인증하여 Active Directory 전체를 장악하게 됩니다(도메인 관리자 비밀번호 초기화 등 AD 내 모든 작업 수행 가능).

Netlogon 프로토콜은 AD 도메인 네트워크에서 사용자와 컴퓨터를 인증하고, 컴퓨터 계정 비밀번호를 원격으로 갱신하는 데 사용됩니다.
Zerologon 공격을 수행하려면 공격자가 Netlogon 연결(RPC 로케이터 TCP/135, RPC 동적 포트 범위, SMB TCP/445 포트 사용)을 맺고, 특정한 0(zero) 시퀀스로 시작하는 값을 전송해야 합니다. 이 취약점을 이용하면 합법적인 도메인 컴퓨터로 위장할 수 있으며, 권한 상승 후 DC 계정 비밀번호를 변경할 수 있습니다.

이 취약점에는 최대 위험 등급인 CVSS 10점 만점(10/10)이 부여되었습니다.

영향을 받는 Windows Server 버전은 다음과 같습니다.

  • Windows Server 2019, Windows Server 2016
  • Windows Server 버전 2004, 1909, 1903
  • Windows Server 2012 R2 / 2012
  • Windows Server 2008 R2 SP1

현재 여러 개의 공개된 Zerologon 익스플로잇이 존재하며, mimikatz에도 zerologon 모듈이 추가되어 있습니다.

Zerologon(CVE-2020-1472): Active Directory를 무너뜨릴 수 있는 치명적 취약점 완벽 가이드

주의: 실제 운영 환경에서 zerologon 익스플로잇을 테스트하지 마십시오. DC 비밀번호가 빈 값으로 초기화되면 AD 인프라 전체에 심각한 손상을 줄 수 있습니다.

DC의 취약점 여부를 점검하기 위한 Python 스크립트는 다음 저장소에서 확인할 수 있습니다: https://github.com/SecuraBV/CVE-2020-1472

Zerologon 대응 Windows Server 업데이트

마이크로소프트는 더 이상 Windows Server 2008 R2를 지원하지 않으므로, 해당 버전에는 공개된 버그픽스가 없습니다. 다만 확장 보안 업데이트(Extended Security Updates, ESU) 1년 구독을 구매한 경우, WS2008R2용 업데이트 4571729를 다운로드해 설치할 수 있습니다.

또한 Windows Server 2008 R2를 위한 비공식 Zerologon 패치인 0patch(https://blog.0patch.com/2020/09/micropatch-for-zerologon-perfect.html)도 존재합니다. 단, 사용 시 발생하는 위험은 본인 부담입니다.

그 외 Windows Server 버전은 Windows Update 또는 WSUS를 통해 업데이트를 적용하거나, Microsoft Update Catalog에서 MSU 파일을 직접 내려받아 수동 설치할 수 있습니다.

  • Windows Server 2019(KB4565349), Windows Server 2016(KB4571694)
  • Windows Server 버전 2004(KB4566782), 1909(KB4565351), 1903(KB4565351)
  • Windows Server 2012 R2(KB4571723), Windows Server 2012(KB4571702)

Active Directory 도메인 컨트롤러 보호 방법

Zerologon 취약점을 수정하는 업데이트는 2020년 8월에 배포되었습니다. Active Directory를 보호하려면 모든 도메인 컨트롤러에 해당 Windows Server 버전의 8월 누적 업데이트(또는 그 이후 버전)를 설치해야 합니다.

다만 이 패치는 사실상 임시 조치입니다. 마이크로소프트는 Netlogon에서 안전한 RPC(원격 프로시저 호출)로 원활하게 전환할 수 있도록 두 단계에 걸쳐 문제를 해결합니다.

  • 1단계(배포 단계): 8월 패치는 알려진 공격 시나리오로부터 도메인 컨트롤러를 보호하기 위한 긴급 조치입니다. 하지만 이 업데이트만으로 취약점이 완전히 해결되지는 않습니다(Netlogon을 통한 다른 공격 시나리오도 가능). 새로운 보안 RPC 버전을 지원하지 않는 레거시 시스템은 여전히 도메인 컨트롤러에 연결할 수 있습니다.
  • 2단계(강제 단계): 다음 업데이트는 2021년 2월 9일에 배포됩니다. 이 업데이트 설치 후에는 모든 도메인 컨트롤러가 기존(구버전) Netlogon 프로토콜을 사용하는 연결을 거부합니다. 단, GPO를 통해 레거시 장치에 대한 예외를 설정할 수 있으며, 방법은 아래에서 설명합니다.

첫 번째 패치를 설치한 후에는 도메인 컨트롤러 로그에서 불안전한 버전의 Netlogon RPC를 사용하는 장치의 연결 이벤트를 확인할 수 있습니다. 또한 네트워크에 레거시 장치가 없다면 2021년을 기다릴 필요 없이, FullSecureChannelProtection 레지스트리 값을 사용해 도메인 컨트롤러에서 구버전 Netlogon RPC 지원을 즉시 비활성화할 수도 있습니다.

보안 업데이트 설치 후에는 취약한 Netlogon 버전을 사용하는 컴퓨터의 연결 이벤트가 도메인 컨트롤러 로그에 기록됩니다. 이벤트 뷰어 → Windows 로그 → 시스템에서 NETLOGON 소스의 다음 Event ID들을 주의 깊게 확인해야 합니다.

  • Event ID 5827, 5828: Netlogon 서비스가 특정 컴퓨터 계정의 취약한 Netlogon 보안 채널 연결을 거부했다는 의미입니다. 2021년 2월까지는 참고용 메시지이며 실제 연결 차단 조치는 이루어지지 않습니다. Zerologon(CVE-2020-1472): Active Directory를 무너뜨릴 수 있는 치명적 취약점 완벽 가이드모든 이벤트를 CSV 파일로 저장해 DC에 연결을 시도한 장치 이름을 분석할 수 있습니다. 사용 예시 PowerShell 명령: Get-EventLog -LogName System -InstanceId 5827 -Source NETLOGON|Select-Object message| Export-Csv c:\ps\5827.csv -Encoding utf8
  • Event ID 5829: 취약한 Netlogon 버전을 사용하는 연결이 허용되었음을 의미합니다.
  • Event ID 5830, 5831: 해당 장치가 "도메인 컨트롤러: 취약한 Netlogon 보안 채널 연결 허용" 정책에 추가되어 있어 취약한 Netlogon 버전의 연결이 허용되었음을 의미합니다.

2021년 2월 이전까지 탐지된 모든 장치에 최신 보안 업데이트를 설치해야 합니다. Windows 장치라면 최신 누적 업데이트만 설치하면 충분합니다. 그 외 Netlogon 원격 프로토콜을 사용해 Active Directory에 연결하는 장치나 소프트웨어는 제조사(OEM)에 업데이트를 요청하십시오.

2021년 2월에는 모든 연결 장치가 보안 버전의 Netlogon 프로토콜을 사용하도록 강제하는 특별 보안 업데이트가 배포됩니다. 이때 Event 5829로 기록된 장치(보안 Netlogon 버전 미지원)는 도메인에 연결할 수 없게 되며, 이런 장치는 GPO 예외 목록에 수동으로 추가해야 합니다.

즉, 지원이 종료된 Windows 버전(Windows XP / Windows Server 2003 / Vista / 2008)은 AD 도메인에서 정상적으로 동작할 수 없게 됩니다.

Zerologon 대응 그룹 정책(GPO) 설정

네트워크에 구버전 Netlogon만 지원하는 장치가 더 이상 없다면, 2021년 2월 9일(구버전 Netlogon 연결을 거부하는 2단계 업데이트 배포일) 이전에도 별도의 GPO를 만들어 DC가 보안 Netlogon 버전을 강제로 사용하게 할 수 있습니다. 이를 위해 다음 레지스트리 키를 GPO로 모든 DC에 배포합니다.

  • 레지스트리 키: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
  • 값 유형: DWORD
  • 값 이름: FullSecureChannelProtection

설정 가능한 값은 다음과 같습니다.

  • 1: 강제 모드를 활성화합니다. DC는 취약한 버전의 Netlogon을 통한 연결을 거부합니다. 단, "도메인 컨트롤러: 취약한 Netlogon 보안 채널 연결 허용" 정책에 추가된 계정에는 적용되지 않습니다(아래 참조).
  • 0: DC가 비-Windows(non-Windows) 장치의 취약한 Netlogon 버전 연결을 허용합니다(강제 단계 업데이트 배포 시 이 옵션은 폐기됩니다).

Zerologon(CVE-2020-1472): Active Directory를 무너뜨릴 수 있는 치명적 취약점 완벽 가이드

비-Windows 장치의 Netlogon 연결을 허용하는 방법

특정 장치/계정이 취약한 Netlogon 버전으로 DC에 연결할 수 있도록 허용하는 전용 정책이 GPO에 마련되어 있습니다. 정책 이름은 "도메인 컨트롤러: 취약한 Netlogon 보안 채널 연결 허용(Domain controller: Allow vulnerable Netlogon secure channel connections)"이며, 컴퓨터 구성 → Windows 설정 → 보안 설정 → 로컬 정책 → 보안 옵션에서 찾을 수 있습니다.

Zerologon(CVE-2020-1472): Active Directory를 무너뜨릴 수 있는 치명적 취약점 완벽 가이드
먼저 AD에서 보안 그룹을 생성하고, 레거시 Netlogon RPC를 사용해 도메인 컨트롤러와 보안 채널을 맺어야 하는 계정/장치를 해당 그룹에 추가합니다.

이후 DC에 적용되는 정책(Default Domain Controller Policy 수준)에서 해당 정책을 활성화하고, 보안 정의(Define Security)를 클릭한 뒤 불안전한 Netlogon 프로토콜 사용을 허용할 그룹을 지정합니다(Create Vulnerable Connection → Allow). Zerologon(CVE-2020-1472): Active Directory를 무너뜨릴 수 있는 치명적 취약점 완벽 가이드

반대로 Deny 옵션을 선택하면 특정 장치의 불안전한 Netlogon RPC 사용을 명시적으로 차단할 수도 있습니다.