Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf
Добавлен: 29.10.2018
Просмотров: 32987
Скачиваний: 742

272 Часть
II
Работа с утилитами
windows показывает действующие разрешения на доступ к каждому файлу
и вложенной папке в папке Windows, а accesschk -d c:\windows — разреше-
ния на доступ к самой папке Windows. Аналогично, accesschk показывает
разрешения на доступ к содержимому текущей папки, а accesschk -d — раз-
решения на доступ к самой текущей папке. Наконец, accesschk * показывает
разрешения на доступ ко всем объектам в текущей папке, тогда как access-
chk -d * — только разрешения на доступ к объектам из папки, вложенной в
текущую папку.
Для проверки разрешений на доступ к разделу реестра добавьте в ко-
мандную строку параметр -k. Можно указать краткое или полное имя кор-
невого раздела (например, HKLM или HKEY_LOCAL_MACHINE), а также
поставить двоеточие (:) после корневого раздела, как делается в Windows
PowerShell (подстановочные знаки не поддерживаются). Ниже показаны
равноценные команды для вывода разрешений на доступ к подразделам
HKLM\Software\Microsoft:
accesschk -k hklm\software\microsoft
accesschk -k hklm:\software\microsoft
accesschk -k hkey_local_machine\software\microsoft
Для отображения разрешений доступа только к HKLM\Software\
Microsoft без доступа к подразделам добавьте параметр -d .
Для отображения разрешений доступа только к службам Windows до-
бавьте в командную строку параметр -c . Укажите * вместо имени объекта,
чтобы вывести сведения для всех служб, или scmanager, чтобы проверить
разрешения Диспетчера управления службами (неполные имена и подста-
новочные знаки не поддерживаются). Например, accesschk -c lanmanserver
показывает разрешения на доступ к службе Server на компьютере под управ-
лением Windows 7. Вот вывод этой команды:
lanmanserver
RW NT AUTHORITY\SYSTEM RW
BUILTIN\Administrators R NT
AUTHORITY\INTERACTIVE R NT
AUTHORITY\SERVICE
Эта команда показывает разрешения, явно предоставленные для каждой
службы группе Authenticated Users (Прошедшие проверку):
accesschk -c «authenticated users» *
Для служб W может обозначать разрешения на запуск, остановку, переза-
пуск, изменение конфигурации, а R —разрешения на запрос конфигурации
и состояния.
Для просмотра разрешений на доступ к процессам добавьте в командную
строку параметр -p. Именем объекта в этом случае может быть ID процесса
SIN_ch_08.indd 272
27.12.2011 14:31:47

Утилиты системы безопасности
Глава 8 273
(PID) либо имя процесса, например, “explorer”. AccessChk может найти про-
цесс по части его имени: команда accesschk -p exp будет показывать разре-
шения на доступ к процессам с именами, начинающимися на «exp”, включая
все экземпляры Explorer. Если указать * в качестве имени объекта, вы по-
лучите разрешения на доступ ко всем объектам. Имейте в виду, что для про-
смотра разрешений на доступ к процессам, работающим под другой учет-
ной записью или с повышенными привилегиями, требуется наличие прав
администратора. Вывод команды accesschk -p 3048 для экземпляра Cmd.exe
с повышенными привилегиями на компьютере под управлением Windows 7
выглядит следующим образом:
[3048] cmd.exe
RW
BUILTIN\Administrators
RW NT AUTHORITY\SYSTEM
Используйте -p в сочетании с -t для просмотра разрешений на доступ ко
всем потокам указанного процесса (имейте в виду, что в командной строке
параметр t должен следовать за p). Для того же экземпляра Cmd.exe с по-
вышенными привилегиями команда accesschk -pt 3048 выводит следующие
данные:
[3048] cmd.exe
RW
BUILTIN\Administrators
RW NT AUTHORITY\SYSTEM
[3048:7148]
Thread
RW
BUILTIN\Administrators
RW NT AUTHORITY\SYSTEM
R
Win7-x86-VM\S-1-5-5-0-248063-Abby
У процесса имеется один поток с ID 7148 и разрешениями, аналогичных
таковым его процесса-контейнера.
Для просмотра всех сведений маркера процесса используйте -p в соче-
тании с -f. Для каждого из перечисленных процессов AccessChk покажет
разрешения на доступ к маркеру процесса, а затем отобразит пользователя,
группы, флаги групп и привилегии маркера.
Разрешения на доступ к объектам из пространства имен Диспетчера объ-
ектов (таким как события, семафоры, разделы и каталоги) просматривают с
помощью параметра -o. Для вывода данных только об объектах конкретного
типа добавьте в команду параметр -t и укажите тип объекта. Например, при-
веденная ниже команда показывает действующие разрешения на доступ ко
всем объектам в каталоге \BaseNamedObjects:
accesschk -o \BaseNamedObjects
А действующие разрешения только для объектов Section в каталоге \
BaseNamedObjects выводит следующая команда:
accesschk -o -t section \BaseNamedObjects
SIN_ch_08.indd 273
27.12.2011 14:31:47

