Mimikatz는 자격 증명을 추출하고 조작하는 다양한 방법을 제공하지만, 그중 가장 우려되는 것은 DCSync 명령입니다. 이 명령을 사용하면 공격자는 도메인 컨트롤러의 동작을 시뮬레이션하고 다른 도메인 컨트롤러에게 사용자 비밀번호 데이터를 포함한 정보를 복제하도록 요청할 수 있습니다. 실제로 공격자는 어떤 계정의 NTLM 비밀번호 해시 또는 심지어 그 계정의 평문 비밀번호까지 얻을 수 있는데, 여기에는 KRBTGT 계정의 비밀번호도 포함됩니다. 이는 공격자들이 Golden Tickets를 생성할 수 있게 해줍니다.
그것도 모자라, 이 공격은 다른 옵션과 달리 도메인 컨트롤러에서 어떤 코드도 실행하지 않고도 수행할 수 있습니다. Mimikatz 는 비밀번호 데이터를 추출할 수 있다고 제안합니다. 또한 이 공격은 Microsoft Directory Replication Service Remote Protocol (MS-DRSR)을 활용하는데, 이는 Active Directory의 유효하고도 필요한 기능이므로 끌 수 없고 비활성화할 수도 없습니다.
DCSync 공격을 수행할 수 있는 사람은 누구인가요?
Mimikatz DCSync를 실행하려면 도메인 복제를 수행할 권한이 있는 계정이 필요합니다. 이는 도메인에서 설정된 Replicating Changes 권한에 의해 제어됩니다. Replicating Changes All 또는 Replicating Directory Changes 권한이 있으면 이 공격을 수행할 수 있습니다.
기본적으로 이러한 권한은 Domain Admins, Enterprise Admins, Administrators 및 Domain Controllers 그룹으로 제한됩니다. DCSync 공격을 수행할 수 있는 추가 계정을 찾아보려면 다음 PowerShell 스크립트를 사용하십시오. 이 스크립트는 도메인에 대해 모든 도메인 수준 권한을 열거하고, 이러한 권한이 부여되었으며 RID가 1000보다 큰 모든 계정을 찾아냅니다. 이렇게 하면 모든 기본 권한은 제외됩니다.
#Get all permissions in the domain, filtered to the two critical replication permissions represented by their GUIDs
Import-Module ActiveDirectory
cd 'AD:DC=JEFFLAB,DC=local' # Replace with distinguished name of your domain
$AllReplACLs = (Get-AcL).Access | Where-Object {$_.ObjectType -eq '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2' -or $_.ObjectType -eq '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2'}
#Filter this list to RIDs above 1000 which will exclude well-known Administrator groups
foreach ($ACL in $AllReplACLs)
{
$user = New-Object System.Security.Principal.NTAccount($ACL.IdentityReference)
$SID = $user.Translate([System.Security.Principal.SecurityIdentifier])
$RID = $SID.ToString().Split("-")[7]
if([int]$RID -gt 1000)
{
Write-Host "Permission to Sync AD granted to:" $ACL.IdentityReference
}
}
이 스크립트를 실행하면 DCSync 공격을 수행하는 데 필요한 권한을 보유하고 있지만 아마도 보유하면 안 되는 사용자 및 그룹 각각이 나열됩니다:
DCSync 공격은 어떻게 실행되나요?
필요한 권한이 있다면 나머지는 매우 간단합니다. 아래 명령을 실행하기만 하면 됩니다:
Lsadump::dcsync /domain:<domain_name> /user:<user_name>
공격자는 아래에 표시된 명령을 사용하기만 하면 KRBTGT 계정의 비밀번호 해시를 손쉽게 가져올 수 있습니다:
비밀번호가 되돌릴 수 있는(복호화 가능한) 암호화로 저장되어 있다면, 평문 비밀번호가 표시됩니다:
DCSync 공격에 대해 조직은 어떻게 방어할 수 있나요?
DCSync 공격을 막는 가장 좋은 방법은 도메인에서 정보를 복제할 수 있는 권한이 있는 계정을 엄격하게 제한하는 것입니다. 먼저 위에 제공된 스크립트를 모든 도메인에 대해 실행하여, 이 공격을 수행하기에 부적절한 권한을 가진 계정이 있는지 확인할 수 있습니다. 또한 이러한 권한이 필요한 계정을 보호하기 위한 제어를 구현하고, 특히 공격자가 이를 손상시킬 수 있는 위치에 해당 계정의 비밀번호 세부 정보가 저장되지 않도록 하세요.
DCSync 공격을 감지하면 즉시 해당 계정을 비활성화하여 공격자가 권한을 추가로 상승시키거나 AD에 다른 변경을 수행하지 못하게 하세요. Netwrix Threat Prevention 는 계정 또는 워크스테이션이 추가 복제를 실행하지 못하도록 차단 정책을 제공하므로, 공격 속도를 늦추고 대응자가 위협을 제거할 수 있는 시간을 더 확보할 수 있습니다. 또한 Netwrix StealthDEFEND 는 DCSync 공격 가해자, 소스, 대상 및 질의된 개체에 대한 세부 정보를 제공하여 이러한 대응 단계를 지원합니다.
Netwrix Threat Prevention
공유하기
더 알아보기
저자 소개
Kevin Joyce
제품 관리 책임자
Netwrix의 제품 관리( Product Management ) 책임자입니다. Kevin은 사이버 보안에 대한 열정이 있으며, 특히 공격자들이 조직 환경을 악용하기 위해 사용하는 전술과 기술을 이해하는 데 집중합니다. Active Directory 및 Windows 보안에 초점을 맞춰 제품 관리 분야에서 8년의 경험을 쌓아, 조직이 Identity, 인프라 및 데이터를 보호할 수 있도록 솔루션을 구축하는 데 그 열정을 더했습니다.