이 블로그 게시물 시리즈에서는 공격자가 찾아내고 손상(컴프롬)할 수 있는 Active Directory 서비스 계정을 위한 기법을 다룹니다. 먼저 공격자가 LDAP 정찰로 서비스 계정을 발견하는 방법을 자세히 설명하고; 이어서 그들이 Kerberoasting을 통해 계정 비밀번호를 추출하는 방법을 공개했으며; 그리고 마지막으로 Silver Tickets를 사용해 계정의 권한을 상승시켜 추가적인 액세스와 활동을 가능하게 하는 방법을 설명합니다.
엄선한 관련 콘텐츠:
이 마지막 게시물에서는 모든 Active Directory 환경에서 가장 강력한 서비스 계정인 KRBTGT 계정을 살펴봅니다. KRBTGT 계정은 IT 시스템과 데이터에 액세스하는 데 필요한 Kerberos 티켓을 발급하는 데 사용됩니다. 공격자가 Key Distribution Center (KDC)에서 이 계정의 비밀번호 해시를 확보하면, Active Directory의 모든 계정을 손상시켜 AD 네트워크에 연결된 어떤 시스템에도 무제한이며 사실상 감지 불가능한 액세스를 제공할 수 있습니다.
AD에서 KRBTGT 계정이란 무엇인가요?
Windows Active Directory 도메인 컨트롤러는 Kerberos 티켓 요청을 처리하는 역할을 담당하며, 이 티켓은 사용자를 인증하고 컴퓨터와 애플리케이션에 대한 액세스 권한을 부여하는 데 사용됩니다. KRBTGT 계정의 비밀번호는 Kerberos 티켓을 암호화하고 복호화하는 데 사용됩니다. 이 비밀번호는 거의 변경되지 않으며 계정 이름은 모든 도메인에서 동일하므로 공격자들이 자주 노리는 대상입니다.
골든 티켓 생성하기
다음과 같이 Mimikatz를 사용하면 KRBTGT 계정의 비밀번호를 활용하여 위조된 Kerberos Ticket Granting Tickets (TGTs)를 만들 수 있습니다. 이렇게 만든 TGT는 도메인 내 어떤 컴퓨터의 어떤 서비스에 대해서든 Ticket Granting Server (TGS) 티켓을 요청하는 데 사용할 수 있습니다.
Kerberos Golden Tickets를 생성하려면 공격자가 다음 정보를 필요로 합니다:
- KRBTGT 계정의 비밀번호 해시
- KRBTGT 계정이 속한 도메인의 이름과 SID
이 정보를 수집하고 Kerberos용 Golden Tickets를 단계별로 생성하는 방법을 살펴보겠습니다.
1단계. KRBTGT 비밀번호 해시와 도메인 이름 및 SID를 확보합니다.
KRBTGT 비밀번호 해시를 획득하는 것이 공격에서 가장 어려운 부분입니다. 이는 도메인 컨트롤러에 대한 권한 있는(특권) 액세스를 확보해야 하기 때문입니다. 공격자가 DC에 대해 대화형 또는 원격으로 로그온할 수 있게 되면, 다음 명령을 사용하여 필요한 정보를 추출할 수 있습니다: Mimikatz 다음 명령으로 필요한 정보를 추출합니다:
privilege::debug
lsadump::lsa /inject /name:krbtgt
그러면 비밀번호 해시뿐만 아니라 도메인 이름과 SID도 출력됩니다:
2단계. 골든 티켓 생성.
이제 해커는 필요할 때마다 골든 티켓을 만들 수 있습니다. 골든 티켓을 생성하는 데 유용한 Mimikatz 매개변수는 다음을 포함합니다:
- 사용자— 티켓이 생성될 사용자 계정의 이름입니다. 이것이 유효한 계정 이름일 수도 있지만, 반드시 그럴 필요는 없다는 점에 유의하세요.
- ID— 공격자가 가장할 계정의 RID입니다. 이는 500의 기본 관리자 ID처럼 실제 계정 ID일 수도 있고, 가짜 ID일 수도 있습니다.
- 그룹— 티켓에 있는 계정이 속하게 될 그룹 목록입니다. 기본값으로 Domain Admins가 포함되므로, 티켓은 최대 권한으로 생성됩니다.
- SID— 이 옵션은 티켓의 계정에서 SIDHistory 속성에 SID를 삽입합니다. 도메인 간 인증에 유용합니다.
다음 예시는 가짜 사용자에 대한 티켓을 생성하지만 기본 관리자 ID를 제공합니다. 이 티켓을 사용할 때 이러한 값이 어떻게 작동하는지는 잠시 후 확인하겠습니다. /ptt (Pass the Ticket) 트리거는 생성 중인 Golden Ticket을 현재 세션에 주입합니다.
3단계. 티켓 전달.
이제 현재 세션에 로드된 Golden Ticket을 사용할 시간입니다. 해당 티켓의 컨텍스트에서 다음 misc::cmd 명령을 사용해 명령 프롬프트를 실행해 봅시다.
명령 프롬프트에서 공격자가 도메인 그룹에 소속되지 않은 일반 도메인 사용자로 동작하고 있음을 확인할 수 있습니다. 즉, 다른 어떤 도메인 컴퓨터에 대해서도 권한이 없어야 합니다.
그러나 Kerberos 티켓이 메모리에 있기 때문에 도메인 컨트롤러에 연결하여 그곳에 저장된 모든 파일에 액세스할 수 있습니다.
PSExec 을 사용하면 공격자는 대상 도메인 컨트롤러에서 세션을 열 수 있습니다. 그리고 그 세션에 따르면, 공격자는 현재 Administrator로 로그인된 상태입니다.
시스템은 공격자가 Golden Ticket을 생성할 때 사용한 RID 500 때문에 공격자가 Administrator라고 믿습니다. 도메인 컨트롤러의 이벤트 로그에서도 시스템이 공격자를 Administrator로 인식하는 것으로 나타나지만, 사용된 자격 증명은 Golden Ticket 공격 중에 스푸핑된 것입니다. 이는 탐지를 회피하거나 기만적인 보안 로그를 생성하려는 공격자에게 특히 유용할 수 있습니다.
Golden Ticket 공격에 대한 방어
Active Directory Golden Ticket 공격은 Golden Ticket이 완벽하게 유효한 TGT처럼 보이기 때문에 탐지가 매우 어렵습니다. 하지만 대부분의 경우, 이는 티켓 유효 기간에 대해 Active Directory의 기본값을 크게 초과하는 10년 이상의 수명으로 생성됩니다. TGT 타임스탬프는 Kerberos 인증 로그에 기록되지 않더라도, 적절한 Active Directory 보안 솔루션 은 이를 모니터링할 수 있습니다. 조직 내에서 Golden Ticket이 사용 중인 것을 확인했다면 KRBTGT 계정을 두 번 재설정해야 합니다. 이 작업은 광범위한 영향을 미칠 수 있으므로 신중하게 진행하세요.
Golden Ticket에 대한 가장 중요한 방어는 도메인 컨트롤러에 대한 로그온 권한을 제한하는 것입니다. 도메인 관리자는 반드시 최소 인원으로 구성해야 하며, Print 및 Server Operators 같은 DC에 로그온 권한을 제공하는 다른 그룹의 구성원 수도 최소화해야 합니다. 또한 계층화된 로그온 프로토콜을 사용하여 도메인 관리자가 비밀번호 해시가 메모리에서 덤프되어 DC에 액세스한 뒤 KRBTGT 계정 해시를 추출하는 데 사용될 수 있는 서버와 워크스테이션에 로그온하지 못하도록 해야 합니다.
공유하기
더 알아보기
저자 소개
Jeff Warren
최고 제품 책임자
Jeff Warren은 Netwrix의 제품 포트폴리오를 총괄하며, 보안에 초점을 둔 제품 관리 및 개발 분야에서 10년이 넘는 경험을 바탕으로 기여하고 있습니다. Netwrix에 합류하기 전 Jeff는 Stealthbits Technologies에서 제품 조직을 이끌었으며, 소프트웨어 엔지니어로서의 경험을 활용해 혁신적이고 엔터프라이즈 규모의 보안 솔루션을 개발했습니다. 직접적인 실행 중심의 접근 방식과 까다로운 보안 과제를 해결하는 데 강점을 지닌 Jeff는 실제로 효과가 있는 실용적인 솔루션을 구축하는 데 집중하고 있습니다. 그는 델라웨어 대학교에서 정보 시스템(Information Systems) 학사 학위를 취득했습니다.