Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах / Хабр

Что значит ошибка 0xc0000428?

Общее определение сути проблемы для всех вероятных ситуаций ее проявления – неполадки в системных файлах.

Отключение проверки идентификатора драйверов на постоянной основе

С этой целью часто применяют сторонний софт, но можно также осуществить процедуру вручную:

Отключение обязательной проверки подписи драйверов

5 способов устранения ошибки 0xc0000428

Не стоит отчаиваться во время поиска того, как исправить 0xc0000428. Ниже рассмотрены 5 способов решения проблемы. Они размещены в порядке актуальности — самые эффективные в начале и наименее действенные в конце.

Восстановление при загрузке

Все вышеописанные действия эффективны, когда речь не идёт о повреждении загрузчика системы. Если проблема не была решена, восстановление загрузчика Windows можно выполнить, применив загрузочную флешку с соответствующей версией ОС или диск, для чего нажать внизу справа «Восстановление системы», выбрать из меню «Выбор действия», «Поиск и устранение неисправностей», затем переходим в «Дополнительные параметры» и жмём «Восстановление при загрузке».

Как альтернативный вариант можно прибегнуть к возврату к созданной ранее точке восстановления Windows. Если таковые имеются, их можно найти в параметрах, загрузившись с флешки с ОС и нажав «Восстановление системы», после чего перейдя по меню. Того же эффекта можно добиться, используя командную строку с правами администратора, в консоли потребуется ввести команду rstrui.

Встроенная учетная запись администратора

Это касается сбоев при запуске или установке приложений, если вышеуказанные способы не помогли. Действовать следует таким образом:

Выключение управления аккаунтами

Этот способ помогает эффективно решить проблему с ошибкой 0xc0000428, когда пользователь осуществляет установку либо запуск приложения. С этой целью рекомендуется задействовать редактор системного реестра. Там открывается ветка HKLM/Software/Microsoft/Windows/CurrentVersion/Policies/System.

Запуск от имени администратора

Это касается проблем при запуске или установке приложений. Если программа не открывается, то следует кликнуть на ее ярлык правой кнопкой мышки, выбрать пункт “Запуск от имени администратора”, подтвердить операцию, так как об этом появится оповещение на экране. Если не открывается установочный файл, то нужно выполнить с ним аналогичное действие.

Значение ошибки 0xc0000428

Она означает, что операционная система Windows не запускается из-за некорректного состояния определенных системных файлов.

0xc0000428

Исправление ошибки 0xc0000428 в windows 10

Все способы решения проблемы 0xc0000428 Windows 10 рассмотрены ранее в статье. Следует только учесть характер проявления сбоя: во время запуска/установки операционной системы или запуска/установки программы.

Исправление ошибки 0xc0000428, возникающей при запуске windows 7

Для решения проблемы 0xc0000428 Windows 7 следует пробовать методы, которые рассмотрены в разделах статьи “Удаление цифровой подписи файла” или “Использование командной строки”.

Как исправить ошибку 0xc0000428?

В силу большого разнообразия причин проблемы, способов исправления ошибки тоже немало. Вот пятерка действенных методов.

Как установить драйвер без цифровой подписи

В некоторых случаях даже самый проверенный драйвер может оказаться без соответствующей подписи. Но это не значит, что ПО вредоносное или плохое. Чаще всего от проблем с цифровой подписью страдают владельцы Windows 7. В последующих версиях ОС этот вопрос возникает гораздо реже. Выявить проблему с подписью можно по следующим симптомам:

Исправить все описанные выше проблемы и ошибки можно, лишь отключив обязательную проверку наличия цифровой подписи у драйвера. Предлагаем вам несколько способов, которые помогут справиться с этой задачей.

Общие рекомендации

Если проблема возникла при запуске/установке операционной системы, то следует:

  • удалить файл oem-drv64.sys;
  • использовать легальные версии Windows;
  • восстановить поврежденный загрузчик BOOTMGR.

Если сбой появляется при запуске/установке программы, то стоит:

  • использовать права администратора;
  • отключить контроль учетных записей;
  • создать встроенную учетную запись администратора.

