Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
1

Как вывести список неподписанных драйверов?

29.12.2015, 15:31. Показов 3125. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всех приветствую

Цель - вывести список всех не подписанных драйверов в ОС vista и выше.
Грубо говоря вот эту инструкцию автоматизировать http://www.oszone.net/8736/Verifier.

Пробовал разобраться с verifier. Как я понял, при использовании командной строки можно лишь установить параметры, и то не до конца понятно, как же их потом использовать.

Пробовал driverquery
С ключом /si выводит инфо по inf файлам. Сключом /v выводит подробную информацию с который можно было бы работать, но ни слова о цифровых подписях, а ключи /si и /v не совместимы

WMIC тоже обладает неплохими возможностями, но опять же, про цифроподписи ни слова

Нашел такую вещь, как sigverif, но она не умее командную строку

На сисинтерналс нашел утилиту sigcheck, но оказалось, что это вообще не то.


Собственно - как ? )

bat, vbscript, posh, что угодно )

Заранее благодарю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2015, 15:31
Ответы с готовыми решениями:

Установка неподписанных драйверов
Добрый день! Win7-64 Максимальная не хочет устанавливать неподписанный драйвер для гитарной...

Вывести список установленных драйверов или устройств, а также неустановленных устройств
Здравствуйте! Подскажите как можно вывести список установленных драйверов или устройств, а также не...

Delphi 7. Как получить информацию о установленном железе и список установленных драйверов к нему
В гугле я уже был, там мало интересного на эту тему для Delphi 7. Если кто то сталкивался с этим...

Как заполнить список случайными целыми числами и вывести из него во второй список нечетные числа
Вообщем нужно создать 2 кнопки: 1)Заполняет список случайными целыми числами. 2)выводит во второй...

17
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
29.12.2015, 18:00 2
Цитата Сообщение от vavun
нашел утилиту sigcheck, но оказалось, что это вообще не то.
При всем уважении, но... что Вы употребили, чтобы сделать подобное заявление? sigcheck как-раз таки и проверяет подлинность цифровой подписи бинарника.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off
  setlocal enabledelayedexpansion
    set "key=HKLM\SYSTEM\CurrentControlSet\services"
    set "sys=%comspec:~0,-8%"
    for %%i in (sigcheck.exe) do (
      if not exist "%%~$PATH:i" (
        echo:Could not find sigcheck.exe tool.
        goto:eof
      )
    )
    for /f "tokens=2,*" %%i in (
      '2^>nul reg query %key% /s ^
      ^| findstr /irc:"imagepath.*\.sys$" 2^>nul'
    ) do (
      set "drv=%%j"
      if "!drv:~0,3!" equ "\Sy" set "drv=!drv:\SystemRoot=%systemroot%!"
      if "!drv:~0,3!" equ "sys" set "drv=!drv:system32=%sys%!"
      if "!drv:~0,3!" equ "Sys" set "drv=!drv:System32=%sys%!"
      if "!drv:~0,3!" equ "\??" set "drv=!drv:\??\=!"
      for /f "tokens=2" %%k in (
        'sigcheck -q !drv! ^| findstr /i verified'
      ) do echo:!drv!.....%%k
    )
  endlocal
exit /b
Что до PowerShell (а автор темы просил указать на любой язык), то в нем есть командлет Get-AuthenticodeSignature, который позволяет проверить наличие\отсутсвие подписи у бинарника.
PowerShell
1
2
3
4
5
6
7
8
9
10
Get-ItemProperty -ea 0 HKLM:\SYSTEM\CurrentControlSet\Services\* |
Where-Object {$_.Type -eq 1} | ForEach-Object {
  if (![String]::IsNullOrEmpty($_.ImagePath)) {
    Get-AuthenticodeSignature $(switch -regex ($_.ImagePath) {
      '\Asys.*' {Join-Path $env:windir $matches[0]}
      '\A\\sys.*' {$matches[0] -replace '\\systemroot', $env:windir}
      '\A\\\?.*' {$matches[0] -replace '\\\?\?\\', ''}
    }) | Select-Object Path, Status
  }
} | Format-Table -AutoSize
1
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
29.12.2015, 18:31  [ТС] 3
Цитата Сообщение от greg zakharov Посмотреть сообщение
При всем уважении, но... что Вы употребили, чтобы сделать подобное заявление? sigcheck как-раз таки и проверяет подлинность цифровой подписи бинарника.
При этом сам бинарник, пусть это driver.sys, может и не иметь цифровой подписи. А подписан будет только driver.cat, который в свою очередь будет содержать хеш файла driver.sys. Таким образом не имеющий подписи драйвер driver.sys будет считаться системой подписанным, если он был установлен вместе с соответствующим каталогом безопасности cat подписанным валидной подписью и содержащим хеш driver.sys. А sigcheck.exe будет считать driver.sys не подписанным, разве нет ?

