
Zerologon의 PoC - 모든 연구 크레딧은 Secura의 Tom Tervoort에게 있습니다.
Impacket의 최신 버전이 필요합니다. GitHub에서 받은 추가 netlogon 구조체를 포함해야 합니다.
기본적으로 이 작업은 도메인 컨트롤러 계정의 비밀번호를 변경한다는 점을 유의하세요. 예, DCSync를 수행할 수 있지만, 다른 도메인 컨트롤러와의 통신을 중단시킬 수 있으므로 주의하세요!
더 많은 정보와 원본 연구는 여기에서 확인하세요.
Python 3.6 이상에서만 작동합니다! Kali와 같이 OS에 impacket이 설치되어 있다면 먼저 기존 설치를 모두 제거하세요. 이후에도 import 오류가 발생하면 virtualenv나 pipenv에서 실행하세요.
cve-2020-1472-exploit.py를 실행하세요.-just-dc와 -no-pass 또는 빈 해시와 DCHOSTNAME$ 계정을 사용하세요.2020년 9월 15일 이후에 업데이트된 GitHub의 impacket 버전을 설치하면, 로컬 레지스트리 시크릿을 덤프할 때 secretsdump가 자동으로 일반 텍스트 컴퓨터 비밀번호(16진수 인코딩)를 덤프합니다. 이는 DCSync와 다른 점에 유의하세요. DCSync는 컴퓨터 계정을 사용하는 반면, 레지스트리를 덤프하려면 도메인 관리자(예: 내장 Administrator 계정)로 도메인 컨트롤러에 대해 secretsdump를 실행해야 합니다.
또는 약간 오래된 버전의 secretsdump에서는 먼저 레지스트리 하이브를 추출한 다음 secretsdump를 오프라인으로 실행하여 동일한 비밀번호를 덤프할 수 있습니다(이 경우 Kerberos 해시를 계산할 수 없으므로 항상 일반 텍스트 키를 출력합니다).
이 일반 텍스트 비밀번호를 사용하여 restorepassword.py를 -hexpass 매개변수와 함께 실행할 수 있습니다. 이 명령은 먼저 빈 비밀번호로 동일한 DC에 인증한 다음 비밀번호를 원래대로 되돌립니다. 대상으로 NetBIOS 이름과 IP를 다시 제공해야 하며, 예를 들어 다음과 같습니다:
python restorepassword.py testsegment/s2016dc@s2016dc -target-ip 192.168.222.113 -hexpass e6ad4c4f64e71cf8c8020aa44bbd70ee711b8dce2adecd7e0d7fd1d76d70a848c987450c5be97b230bd144f3c3...etc