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

Глава 8
Утилиты системы безопасности
Предмет данной главы — пакет утилит Sysinternals, предназначенных для
настройки и управления системой безопасности ОС Windows:
• SigCheck — консольная программа для проверки подлинности цифровых
подписей файлов, вывода списков хеш-значений и информации о верси-
ях файлов.
• AccessChk — консольная программа для поиска объектов (файлов, раз-
делов реестра и служб), предоставляющих разрешения отдельным поль-
зователям или группам, а также для вывода подробной информации о
предоставленных разрешениях.
• AccessEnum — GUI-программа, выполняющая поиск файлов и разделов
реестра и выявляющая места возможного изменения разрешений.
• ShareEnum — GUI-программа, которая перечисляет общие файлы и
принтеры, доступные через сеть, а также пользователей, имеющих к ним
доступ.
• ShellRunAs — это расширение оболочки, восстанавливающее возмож-
ность запуска программы под другой учетной записью пользователя в
Windows Vista.
• Autologon — GUI-программа, которая настраивает учетную запись поль-
зователя для автоматического входа при загрузке системы.
• LogonSessions — консольная программа, которая перечисляет активные
сеансы LSA на компьютере.
• SDelete — консольная программа, которая гарантированно удаляет с
жесткого диска файлы и папки, а также стирает данные в нераспределен-
ных областях жесткого диска.
SigCheck
SigCheck — это многофункциональная консольная программа, которая ре-
шает различные задачи по защите файлов и папок. Главная ее задача состоит
в проверке наличия у файлов доверяемого сертификата цифровой подписи.
Как показано на рис. 8-1, SigCheck также способна выводить информацию
о каталогах и владельцах подписей, вычислять хеш для файлов по разным
SIN_ch_08.indd 262
27.12.2011 14:31:41

Утилиты системы безопасности
Глава 8 263
алгоритмам, а также отображать расширенную информацию о версиях фай-
лов. Кроме того, программа может отображать внедренный манифест файла,
искать в папках неподписанные файлы и выводить результаты в формате
CSV.
Рис. 8-1. Вывод команды sigcheck –a –I –h c:\windows\explorer.exe
Цифровая подпись файла помогает проверить его подлинность и целост-
ность. Проверенная подпись свидетельствует о том, что файл не был изме-
нен с момента подписания. Надежность этого свидетельства, обеспеченная
сертификатом цифровой подписи, во многом зависит от разборчивости цен-
тра сертификации (ЦС) при выдаче сертификатов, удостоверяющего под-
линность владельца, бдительности владельца сертификата при хранении
сертификата, а также от системы проверки подлинности, препятствующей
установке неавторизованных сертификатов корневых ЦС.
Одна из статей расходов при ведении бизнеса включает предоставление
клиентам гарантий подлинности программной продукции. Для этого мно-
гие официальные издатели ПО приобретают сертификаты для цифровой
подписи у официального ЦС, такого как VeriSign или Thawte. Такие серти-
фикаты позволяют подписывать файлы, устанавливаемые на компьютеры
клиентов. Отсутствие действительной подписи у исполняемого файла, при-
шедшего якобы от известной фирмы, должно вызывать подозрение.
Примечание В прошлом вредоносные программы подписывали редко. С тех пор их
издатели стали действовать более изощренно. Некоторые авторы вредоносного ПО
даже создают подставные организации и приобретают через них сертификаты для
цифровой подписи у официальных ЦС. Другие же просто крадут плохо защищенные
закрытые ключи у компаний — законных владельцев сертификатов, чтобы подписы-
вать ими вредоносное ПО.
Параметры командной строки SigCheck предоставляют множество воз-
можностей при проверке подлинности, в том числе выбор файлов для про-
верки и форматированный вывод данных (см. синтаксис ниже и табл. 8-1).
sigcheck.exe [-e] [-s] [-i] [-r] [-u] [-c ЦСtalogFile] [-a] [-h] [-m] [-n]
[-v] [-q] target
SIN_ch_08.indd 263
27.12.2011 14:31:47

264 Часть
II
Работа с утилитами
Табл. 8-1. Параметры командной строки SigCheck
Параметр
Описание
Target
Указывает процессу файл или каталог. Может содержать
подстановочные знаки
Проверка подписи
-i
Отображает имя каталога и владельцев подписей образов
-r
Проверяет сертификат на отзыв
-u
Отображает только неподписанные файлы, включая файлы
с недействительными подписями
-c
Выполняет поиск подписи в указанном файле
Проверка файлов
-e
Проверяет только исполняемые файлы (выявляются по заголовкам,
а не по расширениям)
-s
Выполняет рекурсивный обход вложенных папок
Дополнительная информация о файлах
-a
Отображает дополнительную информацию о версиях файлов
-h
Отображает хеш файлов
-m
Отображает манифест
-n
Отображает только номер версии файла
Формат вывода
-V
Вывод данных в формате CSV (не совместим с -i и -m)
-q
«Тихий» режим (не выводит заголовок)
Параметр target — единственный обязательный параметр. Он может ука-
зывать отдельный файл (например, explorer.exe), несколько файлов с по-
мощью подстановочных знаков (например, *.dll) или папку, используя для
этого относительные или абсолютные пути. Если указать папку, то SigCheck
проверит все файлы в этой папке.
Проверка подлинности подписи
При отсутствии дополнительных параметров SigCheck отображает следую-
щую информацию о каждом из проверяемых файлов:
• Verified (Проверен) Если файл подписан сертификатом цифровой под-
писи, унаследованным от корневого центра сертификации, доверяемого
на этом компьютере, и не был изменен с момента подписания, то в этом
поле отображается надпись Signed (Подписан). Если же файл не под-
писан, в поле отображается надпись Unsigned (Не подписан). Если файл
SIN_ch_08.indd 264
27.12.2011 14:31:47

