Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Представь себе, что ты получил доступ к контроллеру домена с правами админа. Твои следующие шаги? Я бы сразу скопировал себе базу NTDS (ведь там есть хеши для доменных учеток), а еще бы посмотрел, что покажет mimikatz, — это могут быть хеши от паролей для различных учеток и иногда сами пароли открытым текстом.
Вот только базу NTDS просто так не скопировать — она представляет собой залоченный файл, который нельзя открыть и прочитать. Чтобы это обойти, атакующие вычитывают эту базу напрямую с диска, с помощью собственного парсера NTFS. Программы вроде mimikatz тоже работают не в лоб, а с некоторыми хитростями.
И однажды можно обнаружить, что на одном из серверов прочитать данные с диска напрямую нельзя — что-то мешает. И mimikatz тоже завершается с ошибкой. Хотя права админа есть. Что же это?
Когда-то, во времена Windows XP, почти все пользователи работали с правами админа. Исключения встречались в основном в корпоративном секторе.
Сейчас от такой практики отходят, но в реальности многие взломы так или иначе приводят к получению атакующим прав админа. Это может происходить в результате эксплуатации уязвимости, ошибок конфигурации софта, работающего с повышенными привилегиями, или банального перебора паролей. Получение атакующим прав админа на одной из машин в домене — это путь к контроллеру домена. Атакующий может, например, перехватить пароль доменного админа на одной из пользовательских машин (когда на нее зайдет сам админ), а затем залогиниться на контроллер домена.
Поскольку бизнес слишком медленно реагирует на такие угрозы (да и Microsoft те бреши, которые за уязвимости не считаются, закрывает очень долго), то некоторые производители начали реализовывать защиту от админа. Такая защита бывает в антивирусах (в виде модулей самозащиты), также есть отдельные продукты, предназначенные для защиты серверов и рабочих станций от действий «плохого админа».
Хорошо известно, что защиту на том же уровне привилегий реализовать можно только через усложнение (security through obscurity), поэтому для защиты от программ, работающих с правами администратора, то есть в ring 3, нужно применять драйвер, который работает в ring 0.
С помощью драйвера можно запретить определенные опасные операции с процессами, дисками, файлами и реестром.
Модули самозащиты антивирусов, как правило, препятствуют удалению или отключению антивируса, изменению его компонентов, изменению или удалению его конфигурации. Это реализуется при помощи перехвата функций API, изучения переданных им аргументов и блокирования опасных операций (путем возврата ошибки без вызова перехваченной функции). Например, перехват функции удаления ключа реестра должен блокировать удаление ключа реестра, если этот ключ относится к антивирусу (ведь антивирус можно отключить, если удалить записи о его сервисах, — в таком случае при следующей загрузке операционной системы антивирус не запустится).
Самозащитой антивирусов, конечно, дело не ограничивается — существует продукт, позволяющий гибко настроить ограничения для программ, в том числе работающих с правами админа. Этот продукт называется Symantec Data Center Security (DCS).
DCS предназначен для защиты главным образом серверов. В его функциональность входит защита сервисов, работающих с повышенными привилегиями, защита операционных систем после окончания их поддержки, мониторинг целостности файлов, защита от эксплоитов. Также этот продукт реализует некоторые функции хостовой IDS/IPS.
Symantec DCS позволяет задавать гибкие правила для каждой программы (далее в статье будет говориться про версию Data Center Security Server Advanced 6.7.2.1390 этого программного решения). Например, можно запретить одной программе читать какой-то файл, но разрешить чтение для другой программы (при том, что обе программы работают с правами админа). Или запретить модификацию определенного файла всем программам, кроме заданной. И так далее, вплоть до настройки разрешений для ключей реестра и узлов, с которыми допускается сетевое взаимодействие. Гибкость настройки правил разграничения доступа впечатляет! При этом, кстати, поддерживаются общие наборы правил, то есть безопасник не попадет в трясину настройки правил для каждого экзешника.
Следует отметить, что перечисленные ограничения не основаны на дескрипторах безопасности Windows, вместо этого на уровне драйвера реализуется собственный механизм разграничения доступа.
В ходе тестирования было установлено, что Symantec DSC успешно защищает от прямого чтения данных с диска (попытка такого чтения завершается с ошибкой), от mimikatz и от некоторых других популярных векторов рекогносцировки и распространения по сети. Мечта безопасника, казалось бы…
Из-за PatchGuard почти все производители защитных средств опираются на официальные способы перехвата функций. Для реестра, например, это функции обратного вызова (callbacks), устанавливаемые драйверами с помощью функции CmRegisterCallback
или CmRegisterCallbackEx
.
Посмотрим на отрывок из официальной документации:
Декомпилированный фрагмент фильтрующей функции для реестра из драйвера Symantec DCS: видно, что в некоторых случаях драйвер изменяет возвращаемое значение
В итоге фильтрующая (перехватывающая) функция получает управление до вызова исходной функции ядра операционной системы и может вернуть ошибку без передачи управления этой исходной функции, если, например, защитный драйвер решит (на основе анализа аргументов функции и данных о программе, которая инициировала операцию с реестром), что такая операция с реестром должна быть запрещена.
Аналогичный подход применяется в отношении файловой системы и сетевого трафика: так, драйвер мини-фильтра может перехватывать операции с файлами, запрещать или разрешать их, а с помощью фильтрующей прослойки (filtering layer) можно разрешать или запрещать сетевые пакеты.
Для получения более подробной информации рекомендую пройти по указанным ссылкам, все-таки низкоуровневые аспекты фильтрации не входят в тему статьи.
Источник: xakep.ru