DCShadow는 오픈 소스 도구 mimikatz의 기능입니다. 다른 블로그 게시물에서는 공격자가 관리자 자격 증명을 확보한 뒤 DCShadow를 사용해 탐지 없이 도메인에서 지속성을 확보하는 방법을 다룹니다. 하지만 DCShadow는 공격자가 자신의 권한을 상승시키는 데도 사용할 수 있습니다.
도메인 관리자가 권한을 더 높이려면 어떻게 해야 할까요? 다른 포리스트에서 관리자 권한을 획득하면 됩니다. 공격자는 SID History를 활용해 사용자 계정에 관리용 SIDs를 추가하고, 다른 신뢰된 도메인과 포리스트에서 관리자 수준의 권한을 얻을 수 있습니다. 이 글에서는 이러한 방식이 어떻게 작동하는지 살펴보겠습니다.
1단계. 신뢰 관계 확인
첫 번째 단계는 어떤 신뢰 관계가 존재하는지 확인하는 것입니다. 이를 수행하는 방법은 여러 가지가 있지만, PowerShell을 통해 활용할 두 가지는 PowerSploit 프레임워크와 Active Directory PowerShell 모듈입니다.
찾은 각 신뢰 관계마다 SID 필터링이 활성화되어 있는지 확인해야 합니다. 활성화되어 있다면, 과거 SIDs는 해당 신뢰 관계 반대편의 포리스트에 접근하는 데 사용할 수 없습니다. 하지만 비활성화되어 있다면 상황이 달라집니다. 흔히 마이그레이션 후에도 사용자가 필요로 하는 시스템과 데이터에 대한 액세스를 잃지 않도록 이 옵션을 비활성화 상태로 두는 경우가 많습니다. 아래 PowerShell 명령은 신뢰 관계를 찾아내고 SID 필터링을 포함한 각 옵션을 나열합니다:
Get-NetDomainTrust | ForEach-Object{Get-ADTrust –filter * -server $_.TargetName}
이 명령의 출력 결과는 아래에 제공됩니다. SID 필터링이 비활성화되어 있는 gobias.local 도메인에 대한 신뢰 관계가 있음을 확인할 수 있습니다(SidFilteringQuarantined = False). 따라서 과거 SIDs를 사용하여 해당 도메인의 리소스에 액세스할 수 있게 됩니다.
SID 필터링과 신뢰 관계에 대해 더 알아보려면 이 TechNet의 게시글을 읽어 보세요.
2단계. SID History를 사용해 권한을 상승
다음으로, 신뢰하는 포리스트의 리소스에 액세스할 수 있도록 사용자 계정에 관리용 SID를 추가해야 합니다. 여기서 DCShadow는 두 가지 이유로 유용합니다:
- AD Users & Computers와 같은 애플리케이션을 통해서는 SID History를 기본적으로 변경할 수 없습니다.
- DCShadow는 어떠한 탐지도 없이 이 변경을 수행합니다.
SID History에 추가할 SID만 선택하면 됩니다. Administrator 및 Domain Admins 같은 잘 알려진 SID와 기본 제공 사용자 또는 그룹은 사용하지 않겠습니다. 다른 도메인에서는 이러한 SID를 해당에 해당하는 개체에만 할당할 수 있도록 제어가 있기 때문입니다. domain reconnaissance를 수행하면, 권한을 상승시키기 위해 액세스 토큰에 추가하고자 하는 도메인 사용자 또는 그룹을 찾을 수 있어야 합니다.
다음 DCShadow 명령을 사용하여 gobias.local 포리스트의 AD-Admins 그룹을 사용자 계정에 추가해 봅시다:
lsadump::dcshadow /object:"CN=Jeff Warren,OU=Administrators,OU=Users,OU=JEFFLAB,DC=JEFFLAB,DC=local" /attribute:sidhistory /value:S-1-5-21-1722627474-2472677011-3296483304-1113
새로 추가된 SIDhistory 값을 확인하려면 다음 스크립트를 실행할 수 있습니다:
Get-ADUser Jeff -Properties sIDHistory
이 모든 작업이 제대로 되었는지 확인하려면, 이 사용자로 다시 로그인한 후 whoami /groups 명령을 실행하여 새 그룹 멤버십을 확인할 수 있습니다. 사용자에게 이 그룹은 SID history를 통해서만 토큰에 포함됩니다.
3단계. 상승된 권한 사용
액세스 권한을 확보하면 신뢰할 수 있는 포리스트에서 데이터를 추출하는 방법은 얼마든지 있습니다. 가장 효율적인 방법 중 하나는 DCSync 대상 도메인 컨트롤러에서 코드를 실행할 필요가 없기 때문입니다.
계정에 SID 기록을 추가하기 전에는 DCSync 를 대상 포리스트에 대해 실행하려고 하면 액세스가 거부되었습니다:
하지만 사용자 계정에 과거 SID를 추가한 후에는 동일한 명령을 성공적으로 실행하여, 매우 가치가 큰 krbtgt Kerberos 서비스 계정을 포함한 모든 계정의 암호 해시를 얻을 수 있었습니다.
DCShadow 탐지 및 대응
DCShadow를 탐지하는 데 사용되는 주요 방법은 악성(rogue) 도메인 컨트롤러의 등록 및 등록 취소와 일치하는 행위 패턴을 찾고, 그들이 전송하는 복제 트래픽을 모니터링하는 것입니다. 기본 제공 기능으로 Netwrix StealthDEFEND 는 DCShadow의 징후를 감지하기 위해 모든 도메인 복제 및 변경 이벤트를 적극적으로 모니터링합니다.
Netwrix Threat Prevention 차단 정책은 가해자 계정 또는 워크스테이션이 추가 복제, 인증 및 기타 활동을 수행하지 못하도록 방지하는 데 사용할 수 있습니다. 이는 공격자를 느리게 만들고, 대응 담당자가 위협을 완전히 제거하는 데 더 많은 시간을 확보할 수 있게 해줍니다.
공유하기
더 알아보기
저자 소개
Jeff Warren
최고 제품 책임자
Jeff Warren은 Netwrix의 제품 포트폴리오를 총괄하며, 보안에 초점을 둔 제품 관리 및 개발 분야에서 10년이 넘는 경험을 바탕으로 기여하고 있습니다. Netwrix에 합류하기 전 Jeff는 Stealthbits Technologies에서 제품 조직을 이끌었으며, 소프트웨어 엔지니어로서의 경험을 활용해 혁신적이고 엔터프라이즈 규모의 보안 솔루션을 개발했습니다. 직접적인 실행 중심의 접근 방식과 까다로운 보안 과제를 해결하는 데 강점을 지닌 Jeff는 실제로 효과가 있는 실용적인 솔루션을 구축하는 데 집중하고 있습니다. 그는 델라웨어 대학교에서 정보 시스템(Information Systems) 학사 학위를 취득했습니다.