274 Часть
II
Работа с утилитами
Если имя объекта не указано, ведется поиск в корне пространства имен.
Утилита WinObj, описанная в главе 14, отображает графическое представле-
ние пространства имен Диспетчера объектов.
Хотя списки привилегий и прав учетной записи сами по себе не являются
защищаемыми объектами, AccessChk может показывать их с помощью па-
раметра -a. Привилегии, в отличие от прав, предоставляют учетной записи
возможности выполнения действий в системе в целом, а не над конкретным
объектом. В качестве примера можно привести SeBackupPrivilege, которая
позволяет учетной записи читать объект в обход контроля доступа. Права
же учетной записи определяют, кто и как может выполнять вход в систему, а
кто не может. Например, право SeRemotelnteractiveLogonRight необходимо
для входа в систему через удаленный рабочий стол. В отличие от прав учет-
ных записей, перечень привилегий отображается в маркерах доступа.
Ниже я расскажу об использовании параметра -a на примерах. Имейте
в виду, что для использования этого параметра AccessChk требует наличия
прав администратора. Используйте * в качестве имени объекта, чтобы по-
лучить полный список привилегий, прав и учетных записей, которым они
предоставлены:
accesschk -a *
Имя учетной записи, за которым следует *, перечисляет все привилегии и
права, присвоенные данной учетной записи. Например, следующая команда
отображает права и привилегии, присвоенные группе Опытные пользова-
тели (интересно сравнить эти результаты на компьютерах под управлением
Windows XP и Windows 7):
accesschk -a «power users» *
Наконец, указав имя привилегии или права, вы получите список облада-
ющих им учетных записей (узнать имена привилегий и прав можно с помо-
щью команды accesschk -a *). Эта команда перечисляет все учетные записи,
которым предоставлена привилегия SeDebugPrivilege:
accesschk -a sedebugprivilege
Поиск прав доступа
Одной из наиболее эффективных функций AccessChk является поддержка
поиска объектов, предоставляющих право доступа конкретным пользовате-
лям или группам. Например, AccessChk позволяет проверить, разрешено ли
пользователям изменять какой-либо объект в папке Program Files или найти
пользователей с доступом для записи к некоторым службам.
Параметр -s заставляет AccessChk выполнять рекурсивный поиск в кон-
тейнерах (папках, разделах реестра или каталогах пространства имен объек-
тов). Параметр -n перечисляет объекты, не предоставляющие прав доступа
указанной учетной записи. Параметр -r перечисляет объекты, предоставля-
SIN_ch_08.indd 274
27.12.2011 14:31:47