Ошибка 0xc0000428 не позволяет запустить/установить операционную систему или программу. Для устранения неполадки чаще всего стоит применять лицензионное программное обеспечение, проводить очистку цифровой подписи, устанавливать более высокие права доступа, восстанавливать поврежденные системные файлы или работать в “Безопасном режиме”.

Нашли опечатку? Выделите текст и нажмите Ctrl Enter

Отключение контроля учетных записей uac

Это касается неполадок при запуске или установке приложений. Необходимо выполнять следующие действия:

  • зажать комбинацию Win и R, ввести в появившемся окне запрос regedit и нажать Enter — запустится “Редактор реестра”;
  • в левой панели “Редактора реестра” следовать по пути: HKEY_LOCAL_MACHINE => Software => Microsoft => Windows => CurrentVersion => Policies => System;
  • в правой (большей) панели “Редактора реестра” нужно отыскать строку EnableLUA и кликнуть 2 раза;
  • в появившемся окне в строке “Значение” заменить имеющуюся цифру на 0 и нажать “ОК” — это деактивирует UAC;
  • закрыть “Редактор реестра”, при этом появится запрос на перезагрузку Windows, который нужно подтвердить.

Следует учесть, что отключенный UAC снижает уровень защиты операционной системы перед зловредным программным обеспечением.

Отключение проверки подписи драйвера windows 10 на один раз

Данный способ позволяет отключить проверку подписи драйверов единоразово, до следующей перезагрузки компьютера.

Кликните по меню «Пуск» и зайдите в «Параметры Windows» (иконка шестеренки). Зайдите в раздел «Обновление и безопасность».

Перейдите во вкладку «Восстановление» и в разделе «Особые варианты загрузки» кликните «Перезагрузить сейчас».

Произойдёт перезагрузка компьютера с запуском специального загрузчика. Перейдите в пункт «Диагностика».

Далее кликните по пункту «Дополнительные параметры».

Далее перейдите в пункт «Параметры загрузки».

У вас откроется меню с выбором параметров загрузки Windows 10. Кликните по пункту «Отключить обязательную проверку подписи драйверов».

Вы можете либо кликнуть мышью по данному пункту, либо просто нажать клавишу F7 на клавиатуре. После этого у вас загрузится Windows 10 уже без проверки подписи драйверов, и вы сможете спокойно осуществить установку. При последующей загрузке компьютера проверка подписи опять будет работать.

Отключение проверки подписи драйвера windows 10 навсегда

Есть три решения, как можно отключить проверку цифровых подписей драйверов навсегда.

Отключение проверки цифровой подписи

В Windows 7 требования к устанавливаемым драйверам существенно ужесточены, и любой устанавливаемый драйвер должен иметь цифровую подпись, проверенную и сертифицированную Microsoft. Перед загрузкой и установкой драйвера устройства Windows проверит его цифровую подпись, и если драйвер не подписан, выдаст предупреждение

Можно это предупреждение проигнорировать и установить драйвер, однако работать он не будет все равно. При установке неподписанного драйвера в диспетчере устройств данное устройство будет помечено восклицательным знаком и содержать сообщение об ошибке.

Политика проверки цифровой подписи драйверов призвана улучшить надежность и стабильность операционной системы, но иногда возникает необходимость установить неподписанный драйвер. К счастью, в Windows 7 можно отключить проверку цифровой подписи. Для этого есть несколько способов:

Отключить поверку цифровой подписи драйверов при загрузке через загрузочное меню. Для этого при загрузке ОС жмем клавишу F8. Для загрузки без проверки цифровых подписей нужно выбрать пункт «Отключение обязательной проверки подписи драйверов»

Дальше можно загружаться и устанавливать необходимые драйвера. Однако данный режим предназначен исключительно для тестирования и при следующей загрузке в обычном режиме установленный драйвер работать не будет.

Для постоянной загрузки в тестовом режиме можно воспользоваться утилитой командной строки bcdedit. Для этого открываем командную строку с правами администратора

И последовательно вводим 2 команды:

