우리의 LDAP 정찰 게시물에서 공격자가 Windows Active Directory (AD) 도메인에서 표적으로 삼을 서비스 계정을 찾아내기 위해 정찰을 수행하는 방법을 살펴보았습니다. 이제 공격자가 그러한 계정을 손상시키고 해당 계정의 권한을 악용하는 데 사용할 수 있는 한 가지 방법인 Kerberoasting을 알아보겠습니다. 이 기법은 도메인에서 관리자 권한이 필요 없고, 수행이 매우 쉽고, 사실상 탐지가 거의 불가능하다는 점에서 특히 무섭습니다.
엄선한 관련 콘텐츠:
Kerberoasting: 개요
Kerberoasting는 Kerberos 프로토콜의 기능을 악용해 Active Directory 사용자 계정의 비밀번호 해시를 수집하는 공격입니다. 인증된 도메인 사용자는 계정의 Service Principal Name(SPN)을 지정하여 해당 계정에 대한 서비스 티켓을 요청할 수 있으며, 도메인 컨트롤러의 티켓 부여 서비스(TGS)는 계정 비밀번호의 NTLM 해시를 사용해 암호화된 티켓을 반환합니다.
따라서 공격자가 LDAP reconnaissance 같은 전술로 서비스 계정의 SPN을 알아낸 다음에는, 해당 계정들에 대한 티켓을 모두 수집할 수 있습니다. 그 데이터를 오프라인으로 가져가면, 각 서비스 계정의 평문 비밀번호를 해독하기 위해 무차별 대입(브루트 포스) 공격을 수행할 수 있으며—탐지되거나 계정이 잠길 위험이 0입니다.
공격자가 도메인에 액세스하고 티켓을 수집한 뒤 비밀번호 해독(크래킹) 절차를 시작하는 데는 불과 몇 분이면 충분합니다. 그다음에는 한두 개 이상의 서비스 계정을 손상시키기까지 기다리기만 하면 됩니다. 손상된 서비스 계정을 이용해 민감한 데이터를 훔치거나 암호화하거나, 다른 형태의 피해를 가할 수 있습니다.
공격자는 여러 가지 이유로 서비스 계정을 집중적으로 노립니다. 먼저, 이러한 계정은 다른 AD 사용자 계정보다 훨씬 더 광범위한 권한을 갖는 경우가 많아서 이를 손상시키면 공격자가 더 많은 접근 권한을 얻게 됩니다. 또한 서비스 계정 비밀번호는 거의 변경되지 않으므로 공격자는 오랫동안 접근 권한을 유지할 가능성이 큽니다. Kerberoasting을 사용해 얻을 수 있는 접근 유형을 이해하려면 Sean Metcalf가 유지 관리하는 Active Directory SPNs 목록을 확인하세요.
Kerberoasting: 작동 방식
1단계. 서비스 계정의 SPN을 확보합니다.
. 이러한 SPN을 얻는 방법은 여러 가지가 있으며, 예를 들어:
- PowerShell 쿼리와 LDAP 정찰
- PowerShell용 Active Directory 모듈
- Kerberoast 도구 키트
- PowerSploit
2단계. 서비스 계정 SPN에 대해 서비스 티켓을 요청합니다.
PowerShell 몇 줄만 실행하면 서비스 티켓이 반환되어 시스템 메모리에 저장됩니다.
Add-Type –AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken –ArgumentList ‘MSSQLSvc/jefflab-sql02.jefflab.local:1433’
3단계. Mimikatz를 사용해 서비스 티켓을 추출합니다.
Mimikatz는 로컬 티켓을 추출하고 오프라인 크래킹을 위해 디스크에 저장합니다. Mimikatz를 설치한 다음, 단 한 번의 명령을 실행하면 됩니다:
4단계. 티켓을 크랙합니다.
Kerberos 티켓은 티켓 요청에 지정된 SPN과 연결된 서비스 계정의 비밀번호로 암호화됩니다. Kerberoasting 도구는 티켓을 크랙하고 비밀번호 해시 사전(딕셔너리)을 대입해 해당 티켓의 평문 비밀번호를 제공하는 Python 스크립트를 제공합니다. 스크립트를 실행하는 데 필요한 환경이 갖춰져 있는지 확인하기 위해 약간의 설정이 필요할 수 있지만, 이 블로그에서 해당 세부 정보를 다룹니다.
또 다른 방법으로는 GetUserSPNs 스크립트를 사용해 Kerberos 티켓을 수집한 뒤, Hashcat 비밀번호 복구 도구로 크랙할 수도 있습니다.
Kerberoasting 공격으로부터 보호하기
Kerberoasting 공격에 대한 주요 대응책은 모든 서비스 계정이 크랙하기 어려운 길고 복잡한 비밀번호를 사용하도록 하고, 비밀번호를 크랙할 수 있게 된 공격자가 해당 계정을 사용할 수 있는 시간을 최소화하기 위해 이를 정기적으로 회전(교체)하는 것입니다. group managed service accounts 는 자동으로 회전할 수 있는 무작위의 복잡한 비밀번호를 할당하기 위한 모범 사례입니다.
공격자는 티켓을 오프라인에서 크랙하기 때문에, 해당 과정에서는 네트워크 트래픽이 발생하지 않아 그 부분의 공격은 탐지할 수 없습니다. 하지만 보안 솔루션을 통해 Active Directory를 모니터링하면 공격의 초기 단계는 포착할 수 있습니다. solid security solution 특히 서비스 계정은 일반적으로 동일한 방식으로 동일한 시스템에서 사용되므로, 비정상적인 인증 요청을 감지하는지 확인하세요. 또한 서비스 티켓 요청이 급증하는지 모니터링하십시오.
마지막으로 보안 전문가들은 RC4 기반 암호화를 비활성화할 것도 권장합니다. 그렇지 않으면 사용자의 계정이 AES 암호화를 지원하더라도 공격자가 RC4로 암호화된 티켓을 요청할 수 있으며, 이는 AES 암호화를 사용해 생성된 티켓보다 더 쉽게 크랙됩니다.
공유하기
더 알아보기
저자 소개
Jeff Warren
최고 제품 책임자
Jeff Warren은 Netwrix의 제품 포트폴리오를 총괄하며, 보안에 초점을 둔 제품 관리 및 개발 분야에서 10년이 넘는 경험을 바탕으로 기여하고 있습니다. Netwrix에 합류하기 전 Jeff는 Stealthbits Technologies에서 제품 조직을 이끌었으며, 소프트웨어 엔지니어로서의 경험을 활용해 혁신적이고 엔터프라이즈 규모의 보안 솔루션을 개발했습니다. 직접적인 실행 중심의 접근 방식과 까다로운 보안 과제를 해결하는 데 강점을 지닌 Jeff는 실제로 효과가 있는 실용적인 솔루션을 구축하는 데 집중하고 있습니다. 그는 델라웨어 대학교에서 정보 시스템(Information Systems) 학사 학위를 취득했습니다.