Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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


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


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

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

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

ТЕОРИЯ

Идея и технология электронной подписи для исполняемых файлов возникла ещё в эпоху 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 или [email protected] — очевидно, что пишет владелец домена, верно? (ещё три ха-ха). А вот славная компания 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_MACHINE\SOFTWARE\Microsoft\SystemCertificates\AuthRoot\Certificates\A61F9F1A51BBCA24218F9D14611AFBA61B86C14C]
"Blob"=hex:04,00,00,.....

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

[HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\Root\Certificates\A61F9F1A51BBCA24218F9D14611AFBA61B86C14C]
"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 и время проверки. Правда удобно? ;)

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

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

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

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

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

Добавить или удалить цифровую подпись в файлах Office

В этой статье объясняются цифровые подписи (также известные как цифровое удостоверение), для чего они могут использоваться и как вы можете использовать цифровые подписи в следующих программах Microsoft Office: Word, Excel и PowerPoint.

В этой статье

Что такое цифровая подпись?

Строки подписи в Word и Excel

Создайте строку подписи в Word или Excel

Подпишите строку подписи в Word или Excel

Удалить цифровые подписи из Word или Excel

Невидимые цифровые подписи в Word, Excel или PowerPoint

Добавляйте невидимые цифровые подписи в Word, Excel или PowerPoint

Удаление невидимых цифровых подписей из Word, Excel или PowerPoint

Что такое цифровая подпись?

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

Подписание сертификата и центра сертификации

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

Центр сертификации (CA) Центр сертификации - это организация, аналогичная нотариусу. Он выдает цифровые сертификаты, подписывает сертификаты для проверки их действительности и отслеживает, какие сертификаты были отозваны или просрочены.

Что гарантирует цифровая подпись?

  • Подлинность Подписавшая сторона подтверждена как подписывающая.

  • Целостность Содержимое не было изменено или подделано с тех пор, как оно было подписано цифровой подписью.

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

  • Нотариальное заверение Подписи в файлах Word, Excel или PowerPoint, которые имеют отметку времени от безопасного сервера отметок времени, при определенных обстоятельствах имеют силу нотариального удостоверения.

Чтобы предоставить эти гарантии, создатель контента должен поставить цифровую подпись контента, используя подпись, которая удовлетворяет следующим критериям:

  • Цифровая подпись действительна.

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

  • Подписавшее лицо или организация, известная как издатель, являются доверенными.

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

  • Сертификат, связанный с цифровой подписью, выдается подписывающему издателю авторитетным центром сертификации (CA).

Верх страницы

Строки подписи в Word и Excel

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

  • Введите подпись или

  • Выберите изображение подписи, сделанной чернилами, или

  • Напишите подпись с помощью функции рисования на ПК с сенсорным экраном

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

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

Создание строки подписи в Word или Excel

  1. В документе или на листе поместите указатель в то место, где вы хотите создать линию подписи.

  2. На вкладке Вставить в группе Текст щелкните список Строка подписи , а затем щелкните Строка подписи Microsoft Office .

  3. В диалоговом окне Signature Setup введите информацию, которая будет отображаться под строкой подписи:

    • Предлагаемая подписывающая сторона Полное имя подписывающей стороны.

    • Предполагаемый титул подписывающего лица Должность подписывающего лица, если таковой имеется.

    • Предлагаемый адрес электронной почты подписывающего лица Адрес электронной почты подписывающего лица, если необходимо.

    • Инструкции для подписывающей стороны Добавьте инструкции для подписывающей стороны, такие как «Перед подписанием документа проверьте правильность содержания».

  4. Установите один или оба из следующих флажков:

    • Разрешить подписывающей стороне добавлять комментарии в диалоговом окне «Подписать». Разрешить подписывающей стороне указать цель для подписи.

    • Показывать дату подписи в строке подписи Дата подписания документа будет отображаться вместе с подписью.

Совет: Чтобы добавить дополнительные строки подписи, повторите эти шаги.

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

Верх страницы

