Пользователям 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).
- Скачайте утилиту Sigcheck с сайта Microsoft (https://technet.microsoft.com/ru-ru/sysinternals/bb897441.aspx)
- Распакуйте архив Sigcheck.zip в произвольный каталог (например, C:\install\sigcheck\)
- Откройте командную строку и перейдите в каталог с утилитой: cd C:\install\sigcheck\
- В командной строке выполните команду
sigcheck.exe–tv
, илиsigcheck64.exe –tv
(на 64 битных версиях Windows) - При первом запуске утилита sigcheck попросит принять условия использования
- После этого утилита скачает с сайта Microsoft и поместит свой каталог архив authrootstl.cab со списком корневых сертификатов MS в формате Certification Trust List.
Совет. Если на компьютере отсутствует прямое подключение к Интернету, файл authrootstl.cab можно скачать самостоятельно по ссылке http://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab и вручную поместить в каталог с утилитой SigCheck
- Утилита сравнит список сертификатов установленных на компьютере со списком корневых сертификатов MSFT в файле authrootstl.cab. В том случае, если в списке коревых сертификатов компьютера присутствуют сторонние сертификаты, SigCheck выведет их список. В нашем примере на компьютере имеется один сертификат с именем test1 (это самоподписанный сертификат созданный с помощью командлета New-SelfSignedCertificate, который я создавал для подписывания кода PowerShell скрипта)
- Каждый найденный сторонний сертификат стоит проанализировать на предмет необходимости его присутствуя в списке доверенных. Желательно также понять какая программа установила и использует его.
Совет. В том случае, если компьютер входит в домен, скорее всего в списке «сторонних» окажутся корневые сертификаты внутреннего центра сертификации CA, и другие сертификаты, интегрированные в образ системы или распространенные групповыми политиками, которые с точки зрения MSFT могут оказаться недоверенными.
- Чтобы удалить данный сертификат их списка доверенных, откройте консоль управления сертификатами (msc) и разверните контейнер Trusted Root Certification Authorities (Доверенные корневые центры сертификации) -> Certificates и удалите сертификаты, найденные утилитой SigCheck.
Таким образом, проверку хранилища сертификатов с помощью утилиты SigCheck стоит обязательно выполнять на любых системах, особенно на OEM компьютерах с предустановленной ОС и различных сборках Windows, распространяемых через популярные торрент-трекеры.