Утилиты системы безопасности
Глава 8 265
подписан, но подпись не прошла проверку, появляется сообщение об
этом. Возможные причины: сертификат недействителен на момент под-
писания; корневой ЦС считается ненадежным (такое возможно, напри-
мер, в случае самоподписанного сертификата); файл был изменен после
подписания.
• Signing date (Дата подписания) Отображает дату подписания файла.
Если файл не подписан, отображается строка n/a.
• Publisher (Издатель) Название компании из внедренных сведений о
версии файла (если есть).
• Description (Описание) с информацией из внедренных сведений о вер-
сии файла (если есть).
• Product (Продукт) Поле Product Name из внедренных сведений о вер-
сии файла (если есть).
• Version (Версия) Поле Product Version из внедренных сведений о вер-
сии файла (если есть). Заметьте, что эти данные берутся из строковых, а
не двоичных данных, используемых для сравнения версий.
• File version (Версия файла) Поле File Version из внедренных сведений
о версии файла (если есть). Обратите внимание на то, что эти данные так-
же взяты из строкового раздела ресурса версии, а не из двоичного значе-
ния, используемого для сравнения версий.
Для отображения дополнительных данных подписи добавьте в команд-
ную строку параметр -i. Если подпись файла действительна, то с помощью
данного параметра можно увидеть два дополнительных поля:
• Catalog (Каталог) Показывает файл, в котором хранится подпись.
В большинстве случаев указанным файлом будет подписанный файл, од-
нако если подпись содержится не в самом файле, в каталоге, отобража-
ется файл каталога (САТ-файл). Многие файлы, которые поставляются
с Windows, подписаны в САТ-файле. Подписание в САТ-файле может в
некоторых случаях повысить производительность, но лучше использо-
вать этот способ для подписания неисполняемых файлов в форматах, не
поддерживающих внедрение подписи.
• Signers (Владельцы подписей) Отображает общее имя (CN) в строке
Subject (Субъект) сертификата цифровой подписи и сертификатах ЦС в
его цепочке.
По умолчанию SigCheck не проверяет, был ли сертификат подписи ото-
зван издателем. Чтобы проверить это, добавьте в командную строку пара-
метр -r . Имейте в виду, что проверка отзыва может потребовать намного
больше времени для проверки подписи, так как SigCheck приходится запра-
шивать точки распространения списка отзывов сертификатов (CRL).
Чтобы выполнить поиск только неподписанных файлов, добавьте в ко-
мандную строку параметр -u. После этого SigCheck проверит все указанные
файлы, но покажет информацию только о неподписанных файлах либо фай-
лах, подписи которых невозможно проверить.
SIN_ch_08.indd 265
27.12.2011 14:31:47

266 Часть
II
Работа с утилитами
Windows ведет базу данных каталогов подписей для быстрого поиска
информации о подписи по хеш-значению файла. Если вы хотите проверить
файл каталога, не зарегистрированный в базе данных, укажите его в команд-
ной строке с параметром -c.
Проверяемые файлы
Большинство неисполняемых файлов не имеет цифровой подписи. Тем не
менее, некоторые неизменяемые файлы неисполняемых форматов, постав-
ляемые с Windows, могут быть подписаны в САТ-файле. Однако изменяе-
мые файлы данных, в том числе, файлы инициализации, резервные файлы
кустов реестра, документы и временные файлы, никогда не имеют зашифро-
ванной подписи. При проверке папки с множеством подобных файлов труд-
но найти среди них неподписанные исполняемые файлы, которые обычно
и являются целью поиска. Чтобы отсеять лишнее, сначала ищут файлы по
маске *.exe, затем *.dll, *.ocx, *.scr и т.д. Главный недостаток данного метода
не в лишней работе по поиску и не в риске пропустить какое-либо расши-
рение, а в том, что исполняемые файлы, которым преднамеренно назначено
расширение .tmp или любое другое расширение, нетипичное для исполняе-
мого файла, либо не имеющие никакого расширения, будут пропущены при
поиске. Создатели вредоносного ПО часто прячут его за безопасными с виду
расширениями файлов.
Поэтому вместо перебора расширений добавьте в командную строку
SigCheck параметр -e, который заставит программу проверить только испол-
няемые файлы. В частности, SigCheck проверяет, начинается ли файл со стро-
ки MZ. Заголовки всех 16-, 32- и 64-разрядных исполняемых файлов Windows,
включая приложения, DLL и системные драйверы, начинаются с этих букв.
SigCheck игнорирует расширения файлов, так что исполняемые файлы, за-
маскированные другими расширениями, не ускользнут от проверки.
Для поиска в иерархии папок добавьте в командную строку параметр
-s. SigCheck будет проверять файлы, соответствующие параметру target, в
папке, указанной данным параметром (либо в текущей папке, если параметр
target не указывает папку) и во всех вложенных в нее папках. Приведенная
ниже команда проверяет все файлы с расширением *.dll в папке C:\Program
Files и ее вложенных папках:
sigcheck -s «c:\program files\*.dll»
Дополнительная информация о файле
Добавьте в командную строку параметр -a, чтобы извлечь дополнительную
информацию из каждого проверенного файла. При добавлении -a вывод
SigCheck дополняется следующими полями:
• Strong Name (Строгое имя) Если файл является сборкой .NET и имеет
подпись и строгое имя, в этом поле отображается надпись Signed, в про-
тивном случае — Unsigned (подписание сборок .NET с назначением им
SIN_ch_08.indd 266
27.12.2011 14:31:47