bcdedit -set loadoptions DDISABLED_INTEGRITY_CHECKS

bcdedit  -set TESTSIGNING ON

После выполнения каждой команды должно появиться сообщение об успешном выполнении.  Теперь можно перезагрузить компьютер и установить необходимые драйвера.

Читайте также:  КриптоПро | КриптоПро PDF - Часто задаваемые вопросы

Для отключения тестового режима нужно ввести в командной строке команды:

bcdedit -set loadoptions ENABLE_INTEGRITY_CHECKS

bsdedit -set loadoptions TESTSIGNING ON

Важно: если выдается сообщение о том, что команда неизвестна, то вместо дефиса (-) ключи можно писать через слеш (/).

Ну и наконец можно просто отключить проверку цифровых  подписей драйверов  через групповую политику. Для запуска оснастки групповой политики вводим в меню Пуск в строке поиска команду gpedit.msc и жмем Ввод. В меню политик идем в Конфигурация пользователяАдминистративные шаблоныСистемаУстановка драйверов  и выбираем политику «Цифровая подпись драйверов устройств».

В появившемся окне включаем политику и указываем параметр Пропустить в качестве действия системы при обнаружении неподписанных драйверов.

После перезагрузки политика применится и можно будет загружать и устанавливать любые, в том числе и неподписанные драйвера.

Отключение через безопасный режим и средство «bcedit»

Запустите компьютер в безопасном режиме.

Кликните правой кнопкой по меню «Пуск» и запустите командную строку с правами администратора.

Источник

Отключение через командную строку

Отключение проверки подписей драйверов через командную строку имеет ограничение. Эта возможность доступна только при условии, что ваш компьютер работает с BIOS. Если же у вас UEFI, то прежде необходимо отключить «Secure Boot».

Кликните правой кнопкой мыши по меню «Пуск» и откройте командную строку с правами администратора.

В открывшейся командной строке введите следующую команду и нажмите «Enter».

После того, как отработают команды (как на скриншоте выше), перезагрузите компьютер. Проверка подписей драйверов будет отключена, но в правом нижнем углу экрана постоянно будет висеть табличка о тестовом режиме работы Windows 10.

Чтобы её убрать, вам потребуется открыть командную строку с правами администратора и вбить туда следующую строку:

Ошибка проверки цифровой подписи файла (0xc0000428) |

У клиента при загрузке появилось сообщение:

File: windowssystem32DRIVERSoem-drv64.sys
Status: 0xc0000428

Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах / Хабр

Суть проблемы в том, что в загрузке присутствует системный драйвер, не обладающий корректной цифровой подписью, наличие которой проверяется при загрузке.

Предположительно, это следы активатора, которым была активирована Windows.

Для решения проблемы следует отключить данную проверку при текущем запуске, для этого нажимаем enter

Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах / Хабр

Далее, нажимаем F8, для выбора дополнительных вариантов загрузки

Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах / ХабрПосле чего, выбираем пункт «Отключение обязательной проверки подписи драйверов»

После загрузки, необходимо запустить редактор реестра (Win R, regedit) удалить ветку
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesoem-drv64

Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах / Хабр

После перезагрузки проблема должна уйти.

В нашем случае слетела активация Windows. Посоветовал клиенту приобрести лицензию, например на ebay.

Пользуйтесь лицензионными программами 😉

(Visited 4 971 times, 1 visits today)

Причины возникновения ошибки