С другой стороны, я не исключаю, что мог не разобраться, как использовать утиль ))
0
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
29.12.2015, 18:44  [ТС] 4
Вот, кстати, posh скрипт так и действует
Показывает подпись бинарника, а не драйвера.
Миниатюры
Как вывести список неподписанных драйверов?  
0
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
29.12.2015, 19:19  [ТС] 5
Проверил работу sigcheck, я был не прав, оказалось то, что нужно. Единственное, нет у меня не подписанных драйверов. Чуть позже проверю на виртуалке.

Кстати так работает быстрее, чем с перебором реестра
Windows Batch file
1
for /f "tokens=2 delims==" %%i in ('"wmic sysdriver get PathName /value"') do (for /f "delims=" %%j in ("%%i") do (sigcheck.exe -q -u "%%j" >>syssys.txt))
-u If VirusTotal check is enabled, show files that are unknown
by VirusTotal or have non-zero detection, otherwise show only unsigned files.

Но все равно медленно, и я не уверен верно ли использовать такой подход
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
29.12.2015, 20:55 6
Как вывести список неподписанных драйверов ?
Напиши конечную цель. Для чего тебе это?
0
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
29.12.2015, 20:58  [ТС] 7
Dragokas, конечной цели как таковой нет. Просто с ужасом обнаружил, что нет адекватной возможности проверить подписи драйверов в командной строке.
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
29.12.2015, 21:08 8
Добро пожаловать в мир PowerShell.
0
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
29.12.2015, 21:11  [ТС] 9
Dragokas, который, увы, не отработал как следует ) (если без сторонних приборов)
Проверяет подпись самого файла и плюет на cat
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
29.12.2015, 21:21 10
Пользуйся sigcheck.
На сайте указано - обновление от 25.10.2015. Так что Руссинович держит его в тонусе.
Значит на 8.1. и выше с проверкой хешей по каталогу безопасности Майкрософт по идее проблем быть не должно.
Там чуть изменилась политика.
0
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
29.12.2015, 21:23  [ТС] 11
Dragokas, да, видимо так и сделаю.
Чуть выше получился медленный но рабочий вариант. (пятое сообщение)
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
29.12.2015, 21:47 12
Цитата Сообщение от vavun Посмотреть сообщение
Чуть выше получился медленный но рабочий вариант. (пятое сообщение)
Ну можешь пойти от обратного, чтобы не дергать утиль постоянной инициализацией контекста, дать ему полный объем твоей задачи:
Windows Batch file
1
sigcheck -u %SystemRoot%\System32\drivers\*.sys
А потом парсингом, добавить то, что пропущено (драйвера за пределами system32) и отсеять то, что не является загруженным драйвером. На x64 задача вообщем то лишена смысла, т.к. там вне тестового или отладочного режима таких неподписанных загруженных драйверов быть не может.

Цитата Сообщение от vavun Посмотреть сообщение
если он был установлен вместе с соответствующим каталогом безопасности cat подписанным валидной подписью и содержащим хеш driver.sys.
Это сейчас так сертифицируются драйвера, проходящие расширенную проверку для совместимости с Win 10.
По сути в системе эти сертификаты уже есть. Т.к. проверка происходит по цепочке доверия, начиная от твоей подписи и до издателя (тот, кто выдавал тебе ЭЦП). Перечень корневых можешь глянуть через апплет certmgr.msc (или утилитой certmgr.exe, если WinSDK установлен).

А если еще более интересно, есть каталог с отозванными сертификатами (CRL), который обновляется вместе с апдейтами на систему.
Когда выполняешь проверку ЭЦП через просмотр свойств файла, ОС проверяет этот момент через Интернет.
Еще есть самоподписанные драйвера, это когда ты сам себе выдаешь корневой серт (как у Simplix-a), устанавливаешь его в систему как доверенный, и тогда твои подписи (на твоей системе) проходят как легитимные. x64 ОС вполне хорошо загружается с такими.
Другой вид - краденные серты с приватным ключем. Если винда не обновлена, будут нормально грузится и такие драйвера.
0
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
29.12.2015, 22:00  [ТС] 13
Цитата Сообщение от Dragokas Посмотреть сообщение
Ну можешь пойти от обратного, чтобы не дергать утиль постоянной инициализацией контекста, дать ему полный объем твоей задачи:
Была мысль, но уперся как раз в драйверы вне system32.

Цитата Сообщение от Dragokas Посмотреть сообщение
Это сейчас так сертифицируются драйвера, проходящие расширенную проверку для совместимости с Win 10.
На сколько я знаю, так было задолго до десятки )

Цитата Сообщение от Dragokas Посмотреть сообщение
Еще есть самоподписанные драйвера, это когда ты сам себе выдаешь корневой серт (как у Simplix-a), устанавливаешь его в систему как доверенный, и тогда твои подписи (на твоей системе) проходят как легитимные. x64 ОС вполне хорошо загружается с такими.
Работать такие драйверы не будут. Проверено Почему работает драйвер подписанный сторонним сертификатом
0
Dragokas
29.12.2015, 22:40
  #14

Не по теме:


vavun, спасибо за ссылку на исследование.
Вот на этом моменте я тоже ранее не был согласен с Убежденным, хотя лично сам не проводил опытов.
Почему не отпишешь в теме, что в итоге тебе выдала команда

Windows Batch file
1
sigcheck.exe -a -i -r C:\test\t3.sys
Интересно увидеть практическое подтверждение.

0
vavun
29.12.2015, 22:50  [ТС]
  #15

Не по теме:

В процессе поиска истины мы с Убежденным перебрались в ЛС, так как я готовил дистрибутив ОС специально для экспериментов, ну и не все подробности осели в теме, часть в ЛС :pardon:
Убежденный написал подробные выводы после всего, я посчитал, что тема себя исчерпала.

Вот наглядная демонстрация работы сигчека )
Как видно драйвер с тех пор у меня стоит все тот же "волшебный"

Скрин
Как вывести список неподписанных драйверов?

0
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
21.03.2016, 20:58  [ТС] 16
Захотелось апнуть )

А есть ли способ вывести список только сторонних драйверов и не выводить список драйверов чьим издателем является майкрософт ?
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
21.03.2016, 22:33 17
vavun, там нужно хеш сертификата проверять.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
        'Microsoft Root Certificate Authority;CDD4EEAE6000AC7F40C3802C171E30148030C072;391BE92883D52509155BFEAE27B9BD340170B76B;983B132635B7E91DEEF54A6780C09269
        Hashes(0) = "CDD4EEAE6000AC7F40C3802C171E30148030C072"
        'Microsoft Root Authority;A43489159A520F0D93D032CCAF37E7FE20A8B419;8B3C3087B7056F5EC5DDBA91A1B901F0;3FC8CB0BC05241E58D65E9448B2D07C2
        Hashes(1) = "A43489159A520F0D93D032CCAF37E7FE20A8B419"
        'Microsoft Root Certificate Authority 2011;8F43288AD272F3103B6FB1428485EA3014C0BCFE;279CD652C4E252BFBE5217AC722205D7729BA409148CFA9E6D9E5B1CB94EAFF1;BB048F1838395F6FC3A1F3D2B7E97654
        Hashes(2) = "8F43288AD272F3103B6FB1428485EA3014C0BCFE"
        'Microsoft Authenticode(tm) Root Authority;7F88CD7223F3C813818C994614A89C99FA3B5247;D67576F5521D1CCAB52E9215E0F9F743;07D34DED498D4577F261BD38B6B8736E
        Hashes(3) = "7F88CD7223F3C813818C994614A89C99FA3B5247"
        'Microsoft Root Certificate Authority 2010;3B1EFD3A66EA28B16697394703A72CA340A05BD5;08FBA831C08544208F5208686B991CA1B2CFC510E7301784DDF1EB5BF0393239;3C70FAEA25600CE3B2CC5F0B222ED629
        Hashes(4) = "3B1EFD3A66EA28B16697394703A72CA340A05BD5"
        'Copyright (c) 1997 Microsoft Corp.;245C97DF7514E7CF2DF8BE72AE957B9E04741E85;9DF0D13100123AECA770130F4AD8D209;7FDFF50729446710244A447CA2A197EA
        Hashes(5) = "245C97DF7514E7CF2DF8BE72AE957B9E04741E85"
Тебе нужно с помощью sigcheck или можно своим ПО?
0
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
22.03.2016, 06:58  [ТС] 18
Dragokas, мне для начала хоть как )
Но я думал обойтись без сигчека
0
22.03.2016, 06:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2016, 06:58
Помогаю со студенческими работами здесь

Получить список драйверов
ПОМОГИТЕ ПОЖАЛУЙСТА! Нужно написать программу на С#, которая сможет посмотреть список драйверов, в...

Получить список драйверов DOS
Нужно написать программу на С++, которая сможет посмотреть список драйверов, в данный момент...

Просмотреть список драйверов, установленых на ноуте
Ребят нужна помощь. Нужно написать програму для вывода списка установленых драйверов. Что-то вот...

Получить список драйверов, запускаемых автоматически на старте системы
здрасте всем! как в windows получить список драйверов, запускаемых автоматически на старте...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru