Пользователям Windows нужно уделять тщательное внимание сертификатам, которые установленных на компьютере. С помощью поддельных самоподписанных сертификатов, которые пользователь добавил в хранилище корневых сертификатов, злоумышленники могут осуществить атаки MiTM (man-in-the-middle), перехватывать трафик (в том числе HTTPS), разрешать запуск вредоносного ПО и скриптов и т.п.
Для поиска сторонних недоверенных и поддельных сертификатов в хранилище сертификатов Windows, можно использовать утилиту sigcheck. Утилита позволяет сравнить список сертификатов, установленных на компьютере, со списком доверенных корневых центров сертификации, (Trusted Root Certification Authorities) который ведется компанией Microsoft в рамках Microsoft Trusted Root Certificate Program.
- Скачайте архив c утилитой Sigcheck (https://learn.microsoft.com/en-us/sysinternals/downloads/sigcheck) и распакуйте на локальный диск;
- Откройте командную строку и перейдите в каталог с утилитой:
cd c:\tools\sigcheck
- Проверьте есть ли сторонние сертификаты в корневом хранилище Machine\root:
sigcheck64.exe -tv root
В данном примере утилита показала, что в корневом хранилище доверенных сертификатов компьютере есть два сторонних сертификата: DESKTOP-P2FHTKQ и Windows Admin Center - Чтобы проверить все хранища сертификатов компьютера, выполните:
.\sigcheck64.exe -tv *
У пользователя могут быть установлены собственные сертификаты (это другое хранилище), отличное от системной. Следующая команда выведет все недоверенные сертификаты, установленные у пользователя (добавье параметр
-u
(user)):
\sigcheck64.exe -tuv *

Утилита Sigcheck сравнивает список сертификатов установленных на компьютере со списком доверенных корневых сертификатов на сайте Microsoft и выводит только сертификаты, которые отсуствуют в этом списке. Если на компьютере отсустует прямое подключение к интернету, нужно вручную скачать файл authrootstl.cab со список корневых сертификаптов в формате Certification Trust List (http://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab) и сохранить его в каталог с утилитой. Это позволит провести офлайн проверку хранилища.
В идеале, на компьютер должны отсуствовать сторонние сертификаты. Если в списке есть сертификаты, которые вы явно не устаналивали и не использовали, их нужно удалить.
Удалить сертификат из хранилиза можно по его отпечатку (скопируйте Thumbrint сертификата из вывода sigcheck) с помощью команды:
certutil –delstore Root C17163D597E8A9F01F5E55679866C6C941540195
Также можно удалить сертификат из оснастку управления сертификатами компьютера компьютера (
certlm.msc
)или пользователя (
Certmgr.msc
).
Разверните контейнер Trusted Root Certification Authorities (Доверенные корневые центры сертификации) -> Certificates и удалите сертификаты, найденные утилитой SigCheck.
Рекомендуем регулярно выполнить сканирование хранилища сертификатов Windows, особенно на OEM компьютерах с предустановленной ОС (производители компьютеров/ноутбуков часто добавляют свои корневые сертификаты).
А как отследить, откуда взялся сертификат? Помимо политик.
Посмотрите журналы событий:
Event Viewer\Applications and Services logs\Microsoft\Windows\CertificateServicesClient-Lifecycle-User\Operational
Event Viewer\Applications and Services logs\Microsoft\Windows\CertificateServicesClient-Lifecycle-System\Operational
Там будет такое событие: Event ID 1006
A new certificate has been installed. Please refer to the «Details» section for more information.
В Details видно кто и какой сертфикат установил
Спасибо за подсказку, проверил там, но обнаружил, что другие сертификаты там появляются с кодом 1006, а тот что хочу отследить — нет. При этом по коду 1004, удаление, он есть. После перезагрузки сертификат снова возникает. Этот сертификат подменяет все корневые в браузере и не только в браузере. Например, зайдя на сайт google.com, в цепочке «кем выдан», появляется этот самый левый сертификат, вместо googl’овского
Таким вредительством например некоторые российские интернет провайдеры занимаются. Перехватывают трафик и подменяют реальные сертификаты удаленных серверов на один свой собственный. Все чтобы перехватывать и фильтровать шифрованный (https/TLS) трафик клиентов — он оказывается зашифрован ключами из поддельного сертификата и провайдер может просматривать зашифрованный трафик идущий между клиентом и удаленными серверами.
По сути это MitM атака («человек посередине») используемая хакерами, но в РФ (и некоторых других странах увлекающихся слежкой и цензурой интернета) уже почти узаконенная.
Бить ссаными тряпками за это надо. А при невозможности — «голосовать ногами» уходя к другому провайдеру.
Спасибо за инструкцию.
Нашел у себя в хранилище какой-то явно левый корневой сертификат:
E = [email protected]
2.5.4.41 = Secure-ServerCA
CN = Secure-ServerCA
OU = IT
O = Secure-ServerCA
L = HK
S = Central
C = HK
Удалил.
Правда инструкция уже не совсем рабочая, просьба обновить:
1 — ссылка на утилиту уже нерабочая (она открывается, но описание там от устаревшей версии 2017 года, а сама утилита с той странички уже не скачивается), но гуглением нашел актуальную версию документации и самой утилиты последней версии (v 2.9 от 2022 года, кстати написано что минимальная версия Windows ей нужна 8.1, но проверил работает и на Win7 со всеми основными официальными апдейтами):
на русском: https://learn.microsoft.com/ru-ru/sysinternals/downloads/sigcheck
на английском: https://learn.microsoft.com/en-us/sysinternals/downloads/sigcheck
В новых версиях так же немного формат опций поменяли:
после ключика -tv по идее теперь нужно указывать название хранилища сертификатов (например «Root» для хранилища корневых доверенных сертификатов «CA» для промежуточных центров сертификации и т.д. или * (звездочку) для проверки всех имеющихся хранилищ), без этого версия 2.9 у меня не хотела проверку делать.
и кроме(а можно и вместо) ключа -tv проверяющего сертификаты установленные для системы/компьютера (для всех пользователей), имеет смысл прогнать так же с ключом
-tuv (где буковка u — это «user») — в этом режиме утилита проверяет сертификаты установленные для конкретного (от имени которого она запускается) пользователя. Это разные хранилища! Для конкретного пользователя действуют все сертификаты системы ПЛЮС те, что были установлены и действуют персонально для него и запускаемых им программ.
Этот левый сертификат «Secure-ServerCA» у себя я нашел именно в хранилище пользователя, видимо какая-то программа (или вирус?) пыталась его установить, но прав в системное хранилище поставить свой сертификат не хватило и в результате установила его только для текущего пользователя.
Т.е. командная строка для проверки на наличие недоверенных сертификатов в хранилище будет такая:
«sigcheck64.exe -tuv *»
P.S.
Так же среди «недоверенных» еще нашелся «WebMoney Transfer Root CA», но это нормальный сертификат — от платежной системы Webmoney, видимо его Webmoney Keeper (приложение-кошелек этой системы), установил, которым я раньше пользовался.
Спасибо за обновление инструкции. Удалил пару явно левых сертификатов.