В чате обсуждали работу OneDrive и возник вопрос, входит cldflt.sys (Cloud Files Filter Driver) в состав Windows 10 или устанавливается вместе с клиентом OneDrive. Можно посмотреть в WIM-образе, но допустим, что такой возможности у вас нет.
Я порылся в OneNote и нашел способ, которым когда-то в Твиттере поделился кто-то из исследователей безопасности.
Можно определять по цифровой подписи файла, задействуя командлет PowerShell Get-AuthenticodeSignature или утилиту sigcheck от Sysinternals.
Значение EKU (Enhanced Key Usage) 1.3.6.1.4.1.311.10.3.6
обозначается как Windows System Component Verification
, т.е. системный компонент.
$file = "C:\WINDOWS\System32\drivers\cldflt.sys" $sig = Get-AuthenticodeSignature -FilePath $file $sig.SignerCertificate.EnhancedKeyUsageList FriendlyName ObjectId ------------ -------- Windows System Component Verification 1.3.6.1.4.1.311.10.3.6 Code Signing 1.3.6.1.5.5.7.3.3 $sig.IsOSBinary True
Строго говоря, у системных файлов Windows подписывается не сам файл, а его каталог (в свойствах файлов даже нет вкладки «Цифровая подпись»). Утилита sigcheck обозначает то же самое как NT5 Crypto
. Ниже команда и фрагмент вывода. В отличие от командлета PowerShell, она умеет извлекать из базы данных каталогов конкретный каталог, в рамках которого подписан файл.
sigcheck64 -i $file Sigcheck v2.80 - File version and signature viewer Copyright (C) 2004-2020 Mark Russinovich Sysinternals - www.sysinternals.com c:\windows\system32\drivers\cldflt.sys: Verified: Signed Signing date: 6:45 06.11.2020 Signing date: 6:45 06.11.2020 Catalog: C:\WINDOWS\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\Microsoft-Windows-Client-Desktop-Required-Package0415~31bf3856ad364e35~amd64~~10.0.19041.630.cat Signers: Microsoft Windows Cert Status: Valid Valid Usage: NT5 Crypto, Code Signing
Давайте сравним с исполняемым файлом клиента OneDrive. У меня сейчас обновленная версия клиента, т.е. она не входила в образ. Заметьте, что Friendly Name
тоже отличается – здесь Windows RT Verification
.
$file = "C:\Program Files (x86)\Microsoft OneDrive\OneDrive.exe" $sig = Get-AuthenticodeSignature -FilePath $file $sig.SignerCertificate.EnhancedKeyUsageList FriendlyName ObjectId ------------ -------- Windows RT Verification 1.3.6.1.4.1.311.10.3.21 Code Signing 1.3.6.1.5.5.7.3.3 $sig.IsOSBinary False
Установщик OneDrive в образ входит, поэтому проверка покажет его принадлежность к компонентам Windows. Предварительно я подключил образ версии 20H2.
Mount-WindowsImage -ImagePath "G:\sources\install.wim" -Index 1 -Path C:\mount -ReadOnly $file = "C:\mount\Windows\SysWOW64\OneDriveSetup.exe" $sig = Get-AuthenticodeSignature -FilePath $file FriendlyName ObjectId ------------ -------- Windows System Component Verification 1.3.6.1.4.1.311.10.3.6 Code Signing 1.3.6.1.5.5.7.3.3 $sig.IsOSBinary True
Наконец, давайте посмотрим на подпись самой sigcheck. Здесь третий вариант значения EKU – Microsoft Publisher
.
$file = "C:\Program Files (x86)\PortableSoft\Tools\sigcheck64.exe" $sig = Get-AuthenticodeSignature -FilePath $file $sig.SignerCertificate.EnhancedKeyUsageList FriendlyName ObjectId ------------ -------- Microsoft Publisher 1.3.6.1.4.1.311.76.8.1 Code Signing 1.3.6.1.5.5.7.3.3 $sig.IsOSBinary False
Сам я в цифровых подписях не особо разбираюсь, поэтому развернутых пояснений по вопросу дать не смогу. Однако подчеркну, что наличие того или иного EKU не означает, что файл безопасен или подписан Microsoft. В данном случае мы изначально изучаем файлы Microsoft, равно как можем удостовериться в этом, благодаря цифровой подписи.
В любом случае, способ любопытный, согласитесь!
Обсуждение завершено.