Чаще всего проблема возникает из-за следующих факторов:

  1. Использование пиратской версии операционной системы. На постсоветском пространстве относительно часто применяют нелицензионную Windows, поэтому ошибка 0xc0000428 при установке системы является распространенной. Если в описании неполадки упоминается файл oem-drv64.sys, то проблема с активацией. Загрузчик проверяет файл, не находит для него цифровой подписи и перестает дальше работать.
  2. Изменение или замена системных компонентов. Скорее всего, это нарушение целостности загрузчика операционной системы – BOOTMGR. Он отвечает за корректный старт системы. Если ошибка 0xc0000428 при запуске содержит название файла winload.exe, то проблема однозначно с BOOTMGR. Он буквально не может найти все файлы, которые нужны для загрузки. Это может быть вызвано ошибками в процессе обновления операционной системы, которые повредили BOOTMGR.
  3. Старый накопитель используется с новой версией Windows. Предполагается, что пользователь установил операционную систему на новый накопитель, а после этого подключил старый жесткий диск. В результате может применяться старый загрузчик и возникает программный конфликт, который останавливает запуск системы.
  4. Установка неподходящих драйверов на новое оборудование. Имеется в виду, что у них неподходящая цифровая подпись. Важно, что не всегда проблема возникает после подключения к компьютеру физического устройства. Она может случиться и после установки виртуального оборудования. Например, виртуальный дисковод DAEMON Tools.
  5. Использование мультизагрузочных флешек. Предполагается, что проблема возникает на этапе установки операционной системы. Это обусловлено влиянием загрузчика Grub4DOS, который имеется на флешке.

В отношении сбоев при запуске или установке приложений причинами являются неактуальность цифровой подписи файла или истечение срока годности сертификата безопасности.

Проверка цифровой подписи

В Windows 7 для проверки цифровой подписи есть специальная утилита sigverif.exe. Для ее запуска нужно в поисковой строке меню Пуск набрать sigverif.exe и нажать Ввод

В окне программы жмем Начать и она автоматически проверяет системные файлы на наличие подписей.

Результат проверки сохраняется в текстовый файл sigverif.txt. Хранится он в папке Общие документы, также его можно посмотреть прямо из окна программы, щелкнув по кнопке  Дополнительно.

Решаем проблему с проверкой цифровой подписи драйвера

Иногда при установке абсолютно любого драйвера могут возникнуть проблемы. Одной из них является проблема с проверкой цифровой подписи драйвера. Дело в том, что по умолчанию можно инсталлировать только то ПО, которое имеет подпись. Причем эта подпись должна быть в обязательном порядке проверена компанией Microsoft и иметь соответствующий сертификат.

Решение 1: убираем цифровую подпись файла

Решение предназначено для пользователей, которые сталкиваются с неполадкой при загрузке ОС.

2 варианта действий:

После выполнения любого действия еще следует подкорректировать несколько параметров реестра. Речь идет о внутренней папке HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services под названием oem-drv64. Ее тоже удаляем. Чтобы открыть редактор, достаточно ввести в поиск regedit.

Решение 2: применяем командную строку

С помощью консоли можем устранить сразу 2 причины появления ошибки 0xc0000428: некорректные цифровые подписи и повреждения BOOTMGR.

Как выключить проверку подписей:

  1. Переходим в БИОС при помощи F2 или Del во время загрузки.
  2. Выключаем опцию «Secure boot».
  3. В процессе запуска жмем на F8 и выбираем «Отключение проверки подписей».Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах / Хабр
  4. Кликаем ПКМ по пуску, открываем командную строку и вводим bexe /set nointegritychecks on.
  5. Жмем на кнопку Ввод.

Как обновить BOOTMGR:

  1. Загружаем ОС с установочной флешки или диска.
  2. Выбираем вариант «Восстановление системы».
  3. В одном из следующих окон нажимаем на «Командная строка».
  4. Вводим команду Bcdboot C:Windows /s D:, где C – буква системного диска, а D – флешка или накопитель с дистрибутивом ОС. Возможно, перед запуском команды придется ввести diskpart, а затем – list volume. Таким образом мы точно узнаем названия дисков. Перед указанием основной команды нужно ввести и применить – exit.

Решение 5: используем встроенную учетную запись администратора

Создание профиля с повышенными правами может помочь в случаях, когда запуск программ не работает из-за дефицита привилегий.

Инструкция:

Системе windows не удается проверить цифровую подпись этого файла windows 7 варфейс

Как отключить проверку цифровой подписи драйверов

Способ 2: редактор групповой политики

