CVE-2020-1472(ZeroLogon) 탐지 및 완화 데모
이 프로젝트는 ZeroLogon이라고도 알려진 중요한 Windows 취약점인 CVE-2020-1472의 탐지 및 완화를 시연합니다. 이 취약점으로 인해 공격자는 인증 없이 관리자 액세스 권한을 얻을 수 있습니다. 본 프로젝트는 학교 사이버 보안 프로젝트의 일환으로 개발되었습니다. PoC 코드 크레딧은 Tom Tervoort(Secura)에게 있으며, Suricata 규칙 세트 크레딧은 Proofpoint Emerging Threats에게 있습니다.
주요 구성 요소:
- PoC 스크립트를 사용하여 도메인 컨트롤러의 취약점 테스트
- Windows 이벤트 로그를 통한 침해 지표 모니터링
- 사용자 지정 규칙을 적용한 Suricata IDS 구현
- Windows 업데이트 적용
시연된 탐지 기술
1. 취약점 테스트 스크립트
- Tom Tervoort(Secura)의 Python 스크립트
- Netlogon 인증 우회를 통해 도메인 컨트롤러의 취약점을 테스트하기 위해
impacket 라이브러리를 활용
2. Windows 이벤트 로그 분석
다음 주요 이벤트를 확인하십시오:
4624: DC 자격 증명을 사용한 성공적인 로그온
4672: 공격자에게 할당된 특별 권한(예: 관리자)
5805: Netlogon 오류 이벤트(악용 지표)
3. Suricata를 사용한 침입 탐지
- Suricata를 사용하여 도메인 컨트롤러의 네트워크 트래픽 분석
- Proofpoint Emerging Threats 규칙 세트의 사용자 지정 규칙 구현
- ZeroLogon 악용에 일반적으로 사용되는 0바이트 시퀀스 탐지
요구 사항
이 데모를 재현하려면 다음 환경이 필요합니다:
공격자 머신
대상 머신
- VirtualBox(무차별 모드(Promiscuous mode)가 활성화된 동일한 NATNetwork 구성)
- Windows Server 2019 Essentials(2019년 9월 업데이트)
- 새 도메인 및 DC 생성(대상 머신 서버를 DC로 사용)
- Suricata
- Microsoft C++ Redistributable
- Npcap
- Notepad++
- Proofpoint Emerging Threats Rules 저장소의 규칙 파일
Proofpoint의
emerging-all.rules
구성 참고 사항:
Suricata 구성은 **Notepad++**를 사용하여 수정되었습니다:
HOME_NET은 대상 머신의 IP 주소로 설정되었습니다
rule-files 섹션은 emerging-all.rules 파일을 사용하도록 업데이트되었습니다
탐지 접근 방식 시연
1단계: 대상 머신의 컴퓨터 이름과 IP 주소 확인
- 서버 관리자(Server Manager)를 엽니다.
- 로컬 서버(Local Server)로 이동합니다. 이더넷(Ethernet) 아래에서 찾은 컴퓨터 이름과 IP 주소를 기록해 둡니다. 이 데모에서 컴퓨터 이름은 FTB4-Victim-Win이고 IP 주소는 10.0.2.4입니다.

2단계: 취약점 테스트 스크립트 실행
- 공격자 머신에서 터미널을 엽니다.
- 대상 머신의 컴퓨터 이름과 IP를 사용하여 Python 테스트 스크립트를 실행합니다:
python /home/kali/Desktop/CVE-2020-1472-master/zerologon_tester.py <target computer name> <target IP>
- 스크립트는 도메인 컨트롤러가 ZeroLogon 공격에 의해 완전히 손상될 수 있음을 나타내는 메시지로 종료됩니다.

3단계: Windows 이벤트 로그 분석
- 이제 대상 머신에서 이벤트 뷰어(Event Viewer)를 실행합니다. 아이콘은 작업 표시줄에 있습니다.
- Windows 로그(Windows Logs)로 이동한 다음 보안(Security)을 선택합니다.
- 아래와 같이 ZeroLogon 우회와 관련된 두 개의 보안 이벤트가 있습니다: 이벤트 4672 및 이벤트 4624.


