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

akok

Команда форума
Администратор
Ассоциация VN
Сообщения
24,599
Реакции
13,564
Пользователям 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.png

  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.png

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

Таким образом, проверку хранилища сертификатов с помощью утилиты 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.png


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

cert.png


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