
CVE-2020-0665 (일명 SID Filter Bypass)에 대한 개념 증명.
CVE-2020-0665에 대한 개념 증명으로, Active Directory 포리스트에서 SID 필터링을 우회할 수 있게 합니다 (교차 포리스트 공격).
SYSTEM 사용자와 같은 높은 권한이 필요합니다).양방향 전이 신뢰 관계가 설정되어 있어야 합니다.python2.7이 설치되어 있어야 하며, 장악된 DC 신뢰 포리스트에 frida 라이브러리(pip2 install frida)가 설치되어 있어야 합니다. 추신: python3로 테스트해보지 않았지만, 작동할 수도 있습니다.contoso.local 도메인을 장악했다면 child.contoso.local 자식 도메인이 필요합니다.test.local(장악된 도메인 contoso.local와 양방향 전이 신뢰 관계)이 있는 경우 SQL.test.local, DEV.test.local, MSSQL01.test.local 등의 워크스테이션이 필요합니다. 워크스테이션으로 DC를 사용하면 공격이 작동하지 않습니다.lsass.exe.NetLogon 호출 NetrGetForestTrustInformation을 수행해야 합니다. 이것은 24시간마다 발생하므로 인내심을 가지세요.child SID와 local SID(워크스테이션)를 스크립트에 전달합니다. 이 스크립트는 frida_intercept.py 스크립트의 일부를 사용하여 이름이나 PID로 프로세스를 가로채고 후킹합니다. 이 스크립트는 python2.7에서 테스트되었지만 python3에서도 작동할 수 있습니다 (둘 다 해당 소프트웨어에 frida 라이브러리가 설치되어 있어야 합니다):
python .\CVE-2020-0665.py --process <process to hook> --child-sid <Child SID> --local-sid <local SID>
예시:
python .\CVE-2020-0665.py --child-sid S-1-5-21-3878752286-62540090-653003637 --local-sid S-1-5-21-2327345182-1863223493-3435513819 -p lsass.exe -v
이렇게 하면 워크스테이션 대상 SID(S-1-5-21-2327345182-1863223493-3435513819)가 현재 우리가 제어하는 Active Directory 포리스트에 있는 자식 도메인 SID(S-1-5-21-3878752286-62540090-653003637)로 변경됩니다.
[!WARNING] 이렇게 하면 피해자 워크스테이션의 SID가 변경됩니다. 이 공격을 수행하기 전에 모든 SID 값을 저장하여 나중에 복원할 수 있도록 하세요.
이 공격에 대한 자세한 내용은 이 블로그를 확인하세요. 이 블로그에서는 공격을 계속 진행하는 방법(예: ExtraSid Attack을 통해 골든 티켓 위조)을 설명합니다.
윤리적 목적을 위한 것입니다. 항상 윤리적으로 행동하세요 (: