KrbRelayUp
KrbRelayUP은 Kerberos 인증 과정에서 자격 증명을 변조하여
System 권한을 탈취하는 로컬 권한 상승 공격입니다.
DC는 기본적으로 티켓을 요청하는 서비스 계정을 신뢰하기 때문에,
서비스 계정만 확보한 뒤 TGT 발급을 요청하면
DC는 발급 요청이 무결하다고 한단하여 높은 권한의 TGT를 발급합니다.
공격자는 장악한 계정에서 서비스 계정을 생성하여 계정에
RBCD(Resource-Based Constrained Delegation) 설정하여 권한을 위임합니다.
이후 S4U2Proxy를 통해 다른 서비스를 높은 권한으로 사용 가능합니다.
장악한 사용자의 계정을 대리하여 티켓 발급 요청을 하는 머신이 필요하기 때문에
이 공격에는 기본적으로 MAQ가 요구되기도 합니다.
만약 계정 정보를 알고있는 머신이 존재한다면 MAQ 조건은 생략될 수 있습니다.
KrbRelayUp에는 몇가지 조건들이 요구됩니다.
사용자 쉘
MAQ 값이 1 이상
LDAP 서명 요구 없음
LDAP 서명의 경우 특별히 설정을 해야하는 옵션이며 MAQ는 기본적으로 10으로 설정됩니다.
따라서 아무런 설정도 하지 않은 Active Directory에서는 KrbRelayUp에 취약합니다.
다만, 클라우드 환경의 Azure Active Directory의 경우 취약하지 않습니다.
Install
KrbRelayUp 파일은 Windows Local에서 실행 가능한 실행 파일만 배포되었기 때문에
별도로 빌드를 해줘야 합니다.
깃허브에서 파일을 다운로드 한 뒤, sln 파일을 Visual Studio에서 프로젝트 열기로 엽니다.
빌드에 필요한 버전은 .NET 4.8이므로 공식 홈페이지에서 맞는 버전을 다운해줘야 합니다.
빌드가 완료된 이후에는 KrbRelayUp-main\KrbRelayUp-main\KrbRelayUp\bin\Release
하위에 krbRelayUp.exe 파일이 생성됩니다.
Practice
대상이 KrbRelayUp에 취약한지 조건을 파악합니다.
조건이 충족되었다면 Windows에 KrbRelayUp 파일을 옮긴 뒤 아래를 순차적으로 실행합니다.
실행에 필요한 유효 CLSIDs 값은 아래 중 하나를 사용합니다.
c980e4c2-c178-4572-935d-a8a429884806
90f18417-f0f1-484e-9d3c-59dceee5dbd8
03ca98d6-ff5d-49b8-abc6-03dd84127020
d99e6e73-fc88-11d0-b498-00a0c90312f3
42cbfaa7-a4a7-47bb-b422-bd10e9d02700
000c101c-0000-0000-c000-000000000046
1b48339c-d15e-45f3-ad55-a851cb66be6b
49e6370b-ab71-40ab-92f4-b009593e4518
50d185b9-fff3-4656-92c7-e4018da4361d
3c6859ce-230b-48a4-be6c-932c0c202048
Windows GUI 환경을 획득할 경우 다음 명령을 실행했을 때,
아래와 같이 System 권한의 cmd 쉘이 획득되는 것이 확인됩니다.
하지만 CLI 환경에서는 이렇게 쉘을 GUI 환경으로 얻는 것이 힘들기 때문에
다른 바이너리 파일 경로를 지정하여 System 권한으로 백그라운드에서 실행할 수 있습니다.
References
Last updated
Was this helpful?