Этот способ позволит вам отключить проверку подписей навсегда (или до того момента, как вы сами ее активируете). После этого вы сможете спокойно инсталлировать и пользоваться софтом, который не имеет соответствующего сертификата. В любом случае, этот процесс можно обратить и включить проверку подписи обратно. Так что бояться вам нечего. Кроме того, этот способ подойдет владельцам любой ОС.

Способ 3: командная строка

Этот способ весьма прост в использовании, но имеет свои недостатки, о которых мы расскажем в конце.

Читайте также:  Электронная подпись | Департамент финансов и бюджетной политики Белгородской области

Обратим ваше внимание, что этот способ иногда приходится проделывать в безопасном режиме. Как запустить систему в безопасном режиме, вы можете узнать на примере нашего специального урока.

Воспользовавшись одним из предложенных способов, вы избавитесь от проблемы инсталляции сторонних драйверов. Если у вас возникли трудности с выполнением каких-либо действий, пишите об этом в комментариях к статье. Будем совместно решать возникшие трудности.

Источник

Способы исправления ошибки 0xc0000428

Ниже рассматриваются эффективные методы устранения ошибки.

Удаление цифровой подписи файла

Это подходит для решения проблем при загрузке операционной системы. Действовать можно двумя способами:

  1. Загрузка операционной системы в “Безопасном режиме”. После появления ошибки на экране следует перезагрузить систему. После исчезновения окна БИОС нужно нажать пару раз на клавишу F8. Важно, чтобы это действие выполнялось до появления загрузочной заставки Windows. Если все сделать вовремя, то появится список, в котором нужно стрелочками на клавиатуре перейти в строку “Безопасный режим” и нажать Enter. Операционная система должна запуститься, после чего следует удалить в папке C:WindowsSystem32drivers файл oem-drv64.sys. Есть альтернативный подход. После пары нажатий на F8 следует выбрать не “Безопасный режим”, а “Отключение обязательной проверки подписи драйверов” или “Отключить обязательную проверку подписи драйверов”. Windows после этого запустится, после чего нужно удалить файл oem-drv64.sys с ранее указанной папки.
  2. Подключение накопителя с Windows к другому компьютеру. Предполагается, что есть карман для жесткого диска либо компьютер, к которому можно подсоединить проблемный накопитель. После достаточно перейти на системный диск накопителя в директорию C:WindowsSystem32drivers, там найти и удалить файл oem-drv64.sys. Далее жесткий диск обратно подключается к изначальному компьютеру и выполняется запуск Windows.

В обоих случаях после удаления файла oem-drv64.sys обязательно нужно редактировать реестр, для чего следует выполнить такие действия:

  • зажать комбинацию клавиш Win и R, ввести в появившееся окошко запрос regedit и нажать Enter — запустится “Редактор реестра”;
  • в левой панели нового окна следовать по пути: HKEY_LOCAL_MACHINE => SYSTEM => CurrentControlSet => services;
  • в указанной выше ветке нужно отыскать папку oem-drv64, кликнуть правой кнопкой мышки и выбрать пункт “Удалить”;
  • закрыть “Редактор реестра”, сохранив все изменения.

Иногда после выполнения этих действий при загрузке операционной системы может потребоваться восстановление системы. В этом случае обязательно нужно иметь флешку (оптический диск), с которой устанавливалась эта версия Windows.

Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах

image

Хабрапривет!

Ну вроде как удалось решить вопросы с кармой, но они ником образом не касаются сегодняшней темы, а лишь объясняют некоторое опоздание её выхода на свет (исходные планы были на ноябрь прошлого года).

Сегодня я предлагаю Вашему вниманию небольшой обзор по системе электронных подписей исполняемых файлов и способам обхода и фальсификации этой системы. Также будет рассмотрен в деталях один из весьма действенных способов обхода. Несмотря на то, что описываемой инфе уже несколько месяцев, знают о ней не все. Производители описываемых ниже продуктов были уведомлены об описываемом материале, так что решение этой проблемы, если они вообще считают это проблемой, на их ответственности. Потому как времени было предостаточно.

ТЕОРИЯ

Идея и технология электронной подписи для исполняемых файлов возникла ещё в эпоху Windows NT. C момента появления Windows Vista компания Microsoft начала активную компанию по продвижению этой технологии. По задумке производителя, подписанный код может идти только от доверенного автора этого кода, а следовательно гарантированно не наносит вреда системе и защищён от ошибок (три ха-ха).

Тем не менее, поскольку в механизме подписи чаще всего используется довольно сложный криптоустойчивый механизм, общее доверие к подписанному коду распространилось. Не ушли от этого и антивирусные вендоры. Верно: если код подписан, то он явно не может быть вирусом, а потому ему можно доверять априори, тем самым снизив вероятность ложных срабатываний. Поэтому в большинстве современных антивирусных продуктов по умолчанию стоит обход проверки подписанных файлов, что повышает скорость сканирования и снижает вероятность ложных срабатываний. Более того, зачастую подписанные программы автоматически заносятся в категорию «доверенных» поведенческих анализаторов ака хипсов.

Становится ясно, что подписав свои творения валидной подписью, вирусмейкер получает довольно богатую аудиторию клиентов, у которых даже с активным и регулярно обновляемым антивирусом произойдёт заражение. Очевидно, что это — весьма лакомый кусочек, что легко заметно на примере уже ставшего знаменитым вируса Stuxnet, где код был подписан валидными сертификатами Realtek (позже сообщалось и о подписях от JMicron).

Но у этого подхода есть и оборотная сторона: после выявления скомпрометированной подписи она немедленно отзывается, а по самому факту подписи АВ-вендоры ставят сигнатурный детект, понятно, что с 100%-ным срабатыванием. Учитывая то, что приобрести украденный сертификат, необходимый для подписывания крайне дорого, ясно, что вирусмейкеры заинтересованы в тотальном обходе механизма проверки подписи, без валидных private-ключей или с помощью самостоятельной генерации таких ключей. Это позволит обходить защиту не только антивирусных продуктов, но и устанавливать драйвера и ActiveX-компоненты без предупреждений, да и вообще как-то пробиться в мир х64, где без подписей ничего не установить вообще.

Но об этом — подробнее на практике.

ПРАКТИКА

Кто-то из великих сказал, что чтобы опередить врага, надо начать мыслить как он. Итак, если мы вирусмейкеры, то что мы можем сделать?

1. Скопировать информацию о сертификате с какого-нибудь чистого файла.

Это наиболее популярный способ на данный момент. Копируется информация подписи до мельчайших подробностей, вплоть до цепочки доверенных издателей. Понятно, что такая копия валидна только на взгляд пользователя. Однако то, что отображает ОС вполне может сбить с толку неискушённого и быть воспринято как очередной глюк — ещё бы, если все издатели правильные, то почему это подпись невалидна? Увы и ах — таких большинство.

2. Использовать самоподписанные сертификаты с фэйковым именем.

Аналогично выше описанному варианту за исключением того, что даже не копируется цепочка в пути сертификации.

3. Подделать MD5.

Несмотря на то, что слабость алгоритма MD5 уже давно описана (тут и тут), он до сих пор часто используется в электронных подписях. Однако реальные примеры взлома MD5 касаются или очень маленьких файлов, или приводят к неправильной работе кода. На практике не встречаются вирусы с поддельными взломанными подписями на алгоритме MD5, но тем не менее такой способ возможен теоретически.
4. Получить сертификат по обычной процедуре и использовать его в злонамеренных целях.

Одна из наиболее распространённых методик авторов так называемых riskware, adware и фэйковых антивирусов. Примером может послужить фэйковый Perfect Defender (стандартный развод: «просканируйтесь бесплатно — у вас вирус — заплатите нам и мы его удалим») существует с подписями нескольких контор:
• Jeansovi llc
• Perfect Software llc
• Sovinsky llc
• Trambambon llc

Как это делается хорошо могут рассказать наши отечественные разработчики винлокеров, мелкими буквами пишущие про «программу-шутку» и т.д., таким образом оберегаясь от статьи о мошенничестве. Так и живём…

Читайте также:  Версия сервиса электронной подписи устарела - как исправить ошибку

