ReadGMSAPassword
Last updated
Was this helpful?
Last updated
Was this helpful?
gMSA는 Group Managed Service Account의 약어로
Windows Server 환경에서 사용되는 특별한 유형의 관리 서비스 계정입니다.
일반적인 서비스 계정보다 더 강화된 보안을 제공하며, 여러 서버나 컴퓨터에서
하나의 계정을 공유할 수 있도록 설계되었습니다.
이 중에서도 ReadGMSAPassword 권한은 특정 사용자나 그룹이 GMSA 계정의
암호를 읽을 수 있도록 하는 권한입니다.
gMSA는 AD에서 자동으로 관리되므로 패스워드 관리 문제에 관한 솔루션이기도 합니다.
예를 들어 모든 서비스 계정에 30일마다 매우 복잡한 고유 비밀번호가 제공되므로
관리자는 서비스 계정의 비밀번호 재설정에 대해서 자유롭습니다.
따라서 이러한 그룹에 속해있는 사용자 계정을 탈취한다면 gMSA 서비스를 통해
해당 계정의 암호에 접근할 수 있는 권한을 가집니다.
위 사진은 쿠버네티스 환경에서 GMSA의 역할에 대해서 알려주고 있습니다.
컨테이너에서 AD에 등록되어 있는 서비스
예를 들면 SQL Server나 IIS 등을 이용하기 위해서는 해당 서비스에 대해 계정정보를 알아야 합니다.
이때 컨테이너 여러개에서 동일한 서비스 계정에 접근하기 위해서는
패스워드 관리가 필요할 것이며, 서비스 패스워드를 관리자가
매번 관리하는 것보다는 자동화된 프로그램을 통해서
강력한 패스워드 정책을 준수한 패스워드로 설정하는 것이 나을 것입니다.
위 사진 속 과정을 설명하면 다음과 같습니다.
Windows Pod는 쿠버네티스 API에서 사용 가능한 GMSACredentialSpec을 참조합니다.그리고 웹훅은 Windows Pod가 GMSACredentialSpec을 참조할 수 있는 권한이 있는지를 확인합니다. 마지막으로 웹 훅은 GMSACredentialSpec을 Pod의 전체 JSON 형식으로 확장합니다.
Windows 노드에서 실행되는 ccg.exe 프로세스는 PluginID 필드의 CredSpec에 지정된 플러그인을 시작한 다음 AWS Secrets Manager 또는 AWS System Manager Parameter Store에서 이식 가능한 ID 자격 증명을 검색합니다.
ccg.exe는 휴대용 ID 자격 증명을 사용하여 AWS 관리 AD 또는 Amazon EC2 자체관리 AD를 인증하고 GMSA 비밀번호를 검색합니다.
ccg.exe는 GMSA 비밀번호를 Windows Pod에서 사용할 수 있도록 해줍니다.
Windows Pod는 GMSA 비밀번호를 사용하여 AW 관리 AD 또는 Amazon EC2 자체 관리 AD에 대해 인증하고 커버로스 TGS를 얻습니다.
Windows Pod에서는 TGS를 통해 서비스 이용 가능
쉽게 요약하면 다음과 같습니다.
Windows Pod가 GMSACredentialSpec에 접근할 권한이 있는지 웹훅이 확인하며 권한이 있다면 해당 정보를 JSON 포맷으로 전달
ccg.exe는 AD에 접근하기 위해서 인증 정보를 얻기 위해 AWS Server Manager에서 휴대용 ID 자격 증명을 획득
ccg.exe는 획득한 자격증명을 토대로 AWS 관리 AD 혹은 Amazon EC2 자체관리 AD에 자격 증명을 인증하고 GMSA 패스워드를 검색
획득한 패스워드를 Windows Pod에 전달
Windows Pod는 해당 패스워드를 가지고 Kerberos 인증을 통해 TGS를 발급
획득한 TGS를 통해서 Pod는 Service 이용이 가능
탈취한 계정이 ReadGMSAPassword 권한이 있는 계정 혹은 그룹, 도메인, 컨테이너라면
우리는 사실상 해당 계정을 장악했다고 봐도 무방합니다.
서버에 Remote PowerShell같은 권한이 있어서 원격 접속이 가능하다면
NT Hash나 gMSA를 가져와서 그 계정의 권한으로 동작을 수행할 수도 있고
SMB나 LDAP 등에 접속하여 크리덴셜 정보를 빼오는 것 또한 가능합니다.
SIERRA 계정은 BIRMINGHAN-ITSEC 그룹의 멤버입니다.
그리고 이 그룹은 ITSEC의 멤버이기 때문에 SIERRA 계정은 ITSEC 그룹의 권한을 가집니다.
즉 ITSEC이 가진 ReadGMSAPassword 권한을 SIERRA가 가진 것과 동일한데,
BIR-ADFS-GMSA 계정에 대한 GMSA를 가지게 되어서 활동이 가능하다면
TRISTAN 계정에 GenericAll 권한이 있기 때문에 TRISTAN 계정의 패스워드 변경이 가능합니다.
또 TRISTAN 계정은 DOMAIN ADMINS 그룹의 구성원이기 때문에
TRISTAN 계정의 패스워드를 BIR-ADFS-GMSA 권한으로 변경한다면
TRISTAN 계정으로 로그인이 가능할 것이고, 이 계정은 DOMAIN ADMINS 권한을 갖는 것이죠
먼저 파워쉘에서 특정 사용자 권한으로 다른 사용자의 패스워드를 변경할 때는
2가지 조건이 필요합니다.
패스워드를 변경할 사용자의 계정에 대해서 패스워드 변경 권한이 있는 사용자의 계정 정보
파워쉘 명령어를 입력할 수 있는 프롬포트
현재 2가지 조건을 모두 만족하기 때문에 tristan.davies 계정의 패스워드를
BIR-ADFS-GMSA 권한으로 변경해줍니다.
먼저 위와 같은 명령으로 BIR-ADFS-GMSA 계정의 정보를 cred 변수에 저장합니다.
그 다음 커맨드를 입력하여 tristan.davies 의 패스워드를 password123!로 초기화 시킵니다.
이렇게 했을 때 우리는 tristan.davies 사용자 계정의 정보를 획득했고,
impacket-wmiexec 모듈을 통해 원격 접속이 가능합니다.