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

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 32984

Скачиваний: 742

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Глава 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


background image

Утилиты системы безопасности 

Глава 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


background image

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


background image

Утилиты системы безопасности 

Глава 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


background image

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