Интересно, что реально существуют абсолютно нормальные программы с такими именами владельцев:
• Verified Software
• Genuine Software Update Limited
• Browser plugin

Понятно, что если уж этому верить, то ошибиться при первом взгляде на сертификат несложно.

Следует также отметить, что отнюдь несложно получить подпись от сертификационных центров. Например RapidSSL для проверки использует просто e-mail. Если переписка ведётся из адресов типа admin, administrator, hostmaster, info, is, it, mis, postmaster, root, ssladmin,
ssladministrator, sslwebmaster, sysadmin или webmaster@somedomain.com — очевидно, что пишет владелец домена, верно? (ещё три ха-ха). А вот славная компания Digital River (DR), промышляющая аутсорсингом и электронной коммерцией, вообще предоставляет сертификаты всем своим клиентам. Немудрено, что MSNSpyMonitor, WinFixer, QuickKeyLogger, ErrorSafe, ESurveiller, SpyBuddy, TotalSpy, Spynomore, Spypal и вообще около 0,6% из всех подписанных DR файлов являются малварью, а потенциально нежелательными являются и того больше — более 5% всех подписанных DR файлов.

Справедливости ради отмечу, что подписать х64-драйвер далеко не так просто, в этом случае пока нарушений не замечено.

5. Найти какого-нибудь работника доверенной компании и попросить его подписать Ваш код.

Без комментариев. Все любят деньги. Вопрос только в сумме 🙂

6. Украсть сертификат.

На данный момент известно три больших семейства троянцев, «заточенных», в частности, под похищение сертификатов. Это:
• Adrenalin
• Ursnif
• Zeus
• SpyEye (возможно)

Тем не менее пока не замечено массовых случаев использования украденных сертификатов в новых версиях этих троянцев. Возможно, это козырь в рукаве? Время покажет…

7. Заразить систему разработки доверенного разработчика и внедрять злонамеренный код в релизы до подписания.

Яркий пример такого заражения — вирус-концепт Induc.a. Вирус внедряет код на этапе компиляции, заражая систему разработки. В итоге разработчик даже не знает, что в его программе появился невидимый «довесок». Релиз проходит подпись и выходит в свет с полноценным сертификатом. Видишь суслика? А он есть! 😉

К счастью, Induc.a является только PoC, выполняя только заражение систем разработки без реализации какого бы то ни было дополнительного вредоносного функционала.

Ну а теперь — обещанные вкусняшки.

УЯЗВИМОСТЬ ИЛИ КАК Я ПРОВЁЛ ЭТИМ ЛЕТОМ

Как видим, вариантов обхода подписи достаточно много. В нашем примере будет рассмотрен модифицированный вариант 1 и 2, описанные выше.

Итак, что нам потребуется?
— MakeCert.exe
— cert2spc.exe
— sign.exe
— ruki.sys
— mozg.dll

Думаю, что для хабрачитателя не составит труда найти эти компоненты, но для самых ленивых выкладываю первые три здесь. Последние два не выкладываю в виду жёсткой привязки к железу, полному отсутствию кроссплатформенности и специфичности кода 🙂

Итак, создадим какой-либо сертификат доверенного издателя. Попробуем максимально скопировать информацию о том же VeriSign:
MakeCert.exe -# 7300940696719857889 -$ commercial -n CN="VeriSign Class 3 Code Signing 2009-2 CA" -a sha1 -sky signature -l "https://www.verisign.com/rpa" -cy authority -m 12 -h 2 -len 1024 -eku 1.3.6.1.5.5.7.3.2,1.3.6.1.5.5.7.3.3 -r -sv veri.pvk veri.cer

В результате выполнения мы получим veri.pvk и veri.cer, пригодные для подписывания.

Теперь создадим дочерний сертификат с использованием полученных только что:

MakeCert.exe -# 8928659211875058207 -$ commercial -n CN="Home Sweet Home" -a sha1 -sky signature -l "http://habrahabr.ru/" -ic veri.cer -iv veri.pvk -cy end -m 12 -h 2 -len 1024 -eku 1.3.6.1.5.5.7.3.3 -sv kl.pvk kl.cer