Утилиты системы безопасности
Глава 8 275
ющие разрешение на чтение, а параметр -w — объекты, предоставляющие
разрешение на запись. Наконец, в Windows Vista и выше параметр -e отобра-
жает объекты с явно заданным, а не установленным по умолчанию IL (по-
следнему соответствуют метки Medium и No-Write-Up).
Рассмотрим примеры:
• Поиск в папке Windows объектов, которые разрешено изменять членам
группы Пользователи:
accesschk -ws Users %windir%
• Поиск глобальных объектов, доступных для изменения членам группы Все:
accesschk -wo everyone \basenamedobjects
• Поиск разделов реестра внутри HKEY_CURRENT_USER с явно задан-
ным IL:
accesschk -kse hkcu
• Поиск служб, для которых у группы Прошедшие проверку есть разреше-
ния на запись:
accesschk -cw «Authenticated Users» *
• Перечисление именованных каналов, доступных всем пользователям
разрешения для записи:
accesschk -w \pipe\*
• Перечисление всех объектов из каталога \sessions Диспетчера объектов,
не предоставляющих разрешений группе Администраторы:
accesschk -nos Administrators \sessions
В последнем примере мы видим еще одну важную особенность AccessChk.
Разумеется, для просмотра разрешений у объекта нужно соответствующее
разрешение на чтение. Ясно также, что в системе есть множество объектов,
которые запрещено читать обычным пользователям. Например, содержимое
профиля пользователя скрыто от других пользователей, не обладающих пра-
вами администратора. Чтобы показывать эти объекты, программа AccessChk
должна работать с повышенными правами или правами администратора, но и
в этом случае ряд объектов доступен не администраторам, а только системе.
В случаях, когда маркера администратора недостаточно, AccessChk копирует
системный маркер из процесса Smss.exe и, олицетворяя его, повторяет попыт-
ку доступа — без этого функции предыдущая команда не действует.
Параметры вывода данных
Видеть можно не только разрешения R и W, но и все разрешения, доба-
вив в командную строку параметр -v. Тогда под именем каждой учетной
записью AccessChk перечисляет разрешения, используя символьные име-
SIN_ch_08.indd 275
27.12.2011 14:31:48

276 Часть
II
Работа с утилитами
на из Windows SDK. Ниже приведены действующие разрешения для
%SystemDrive%\, отображаемые с параметром -v на компьютере под управ-
лением Windows 7:
C:\
Medium Mandatory Level (Default) [No-Write-Up]
RW
BUILTIN\Administrators
FILE_ALL_ACCESS
RW NT AUTHORITY\SYSTEM
FILE_ALL_ACCESS
R
BUILTIN\Users
FIL
E_LIST_DIRECTORY
FILE_READ_ATTRIBUTES
FILE_READ_EA
FILE_TRAVERSE
SYNCHRONIZE
READ_CONTROL W NT AUTHORITY\Authenticated Users
FILE_ADD_SUBDIRECTORY
Подробные данные показывают, что администраторы и система имеют
полный доступ, пользователи — разрешение на чтение, а аутентифициро-
ванные пользователи имеют дополнительную возможность создавать вло-
женные папки внутри данной папки.
Вместо действующих разрешений можно отображать действующий ACL
объекта, используя параметр -l (это строчная буква L). Ниже приведен ACL
ссылки “C:\Documents and Settings” в Windows 7 (см. начало раздела об
AccessChk). Элементы списка управления доступом (ACE) перечисляется
в следующем порядке: записи пользователей и группы, разрешение и запре-
ты, а затем предоставленные и запрещенные разрешения. Если у ACE есть
флаги, они отображаются в квадратных скобках с указанием наследования.
Если флаг [INHERITED_ACE] отсутствует, данный ACE задан явно.
C:\Documents and Settings
Medium Mandatory Level (Default) [No-Write-Up]
[0]
Everyone
ACCESS_DENIED_ACE_TYPE
FIL
E_LIST_DIRECTORY
[1]
Everyone
ACCESS_ALLOWED_ACE_TYPE
FIL
E_LIST_DIRECTORY
FILE_READ_ATTRIBUTES
FILE_READ_EA
FILE_TRAVERSE
SYNCHRONIZE
READ_CONTROL
[2] NT AUTHORITY\SYSTEM
ACCESS_ALLOWED_ACE_TYPE
FILE_ALL_ACCESS
[3]
BUILTIN\Administrators
ACCESS_ALLOWED_ACE_TYPE
FILE_ALL_ACCESS
SIN_ch_08.indd 276
27.12.2011 14:31:48