Защита учетных записей служб Windows (часть 1)

Опубликовано: 7 Апреля, 2023
Защита учетных записей служб Windows (часть 1)

Введение

Все, кто связан с безопасностью Windows, полностью осведомлены об учетных записях служб. Администраторам сложно настроить учетные записи служб и убедиться, что они работают для каждого установленного приложения, для которого оно требуется. Как аудиторы, мы знаем, что учетные записи служб не защищены должным образом, особенно при сбросе паролей. Обе точки зрения верны в отношении сложности и проблем безопасности, связанных с учетными записями служб. Однако это не отменяет того факта, что эти учетные записи необходимо правильно проверять и защищать. Предприняв правильные шаги для защиты этих учетных записей, обе стороны проблем безопасности могут быть удовлетворены, а общая поверхность атаки для учетных записей служб может быть значительно уменьшена.

Почему сервисные аккаунты должны быть защищены

Большинству учетных записей служб при создании и настройке предоставляются повышенные привилегии. Эти повышенные привилегии предоставляются этим учетным записям путем помещения учетной записи в «административную» группу. Это может быть локальная группа, например «Администраторы», или группа домена, например «Администраторы домена». Из-за этого высокого уровня привилегий нам необходимо обеспечить защиту этих учетных записей в случае атаки на них.

Что такое учетная запись службы Windows

Когда я обсуждаю учетные записи служб, это часто сбивает с толку тех, кто не совсем понимает, о чем я говорю. Учетные записи, о которых я говорю, — это те, которые запускают службу Windows. Да, есть приложения, работающие на компьютерах с Windows, для которых также требуется учетная запись службы. Это не те аккаунты, о которых я говорю в этой статье. Например, если у вас есть приложение, работающее на сервере Windows, но вы не видите службу, работающую на этом сервере для этого приложения, это не та служба, о которой я говорю. Однако, если вы видите службу, работающую для приложения/службы, когда вы запускаете services.msc на этом сервере, то я имею в виду именно эту службу. На рис. 1 показано, как может выглядеть список служб для сервера Windows.

Изображение 10612
Рис. 1. Представление «Службы» на компьютере с Windows с помощью services.msc.

Как найти каждую учетную запись службы

Теперь, когда мы обсудили, какие службы мы имеем в виду, теперь нам нужно понять, как найти учетные записи служб. Вы увидите, что будет много различных учетных записей служб, но нас интересуют только некоторые из них, которые будут связаны с учетными записями пользователей Windows. Чтобы узнать, какие учетные записи управляют каждой службой, вы можете просто просмотреть выходные данные services.msc, обратив внимание на столбец «Войти в систему как», показанный на рис. 2.

Изображение 10613
Рис. 2.
Сервисные учетные записи для каждой службы, использующие services.msc.

Вы заметите, что в столбце «Вход в систему» есть четыре разных записи: «Сетевая служба», «Локальная система», «Локальная служба», «BEYONDTRUSTDerek». Мы хотим иметь дело только с последним в списке из перечисленных. Остальные три являются встроенными учетными записями пользователей и имеют следующие определения:

Сетевая служба — учетная запись NetworkService — это предопределенная локальная учетная запись, используемая диспетчером управления службами. Эта учетная запись не распознается подсистемой безопасности. Он имеет минимальные привилегии на локальном компьютере и действует как компьютер в сети. Учетная запись NetworkService имеет следующие привилегии:

  • SE_CHANGE_NOTIFY_NAME
  • SE_CREATE_GLOBAL_NAME
  • SE_IMPERSONATE_NAME
  • Любые привилегии, назначенные пользователям и аутентифицированным пользователям

Локальная служба — учетная запись LocalService — это предопределенная локальная учетная запись, используемая диспетчером управления службами. Эта учетная запись не распознается подсистемой безопасности. Он имеет минимальные привилегии на локальном компьютере и предоставляет анонимные учетные данные в сети. Учетная запись LocalService имеет следующие привилегии:

  • SE_CHANGE_NOTIFY_NAME
  • SE_CREATE_GLOBAL_NAME
  • SE_IMPERSONATE_NAME
  • Любые привилегии, назначенные пользователям и аутентифицированным пользователям