Подпишите строку подписи в Word или Excel

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

  1. В файле щелкните правой кнопкой мыши строку подписи.

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

  2. В меню выберите Знак .

    • Чтобы добавить печатную версию своей подписи, введите свое имя в поле рядом с X .

    • Чтобы выбрать изображение вашей письменной подписи, нажмите Выбрать изображение .В диалоговом окне «Выбор изображения подписи» найдите расположение файла изображения подписи, выберите нужный файл и нажмите «Выбрать ».

      Примечания:

      • Для клиентов, использующих китайскую (традиционную или упрощенную), корейскую или японскую версии, появляется опция Stamp Signature Line .

      • Кроме того, вы можете подписать строку подписи, дважды щелкнув строку подписи.Введите свое имя рядом с X . Или на панели подписи в разделе Запрошенные подписи щелкните стрелку рядом с подписью. В меню выберите Sign .

    • Чтобы добавить собственноручную подпись (только для пользователей планшетных ПК), подпишите свое имя в поле рядом с X с помощью функции рукописного ввода.

    • Щелкните Подпись .

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

На следующем изображении показана кнопка Подписи .

Верх страницы

Удаление цифровых подписей из Word или Excel

  1. Откройте документ или лист, содержащий видимую подпись, которую вы хотите удалить.

  2. Щелкните правой кнопкой мыши строку подписи.

  3. Щелкните Удалить подпись .

  4. Щелкните Да .

Примечание. Кроме того, вы можете удалить подпись, щелкнув стрелку рядом с подписью на панели подписи .Щелкните Удалить подпись .

Верх страницы

Невидимые цифровые подписи в Word, Excel или PowerPoint

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

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

Верх страницы

Добавление невидимых цифровых подписей в Word, Excel или PowerPoint

Чтобы защитить подлинность содержимого документа, вы можете добавить невидимую цифровую подпись. Подписанные документы имеют кнопку Подписи внизу документа.

  1. Щелкните вкладку Файл .

  2. Щелкните Информация .

  3. Щелкните Защитить документ , Защитить книгу или Защитить презентацию .

  4. Щелкните Добавить цифровую подпись .

  5. Прочтите сообщение Word, Excel или PowerPoint и нажмите ОК .

  6. В диалоговом окне Подписать в поле Цель для подписи этого документа введите цель.

  7. Щелкните Подпись .

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

Верх страницы

Удаление невидимых цифровых подписей из Word, Excel или PowerPoint

  1. Откройте документ, лист или презентацию, содержащую невидимую подпись, которую вы хотите удалить.

  2. Щелкните вкладку Файл .

  3. Щелкните Информация .

  4. Щелкните Просмотреть подписи .

  5. Вернется представление документа, рабочего листа или презентации, и появится панель Подписи .

  6. Рядом с именем подписи щелкните стрелку .

  7. Щелкните Удалить подпись .

  8. Щелкните Да .

Верх страницы

.

Проверка цифровых подписей, Adobe Acrobat

Долгосрочная проверка подписи позволяет проверять действительность подписи спустя долгое время после подписания документа. Для обеспечения долгосрочной проверки все необходимые элементы для проверки подписи должны быть встроены в подписанный PDF-файл. Внедрение этих элементов может происходить при подписании документа или после создания подписи.

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

Требуемые элементы для установления действительности подписи включают цепочку подписывающих сертификатов, статус отзыва сертификата и, возможно, временную метку. Если необходимые элементы доступны и внедрены во время подписания, подпись может быть проверена, требуя внешних ресурсов для проверки.Acrobat и Reader могут встраивать необходимые элементы, если они доступны. Создатель PDF должен разрешить права использования для пользователей Reader (Файл> Сохранить как другое> Расширенный PDF-файл Reader).

.

Как изменить, проверить или удалить мою цифровую подпись - Soda PDF

Есть вопрос? Введите свой запрос здесь

  • Характеристики
  • Ценообразование
  • Связаться с отделом продаж
  • Онлайн-инструменты
    • Газировка PDF онлайн
    • Слить PDF
    • Сжать PDF
    • PDF редактор
    • Конвертер PDF
    • Разделить PDF
    • Посмотреть все инструменты
  • Поддержка
  • Поиск
.

php - Как изменить подпись (она же «магические числа») файла?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Смотрите также