- Windows 로그 아래의 시스템(System)으로 이동합니다. 수준이 **오류(Error)**이고 원본이 NETLOGON인 이벤트가 보일 때까지 아래로 스크롤한 후 선택합니다. 이것은 ZeroLogon 우회와 관련된 또 다른 이벤트입니다.

- Windows 이벤트 뷰어를 닫아도 됩니다.
4단계: Suricata를 사용한 침입 탐지
- 대상 머신에서 명령 프롬프트(Command Prompt)를 관리자 권한으로 엽니다.
- Suricata를 실행하려면 다음 명령을 실행합니다:
cd C:\Program Files\Suricata\
- 적절한 IP 주소를 사용하여 다음 명령을 실행합니다:
suricata -c suricata.yaml -i <target IP> -l log

- 작업 표시줄의 아이콘에서 파일 탐색기(File Explorer)를 엽니다.
C:\Program Files\Suricata\log로 이동합니다.
- 탐색 표시줄에
powershell을 입력하고 Enter 키를 누릅니다. Windows PowerShell이 실행됩니다.

- Windows PowerShell에서
get-content .\fast.log -wait를 입력하고 Enter 키를 누릅니다. 이전 테스트에서 생성된 이전 로그는 무시하고 빈 공간까지 아래로 스크롤합니다.

- 공격자 머신으로 돌아가 Python 테스트 스크립트를 다시 실행합니다.
- 이제 대상 머신으로 돌아가 생성된 새 경고를 확인합니다. 이러한 경고는 ZeroLogon의 시도 또는 악용을 나타냅니다.

- Windows PowerShell 및 명령 프롬프트 창을 닫아도 됩니다.
fast.txt를 엽니다. 로그는 이 파일에 저장됩니다.

완화 접근 방식 시연
CVE-2020-1472(ZeroLogon)에 대한 가장 효과적인 완화 방법은 최신 Windows 보안 업데이트를 설치하는 것입니다.
단계:
- 대상 머신에서 설정(Settings) 앱을 엽니다.
- 업데이트 및 보안(Update and Security) → Windows 업데이트(Windows Update)로 이동합니다.
- **"업데이트 확인"**을 클릭하고 시스템이 최신 업데이트를 다운로드하여 설치하도록 합니다.
- 필요한 경우 머신을 재부팅합니다.

이러한 업데이트는 보안 원격 프로토콜 사용을 강제하고 도메인 컨트롤러에서 기본적으로 적용 모드(enforcement mode)를 활성화하여 ZeroLogon 취약점에 대한 Microsoft의 수정 사항을 적용합니다.
제한 사항 참고
이 프로젝트에서 시연된 탐지 및 완화 접근 방식은 통제된 실습실 환경 내에서 교육 목적으로 설계되었습니다. CVE-2020-1472(ZeroLogon)의 개념을 설명하는 데는 효과적이지만 한계가 있으며 실제 엔터프라이즈 환경에 배포하기에는 완전히 실용적이지 않습니다. 학교 프로젝트이므로 프로덕션급 솔루션을 구현하는 것보다 사이버 보안 기술을 배우고 이해하는 데 중점을 둡니다.
감사의 말
다음 분들께 특별히 감사드립니다:
참고 자료
작성자
@tdevworks
고지 사항
이 저장소는 교육 목적으로만 생성되었습니다.
시연된 모든 도구, 스크립트 및 기술은 통제된 실습실 환경에서 사이버 보안 취약점을 이해하는 데 도움을 주기 위한 것입니다. 소유하지 않았거나 명시적 테스트 권한이 없는 시스템 또는 네트워크에서 제공된 자료를 사용하려고 시도하지 마십시오.
작성자는 제공된 정보의 오용에 대해 책임을 지지 않습니다.