Локальная система — учетная запись LocalSystem — это предварительно определенная локальная учетная запись, используемая диспетчером управления службами. Эта учетная запись не распознается подсистемой безопасности. Он имеет широкие привилегии на локальном компьютере и действует как компьютер в сети. Его маркер включает SID NT AUTHORITYSYSTEM и BUILTINAdministrators; эти учетные записи имеют доступ к большинству системных объектов. Имя учетной записи во всех языковых стандартах —.LocalSystem. Также можно использовать имя LocalSystem или LocalSystem. Учетная запись LocalSystem имеет следующие привилегии:

  • SE_AUDIT_NAME
  • SE_CHANGE_NOTIFY_NAME
  • SE_CREATE_GLOBAL_NAME
  • SE_CREATE_PAGEFILE_NAME
  • SE_CREATE_PERMANENT_NAME
  • SE_DEBUG_NAME
  • SE_IMPERSONATE_NAME
  • SE_INC_BASE_PRIORITY_NAME
  • SE_LOCK_MEMORY_NAME
  • SE_PROF_SINGLE_PROCESS_NAME
  • SE_TCB_NAME

Примечание:
Большинству сервисов не нужен такой высокий уровень привилегий. Если службе не нужны эти привилегии и она не является интерактивной службой, рассмотрите возможность использования LocalService или NetworkService.

Учетные записи служб, на которые следует обратить внимание, имеют синтаксис <имя компьютера/домена><имя учетной записи пользователя>. Именно этими учетными записями можно управлять для настроек, которые мы обсуждаем в этой статье. Чтобы понять синтаксис именования, следуйте приведенному ниже руководству:

<имя компьютера><имя учетной записи пользователя> — если имя имеет этот формат, это означает, что это локальная учетная запись пользователя на компьютере, на который делается ссылка. Примером может быть Server1SRV1.

<имя домена><имя учетной записи пользователя> — если имя имеет этот формат, это означает, что это учетная запись пользователя Active Directory. Эти учетные записи хранятся на контроллерах домена и по умолчанию имеют доступ ко всем компьютерам в домене. Примером может быть BEYONDTRUSTSRV1.

Убедитесь, что учетные записи служб не являются администраторами

Первая проверка, которую мы проверим в наших учетных записях служб, — убедиться, что они не являются встроенной учетной записью администратора. Это будет несколько просто, но может потребоваться дополнительная проверка, чтобы убедиться, что это не встроенный администратор.

Конечно, первая проверка проста. Если имя указанной учетной записи — «Администратор», это не очень хорошая конфигурация. Мы не хотим, чтобы локальный или доменный администратор использовался, поскольку эта учетная запись предназначена для администрирования и аварийного восстановления, а не для использования в качестве служебной учетной записи.

Если указанное имя учетной записи не является администратором, нам необходимо убедиться, что учетная запись администратора не была переименована, а переименованная учетная запись указана как учетная запись службы. Чтобы убедиться в этом, нам нужно будет проверить SID (идентификатор безопасности) учетной записи. Есть много инструментов, которые можно использовать для проверки этого, DumpSec — самый простой из них, который можно использовать как для доменных, так и для локальных учетных записей пользователей. (DumpSec — это бесплатный инструмент, который можно загрузить с сайта www.somarsoft.com). На рис. 3 показано, как будут выглядеть результаты DumpSec для списка пользователей домена.

Изображение 10614
Рисунок 3:
DumpSec, показывающий пользователей домена и SID.

Здесь мы ищем SID, оканчивающийся на -500. Как видно из рисунка 3, учетная запись администратора заканчивается на -500, поэтому мы можем быть уверены, что это встроенная учетная запись администратора. Если имя администратора не было указано в списке или имя администратора не имело SID, оканчивающегося на -500, нам нужно было бы проверить новое имя, на которое была переименована учетная запись администратора, а затем убедиться, что эта учетная запись не была настроена как учетная запись службы на любые услуги.

Резюме

На этом этапе мы определили, что такое учетные записи служб и почему так важно их защищать. Мы перечислили наши службы и связанные с ними учетные записи служб. В любой службе может быть четыре разных учетных записи службы: локальная система, локальная служба, сетевая служба, <имя компьютера/домена><имя учетной записи пользователя>. Именно на этом последнем мы хотим сосредоточиться для защиты учетных записей служб. Наша первая проверка учетных записей служб — убедиться, что эта учетная запись не является встроенной учетной записью администратора (или переименованной учетной записью администратора). В следующем выпуске мы рассмотрим другие ключевые настройки для защиты всех сервисных учетных записей.