
Скрипт PowerShell, предназначенный для выявления (возможных) механизмов сохранения постоянного доступа, развернутых злоумышленником после компрометации домена Active Directory.
FarsightAD — это скрипт PowerShell, предназначенный для выявления (возможных) механизмов сохранения доступа, развернутых злоумышленником после компрометации домена Active Directory.
Скрипт создает экспорты в формате CSV/JSON различных объектов и их атрибутов, дополненные временными метками из метаданных репликации. Кроме того, при выполнении с привилегиями репликации используется протокол Directory Replication Service (DRS) для обнаружения полностью или частично скрытых объектов.
Для получения дополнительной информации обратитесь к вводным слайдам SANS DFIR Summit 2022.
Для работы FarsightAD требуются
PowerShell 7
и модуль ActiveDirectory, обновленный для PowerShell 7.
В Windows 10/11 модуль можно установить через «Дополнительные компоненты» как
RSAT: Средства доменных служб Active Directory и облегченных служб каталогов. Уже установленный модуль можно обновить с помощью:
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0
Если модуль обновлен правильно, Get-Command Get-ADObject должен вернуть:
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-ADObject 1.0.X.X ActiveDirectory
. .\FarsightAD.ps1
Invoke-ADHunting [-Server <DC_IP | DC_HOSTNAME>] [-Credential <PS_CREDENTIAL>] [-ADDriveName <AD_DRIVE_NAME>] [-OutputFolder <OUTPUT_FOLDER>] [-OutputType <CSV | JSON>]
Дополнительную информацию об использовании каждого командлета можно получить с помощью Get-Help -Full <CMDLET>.

Добавление полностью скрытого пользователя

Скрытие атрибута SID History пользователя

Обнаружение полностью и частично скрытых пользователей с помощью Export-ADHuntingHiddenObjectsWithDRSRepData
Код C# для запросов DRS был адаптирован из:
MakeMeEnterpriseAdmin
от @vletoux.Mimikatz от @gentilkiwi и
@vletoux.SharpKatz от @b4rtik.Функции для разбора ключевых учетных данных взяты из
модуля PowerShell ADComputerKeys.
Работа, связанная с сохранением доступа через AD CS, основана на трудах:
Функция для разбора имени участника-службы основана на работе Adam Bertram.
Лицензия CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/
| Командлет | Описание |
|---|
Invoke-ADHunting | Выполняет все командлеты охоты FarsightAD AD (перечисленные ниже). |
Export-ADHuntingACLDangerousAccessRights | Экспортирует опасные ACE, то есть ACE, позволяющие захватить нижележащий объект, для всех объектов домена. В крупных доменах может выполняться долго. |
Export-ADHuntingACLDefaultFromSchema | Экспортирует ACL, настроенные в атрибуте defaultSecurityDescriptor классов схемы. Выявляются нестандартные (согласно документации Microsoft) ACL, а также подсвечиваются потенциально опасные ACE. |
Export-ADHuntingACLPrivilegedObjects | Экспортирует ACL, настроенные на привилегированных объектах в домене, и подсвечивает потенциально опасные права доступа. |
Export-ADHuntingADCSCertificateTemplates | Экспортирует информацию и права доступа к шаблонам сертификатов. Извлекаются следующие важные параметры: статус публикации шаблона сертификата, использование сертификата, формируется ли субъект из данных, предоставленных пользователем, и контроль доступа (регистрация/изменение). |
Export-ADHuntingADCSPKSObjects | Экспортирует информацию и права доступа к чувствительным объектам PKS (NTAuthCertificates, certificationAuthority и pKIEnrollmentService). |
Export-ADHuntingGPOObjectsAndFilesACL | Экспортирует информацию о правах доступа ACL на объектах и файлах GPO, подсвечивая GPO, применяемые к привилегированным пользователям или компьютерам. |
Export-ADHuntingGPOSettings | Экспортирует информацию о различных настройках, заданных через GPO, которые могут быть использованы для сохранения доступа (привилегии и права входа, членство в ограниченных группах, запланированные и немедленные задачи V1/V2, сценарии входа/выхода пользователя и компьютера). |
Export-ADHuntingHiddenObjectsWithDRSRepData | Экспортирует атрибуты объектов, доступные через репликацию (с помощью протокола Directory Replication Service (DRS)), но не доступные при прямом запросе. Контроль доступа не учитывается для операций репликации, что позволяет выявить контроль доступа, блокирующий доступ к определенным атрибутам объекта. Оценивается только ограниченный набор чувствительных атрибутов. |
Export-ADHuntingKerberosDelegations | Экспортирует делегирования Kerberos, считающиеся опасными (неограниченное, ограниченное привилегированной службой или основанное на ресурсах для привилегированной службы). |
Export-ADHuntingPrincipalsAddedViaMachineAccountQuota | Экспортирует компьютеры, добавленные в домен непривилегированными субъектами (с использованием механизма ms-DS-MachineAccountQuota). |
Export-ADHuntingPrincipalsCertificates | Экспортирует разобранные сертификаты учетных записей (для учетных записей, имеющих непустой атрибут userCertificate). Сертификаты анализируются для извлечения ряда параметров: временные метки действия сертификата, назначение сертификата, субъект сертификата и возможные SubjectAltName(s), ... |
Export-ADHuntingPrincipalsDontRequirePreAuth | Экспортирует учетные записи, не требующие предварительной аутентификации Kerberos. |
Export-ADHuntingPrincipalsOncePrivileged | Экспортирует учетные записи, которые когда-либо входили в состав привилегированных групп. |
Export-ADHuntingPrincipalsPrimaryGroupID | Экспортирует учетные записи, имеющие нестандартный атрибут primaryGroupID, с подсветкой RID, связанных с привилегированными группами. |
Export-ADHuntingPrincipalsPrivilegedAccounts | Экспортирует подробную информацию о членах привилегированных групп. |
Export-ADHuntingPrincipalsPrivilegedGroupsMembership | Экспортирует текущих и прошлых членов привилегированных групп, полученных с использованием метаданных репликации. |
Export-ADHuntingPrincipalsSIDHistory | Экспортирует учетные записи, имеющие непустой атрибут SID History, с разрешением связанного домена и подсветкой привилегированных SID. |
Export-ADHuntingPrincipalsShadowCredentials | Экспортирует разобранную информацию о ключевых учетных данных (для учетных записей, имеющих непустой атрибут msDS-KeyCredentialLink). |
Export-ADHuntingPrincipalsTechnicalPrivileged | Экспортирует технические привилегированные учетные записи (SERVER_TRUST_ACCOUNT и INTERDOMAIN_TRUST_ACCOUNT). |
Export-ADHuntingPrincipalsUPNandAltSecID | Экспортирует учетные записи, определяющие атрибуты UserPrincipalName или AltSecurityIdentities, с подсветкой потенциальных аномалий. |
Export-ADHuntingTrusts | Экспортирует доверия всех доменов леса. Для каждого доверия извлекается ряд параметров: транзитивность, фильтрация SID, делегирование TGT. |