В итоге получим kl.pvk и kl.cer, которые будут доверенными сертификатами от недоверенного издателя. Цепочку можно продолжать долго, задуривая наивного пользователя. Но итог будет один: сертификат не будет валидным, потому как в цепочке есть один недоверенный элемент. НО!

В Windows имеется возможность установки любого сертификата, в том числе и самоподписанного, в качестве доверенного. Это удобно: в ряде случаев разработчик может сделать себе самоподписанный сертификат, ввести его в доверенные и спокойно работать со своими приложениям. В нашем случае это удобно вдвойне, потому как такой внос — очевидно, простое внесение информации в реестр. при чём информации отнюдь не специфичной для конкретной системы.

Установим на нашу тестовую виртуалку любой монитор реестра, после чего внесём наш искомый сертификат от якобы VeriSign в доверенные. Отследим, где произошло изменение — и voila! Мы можем сделать дамп соответствующей ветки реестра, после чего засунуть её в инсталлер. В итого, наш инсталлер вносит в реестр инфу, автоматически превращая сертификат первичного издателя в доверенный и валидируя всю цепочку.

Чтобы окончательно не открывать все карты, скажу только, что в моём случае дамп реестра имел вид
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftSystemCertificatesAuthRootCertificatesA61F9F1A51BBCA24218F9D14611AFBA61B86C14C]
«Blob»=hex:04,00,00,…..

ну или если только для текущего пользователя, то
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftSystemCertificatesRootCertificatesA61F9F1A51BBCA24218F9D14611AFBA61B86C14C]
«Blob»=hex:04,00,00,…..

Внеся в реестр эти данные, программа с фэйковой цепочкой подписи автоматом проходила проверку по sigverif.exe. Ну а подписать наш код с помощью полученного сертификата вообще просто, достаточно батника:

cert2spc.exe kl.cer kl.spc
sign.exe -spc kl.spc -v kl.pvk -n "My Installer" -i "http://habrahabr.ru" -ky signature -$ commercial -a sha1 -t "http://timestamp.verisign.com/scripts/timstamp.dll" myprogram.exe
del kl.spc

Обратите внимание на использование таймстампа timestamp.verisign.com/scripts/timstamp.dll — теоретически вполне возможно использование собственного сервера на собственном домене, что позволит каждый раз видеть, что кто-то проверил подпись нашей программы на своём компьютере, а значит получать IP и время проверки. Правда удобно? 😉

Самое забавное, что на момент написания материала в далёком октябре-ноябре 2021-го Kaspersky Internet Security 2021 не отслеживала указанные ветки реестра, а проверку валидности цепочки оставляла на усмотрение ОС, которую мы довольно просто надули. Не знаю, что сейчас, но вроде как некоторые ветки заблокировали… Проверяйте, отписывайтесь!

Нужно отметить, что для простановки подписей возможно использование и специфичного, недоступного в паблике софта. Понятно, что подписи он не ломает, но даёт куда более гибкие возможности для заполнения полей X500, что ещё лучше создаёт видимость валидности. Вот тут возможно скачать любопытный пример. В архиве — файл популярной замены Блокноту bred3_2k (офсайт) с и без подписи Microsoft 🙂 Чтобы подпись полностью стала валидной, достаточно внести в реестр изменения, содержащиеся в файле key .reg. Аналогично, файл key -.reg эти изменения отменяет. Отследите путь сертификации — он любопытен 🙂

Сразу обращаю внимание на то, что автор «примера» прописал собственный таймстамп-сервер, так что любые манипуляции приведут к тому, что автор узнает Ваш IP — и дальше, как описывалось. Если хотите, то можете отследить эти обращения и отписаться в комментах 😉

Если потребуется, в следующей статье я расскажу, как настроить хипс для защиты соответсвующих веток реестра во избежание описанного внесения сертификатов в доверенные. Отписывайтесь в комментах — возможно, что эту уязвимость уже пофиксили.

В статье использован материал презентации Jarno Niemela (F-Secure).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector