Проверка хранилища сертификатов Windows на наличие недоверенных корневых сертификатов

  • Автор темы Автор темы akok
  • Дата начала Дата начала

akok

Команда форума
Администратор
Ассоциация VN
Сообщения
25,275
Решения
5
Реакции
13,825
Пользователям Windows все более тщательное внимание стоит уделать установленным на компьютере сертификатам. Недавние скандалы с сертификатами Lenovo Superfish, Dell eDellRoot и Comodo PrivDog лишний раз свидетельствуют о том, что пользователю нужно быть внимательным не только при установке новых приложений, но и четко понимать, какое ПО и сертификаты предустановлены в системе производителем оборудования. Через установку поддельных или специально сгенерированных сертификатов злоумышленники могут осуществить атаки MiTM (man-in-the-middle), перехватывать трафик (в том числе HTTPS), разрешать запуск вредоносного ПО и скриптов и т.п.


Как правило такие сертификаты устанавливаются в хранилище доверенных корневых сертификатов Windows (Trusted Root Certification Authorities). Разберемся, каким образом можно проверить хранилище сертификатов Windows на наличие сторонних сертификатов.

В общем случае в хранилище сертификатов Trusted Root Certification Authorities должны присутствовать только доверенные сертификаты, проверенные и опубликованные Microsoft в рамках программы Microsoft Trusted Root Certificate Program. Для проверки хранилища сертификатов на наличия сторонних сертификатом можно воспользоваться утилитой Sigcheck (из набора утилит Sysinternals).

  1. Скачайте утилиту Sigcheck с сайта Microsoft (Sigcheck)
  2. Распакуйте архив Sigcheck.zip в произвольный каталог (например, C:\install\sigcheck\)
  3. Откройте командную строку и перейдите в каталог с утилитой: cd C:\install\sigcheck\
  4. В командной строке выполните команду sigcheck.exe–tv, или sigcheck64.exe –tv (на 64 битных версиях Windows)
  5. При первом запуске утилита sigcheck попросит принять условия использования
1693225832061.webp

  1. После этого утилита скачает с сайта Microsoft и поместит свой каталог архив authrootstl.cab со списком корневых сертификатов MS в формате Certification Trust List[/URL].

    [INFORMATION]Совет. Если на компьютере отсутствует прямое подключение к Интернету, файл authrootstl.cab можно скачать самостоятельно по ссылке http://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab и вручную поместить в каталог с утилитой SigCheck[/INFORMATION]
  2. Утилита сравнит список сертификатов установленных на компьютере со списком корневых сертификатов MSFT в файле authrootstl.cab. В том случае, если в списке коревых сертификатов компьютера присутствуют сторонние сертификаты, SigCheck выведет их список. В нашем примере на компьютере имеется один сертификат с именем test1 (это самоподписанный сертификат созданный с помощью командлета New-SelfSignedCertificate, который я создавал для подписывания кода PowerShell скрипта
1693225854044.webp

  1. Каждый найденный сторонний сертификат стоит проанализировать на предмет необходимости его присутствуя в списке доверенных. Желательно также понять какая программа установила и использует его.
    [INFORMATION]Совет. В том случае, если компьютер входит в домен, скорее всего в списке «сторонних» окажутся корневые сертификаты внутреннего центра сертификации CA, и другие сертификаты, интегрированные в образ системы или распространенные групповыми политиками, которые с точки зрения MSFT могут оказаться недоверенными.[/INFORMATION]
  2. Чтобы удалить данный сертификат их списка доверенных, откройте консоль управления сертификатами (certmgr.msc) и разверните контейнер Trusted Root Certification Authorities (Доверенные корневые центры сертификации) -> Certificates и удалите сертификаты, найденные утилитой SigCheck.
1693225875415.webp

Таким образом, проверку хранилища сертификатов с помощью утилиты SigCheck стоит обязательно выполнять на любых системах, особенно на OEM компьютерах с предустановленной ОС и различных сборках Windows, распространяемых через популярные торрент-трекеры.

Заметки IT профессионала
 
Последнее редактирование:
Поправьте, пожалуйста:
Чтобы удалить данный сертификат их списка доверенных, откройте консоль управления сертификатами (msc)
должно быть: certmgr.msc

Судя по описанию встроенной справки утилиты Руссиновича, она должна работать так, как было заявлено автором статьи:
[noparse]
-t[v] Dump contents of specified certificate store ('*' for all stores).
Specify -tu to query the user store (machine store is the default).
Append '-v' to have Sigcheck download the trusted Microsoft
root certificate list and only output valid certificates not rooted to
a certificate on that list. If the site is not accessible,
authrootstl.cab or authroot.stl in the current directory are
used instead, if present.
[/noparse]

но скачав с сайта MS новую версию sigcheck, и добавив сертификат Lenovo SuperFish, к которому как известно по интернету уже давно гуляет приватный ключ
Словом, вы можете повторить эксперимент у себя: pem-file.
Команда конвертации pem -> cer:
Код:
openssl x509 -inform PEM -in cacert.pem -outform DER -out certificate.cer
openssl можно скачать отдельно или, например, установить в составе git bash
кроме того, у меня в хранилище есть ещё сертификат от WZT (Wzor team):
Test.webp


В результате получаю:

cert.webp


Как видите, такая проверка себя не оправдала.
По моему скромному мнению, нужно вести свой собственный список белых корневых сертификатов. Они на самом деле не так часто обновляются/добавляются (речь только о корневых).
Затем сравнивать с этим списком. Разница - ваши сторонние сертификаты.
 
Последнее редактирование:
Назад
Сверху Снизу