
ZeroLogon 실습 소개
ZeroLogon 익스플로잇(CVE-2020-1472)의 취약점을 테스트하기 위한 랩 설정입니다. 여기에는 Impacket 라이브러리를 사용하여 취약점을 테스트하는 Python 스크립트와 DC(도메인 컨트롤러)로 구성된 Windows Server 2019 가상 머신(VM)이 포함되어 있습니다.
이 스크립트는 Netlogon 인증 우회를 시도합니다. 인증 우회에 성공하면 즉시 종료되며, 어떤 Netlogon 작업도 수행하지 않습니다. DC에 패치가 적용된 경우, 탐지 스크립트는 여러 쌍의 RPC 호출을 보낸 후 포기하고 대상이 취약하지 않다고 결론을 내립니다(위음성 확률 0.04%).
선택 사항
간단히 vagrant up을 입력하면 취약한 Windows Server 2019 빌드를 VM으로 불러올 수 있습니다.
그런 다음 이 튜토리얼을 따라 VM을 도메인 컨트롤러로 구성합니다.
마지막으로 DC에서 공격을 실행합니다(zerologon_tester.py).
이 공격의 Docker화된 버전 또는 가상 환경에서 실행하는 것이 좋습니다.
Docker 옵션. 실행:
# NOTE: On Windows, you may need to enable the `Hyper-V` Wiwndows feature.
# NOTE2: On Windows, you may need to switch to `Linux Containers`.
$ docker build -f Dockerfile . -t zerologon
# This command run the zerologon test on the DC with domain VAGRANT in the address 192.168.33.10
$ docker run zerologon VAGRANT 192.168.33.10
VirtualEnv 옵션. 실행:
$ python3 -m virtualenv zerologon
$ zerologon/Scripts/Activate.ps1
# NOTE: This may give you some issues with your firewall!!
$ pip install git+https://github.com/SecureAuthCorp/impacket
$ pip install -r requirements.txt
$ python zerologon_tester.py VAGRANT 192.168.33.10
이 공격의 출력은 다음과 비슷하게 보일 것입니다:

이 스크립트는 공격의 실현 가능성만 테스트하기 위한 것이며, 다른 방식으로 서버를 공격하지 않습니다. 이 스크립트는 DC에 어떠한 변경도 수행하지 않습니다. PoC 공격을 구현하는 방법이 궁금하다면 이 글 또는 유사한 글을 확인하세요.
이 스크립트는 DC 또는 백업 DC를 대상으로 하는 데 사용할 수 있습니다. 읽기 전용 DC에서도 작동할 가능성이 높지만, 이는 테스트되지 않았습니다. DC 이름은 NetBIOS 컴퓨터 이름이어야 합니다. 이 이름이 올바르지 않으면 스크립트는 STATUS_INVALID_COMPUTER_NAME 오류와 함께 실패할 가능성이 높습니다. 이 취약점에 대한 백서가 여기에 게시될 예정입니다.
참고: 문제가 발생하여
STATUS_INVALID_COMPUTER_NAME오류가 표시되면nbtstat -A 192.168.33.10을 실행하세요. 이 명령은 해당 주소에서 무슨 일이 일어나고 있는지 파악하는 데 도움이 됩니다. 그렇지 않으면 호스트에서 핑(ping 192.168.33.10)을 보내 컴퓨터에 연결할 수 있는지 항상 테스트할 수 있습니다.참고2: 공격이 실패하면 컴퓨터에 보안 패치가 적용된 것일 수 있습니다. 업데이트를 확인하고 2020년 이후의
Security Patches처럼 보이는 항목을 모두 제거하세요.