Ru-Board.club
← Вернуться в раздел «Программы»

» Oracle VM VirtualBox (часть 2)

Автор: ChildrenofkoRn
Дата сообщения: 07.08.2016 20:45
CaptainFlint


sha1RSA
70 7d a1 96 e8 09 f9 a5 41 26 5b d9 76 65 46 b3
de 22 52 cc d4 9d 43 17 ba 20 dc f3 ef e8 2d ee 32 fc a4 3e

sha256RSA
11 16 f3 7d fa 35 23 bf 43 ba 39 cd 7c d7 1f 98
a2 22 92 8b fe b6 86 ee 5a 83 d0 51 d6 e7 d8 4f b8 f6 65 0c

http://funkyimg.com/i/2f7F3.png
Автор: Levvon
Дата сообщения: 07.08.2016 21:23
CaptainFlint, спасибо за полезные сборки VB.

До сегодняшнего дня ни одна из них у меня не могла установиться. Всё из-за того, что бинарники в сборке подписаны почти правильно, но без использования кросс-сертификата DigiCert Assured ID Root CA.
Код: SignTool Error: Signing Cert does not chain to a Microsoft Root Cert.
Автор: CaptainFlint
Дата сообщения: 08.08.2016 01:40
ChildrenofkoRn
Чёрт, я только сейчас сообразил, что в тех своих инструкциях выдал лажу. Надо брать файл не file_VBoxUSB.cat, а file_VBoxUSB.sys. Каталоги не поддерживают двойную подпись, и вторая, действительно, всегда будет отображаться невалидной. Попробуйте с sys-файлом, пожалуйста.

Но вообще, учитывая что оба сертификата уже в хранилище, я пока не представляю, в чём может быть проблема. Ради эксперимента попробую собрать и выложить дистрибутив, подписанный только SHA256. Может быть, настройки в системе слишком жёсткие и невалидность второй подписи в CAT-файлах всё рушит…


Levvon
Если бы у меня был купленный сертификат от DigiCert, то да, именно так и нужно было бы подписывать (это учтено в скриптах сборки). Но у меня самосгенерированный сертификат, и, разумеется, никакого кросс-сертификата к нему не существует. Даже если бы я добавил дигисертовский кросс, цепочка доверия не сложилась бы, так как мой сертификат не удостоверен дигисертом. Именно поэтому я везде пишу, что для работы с моей сборкой надо отключать проверку подписей, с полноценной проверкой драйверы не будут загружены.

P.S. То, что я использую DigiCert-сервер для сертификата метки даты/времени, не имеет ни малейшего отношения к удостоверяющему сертификату, этот сервер может быть любым: хоть GlobalSign, хоть Symantec, хоть ещё какой. Это просто удостоверение, что файл был подписан в такой-то момент времени и после этого не менялся.
Автор: ChildrenofkoRn
Дата сообщения: 08.08.2016 01:59
CaptainFlint
file_VBoxUSB.sys тут действительны обе.
https://www.dropbox.com/s/6xnzmw5wlwlv65b/VBoxInstallLog_512.txt?dl=0
Автор: Levvon
Дата сообщения: 08.08.2016 04:26

Цитата:
CaptainFlint: с моей сборкой надо отключать проверку подписей, с полноценной проверкой драйверы не будут загружены

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

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

Автор: CaptainFlint
Дата сообщения: 08.08.2016 12:52
ChildrenofkoRn
Попробуйте этот дистрибутив, он подписан только sha256:
https://yadi.sk/d/5UhGoEa_u2atv


Levvon
Эта инструкция для установки, а не для сборки. Фактически, этот инструмент просто подписывает драйверы устаревшим, невалидным сертификатом, при этом не добавляя удостоверение даты-времени. Затем переводит дату-время, чтобы винда не смогла проверить актуальность.

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

Ради эксперимента я попробую сделать подписанный таким ключом дистрибутив, но не уверен, что он будет лучше, чем тестовый режим.
Автор: Levvon
Дата сообщения: 08.08.2016 13:34

Цитата:
CaptainFlint: всем пользователям для установки и запуска необходимо будет предварительно переводить дату на компе и отключать интернет
• Перевести дату только для установки VirtualBox, а затем вернуть обратно — что может быть проще?
• Интернет — по желанию, можно отключать, а можно и нет, на результат не влияет.

Цитата:
CaptainFlint: И на 100% уверен, что при следующей же перезагрузке всё это слетит
Вы сначала попробуйте.)

Цитата:
CaptainFlint: ну или каждый раз при загрузке компа выставлять старое время, дожидаться загрузки драйверов, потом переводить время обратно
Ничего такого не потребуется, всё успешно работает с Windows Vista по Windows 10 без дополнительного шаманства и TestMode.
Автор: ChildrenofkoRn
Дата сообщения: 08.08.2016 13:59
CaptainFlint
тоже самое.
для file_VBoxUSB.sys и file_VBoxUSB.cat подпись sha256 действительна.

Levvon

Цитата:
С использованием того инструмента, что под ковром

этот вариант поставился, виртуалки с W7 работали до ребута хост-системы, потом обе выдали:

Код:
Failed to load R0 module C:\Program Files\Oracle\VirtualBox/VMMR0.r0: SUP_IOCTL_LDR_OPEN failed (VERR_LDR_IMAGE_HASH).
Failed to load VMMR0.r0 (VERR_LDR_IMAGE_HASH).


Код ошибки:
E_FAIL (0x80004005)
Компонент:
ConsoleWrap
Интерфейс:
IConsole {872da645-4a9b-1727-bee2-5585105b9eed}
Автор: Levvon
Дата сообщения: 08.08.2016 14:34
ChildrenofkoRn, замените содержимое файла [more=VirtualBox-CF.cmd]
    @Echo On
    Title X64DrvSignTool

    Color 17
    Mode Con: Cols=80 Lines=25

    ChDir /D "%~dp0"
    SetLocal EnableExtensions EnableDelayedExpansion

    For /F "Tokens=*" %%? In (
        'Dir "%~dp0*.cat" /A-D /S /B'
    ) Do (
        "%~dp0X64DrvSignTool.exe" "%%?"
    )

    For /F "Tokens=*" %%? In (
        'Dir "%~dp0*.dll" /A-D /S /B'
    ) Do (
        "%~dp0X64DrvSignTool.exe" "%%?"
    )

    For /F "Tokens=*" %%? In (
        'Dir "%~dp0*.exe" /A-D /S /B'
    ) Do (
        "%~dp0X64DrvSignTool.exe" "%%?"
    )

    For /F "Tokens=*" %%? In (
        'Dir "%~dp0*.r0" /A-D /S /B'
    ) Do (
        "%~dp0X64DrvSignTool.exe" "%%?"
    )

    For /F "Tokens=*" %%? In (
        'Dir "%~dp0*.rc" /A-D /S /B'
    ) Do (
        "%~dp0X64DrvSignTool.exe" "%%?"
    )

    For /F "Tokens=*" %%? In (
        'Dir "%~dp0*.sys" /A-D /S /B'
    ) Do (
        "%~dp0X64DrvSignTool.exe" "%%?"
    )

    Pause
[/more] и повторите переподписание.
Либо воспользуйтесь обновлённой версией утилиты (ссылка в моём позапрошлом сообщении).
Там в дополнение решена проблема с файлами, пути к которым содержат пробелы.

P.S. Я что-то сразу не подумал, что файлы r0 и rc тоже могут иметь подписи.
Автор: CaptainFlint
Дата сообщения: 08.08.2016 17:58
ChildrenofkoRn
К сожалению, в таком случае других идей нет.

Levvon
Собрал с китайской подписью, но самому пока проверить не на чем (рабочие машины корёжить не хочу, а в виртуалке виртуалку не запустить). Кто хочет, пробуйте:
https://yadi.sk/d/OM7R9sryu3HUG


Цитата:
• Перевести дату только для установки VirtualBox, а затем вернуть обратно — что может быть проще?

Я уже написал: многие программы этого не любят. Я так уже огребал, когда для тестов надо было откатить дату, из-за чего тут же слетели активации Касперского, Лингвы и ещё нескольких программ. Один-два раза можно переактивировать. Но если регулярно так поступать, с большой вероятностью можно огрести блокировку лицензии.


Цитата:
• Интернет — по желанию, можно отключать, а можно и нет, на результат не влияет.

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

Добавлено:
P.S. Всё-таки попробовал установить на виртуалке. Функционально, разумеется, протестировать это не позволило, но драйверы, похоже, действительно грузятся и остаются живыми и здоровыми, в том числе после перезагрузки системы с нормальным временем. Ну что ж, GG Microsoft! Вся эта кухня с отзывом сертификатов и удостоверениями даты-времени как раз была придумана для того, чтобы исключить подобные хаки. Мне и в голову не приходило, что они могли оставить такую даже не дыру, а дырищу.

Автор: Skifoff2
Дата сообщения: 08.08.2016 19:43
По поводу даты - есть RunAsDate, не подойдёт?
Автор: Levvon
Дата сообщения: 08.08.2016 20:38

Цитата:
CaptainFlint: оставить такую даже не дыру, а дырищу
Это дизайн такой.

Представьте ситуацию, что у вас села CR2032, или по другой причине изменилось системное время. Что теперь, всем драйверам, для которых истёк/не наступил срок действия сертификата, но имеющим действительную цифровую подпись, нельзя запускаться при загрузке или следует останавливаться прямо на работающей операционной системе, сваливая её в синий экран?

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

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


Цитата:
Skifoff2: По поводу даты - есть RunAsDate, не подойдёт?
Не пойдёт, фейковая дата нужна не для инсталлятора VirtualBox, а для ОС, чтобы проверка подписей драйверов при установке завершилась успешно.
Автор: CaptainFlint
Дата сообщения: 08.08.2016 20:55

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

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


Цитата:
Не пойдёт, фейковая дата нужна не для инсталлятора VirtualBox, а для ОС, чтобы проверка подписей драйверов при установке завершилась успешно.

Тут, кстати, не всё однозначно. Надо смотреть, в каком контексте выполняется эта проверка. Если в контексте процесса инсталлятора, то должна отработать корректно. Судя по поведению системы при установке неподписанных драйверов (сначала ставится, потом вылезает отдельное окошко-уведомление), это всё-таки должны быть разные процессы, но после таких откровений я уже опасаюсь что-либо с уверенностью утверждать. И да, надо мне будет попробовать втиснуть этот RunAsDate в процедуру сборки, чтобы не ковыряться со сменой даты/времени машины и отключением синхронизации в гостевых тулах.
Автор: ChildrenofkoRn
Дата сообщения: 08.08.2016 22:49

Цитата:
Собрал с китайской подписью, но самому пока проверить не на чем (рабочие машины корёжить не хочу, а в виртуалке виртуалку не запустить). Кто хочет, пробуйте:
https://yadi.sk/d/OM7R9sryu3HUG

Поставил, пока всё работает

CaptainFlint, Levvon thx a lot
Автор: Aleksandr N
Дата сообщения: 09.08.2016 17:18
CaptainFlint
Протестировал портативку подписанную левым сертификатом. Результаты такие на Вынь64:
1. При наличии только папки app32 запускал как 32, так и 64-битнным Portable-VirtualBox. В обоих случаях Бокс запускается, но образы не стартуют ссылаясь на ошибку ядра драйвера. Я так и не понял почему...
2. При наличии только папки app64 запускал как 32, так и 64-битнным Portable-VirtualBox. В обоих случаях Бокс запускается и образы стартуют.
При случае протестирую ещё и на Вынь32.
Автор: CaptainFlint
Дата сообщения: 09.08.2016 17:23
Aleksandr N
Левосертификатный надо устанавливать, сдвинув часы на 1.04.2011 (точнее, на любую дату в диапазоне 25.03.2011–16.04.2011).
Автор: Aleksandr N
Дата сообщения: 09.08.2016 17:53
CaptainFlint
Весь фиг-то в том, что в реальном времени проводил эксперименты. Судя по идее не должна была запускаться именно 64-битка. Хотя могу и ошибаться. Осталось только 32 на 32 проверить. Если будет работать, то по-моему эффект полностью достигнут без реального сертификата. Кстати, про подпись левым сертификатом читал, но не понял сути и метода. Но тебе подсказали как всё сделать.
Автор: CaptainFlint
Дата сообщения: 09.08.2016 18:16
Aleksandr N

Цитата:
Кстати, про подпись левым сертификатом читал, но не понял сути и метода. Но тебе подсказали как всё сделать.

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

А что касается работоспособности в твоём варианте, тут всё упирается в особенности скриптов портативки. Возможно, она умудряется как-то пропихнуть драйверы в обход стандартной процедуры, а винда, как мы тут выяснили, если драйвер уже поставлен, не особо обращает внимание на дату сертификата и его статус отзыва.
Автор: Aleksandr N
Дата сообщения: 09.08.2016 18:35
В том-то и дело что главное этот сертификат. Хотя я читал и про подделку. Правда не знаю насколько подделка является реалистичной. Да без разницы что и как подписывать, главное получилось. Но причина не запуска 32-битки не думаю что дело в скрипте. Правда пока не знаю в чём, пока на Вынь32 не запущу. Ведь проблема в сертификате драйвера, а сертификат проходит. Возможно что-то в самой сборке...
Автор: Slavabuy11
Дата сообщения: 09.08.2016 18:36
Установил на VM CS50 Appliance 2014, который работает на Linux.. Проблема в том, что когда она запущена, то не могу вводить абсолютно ничего с клавиатуры. Знает кто-то как решить?
Автор: CaptainFlint
Дата сообщения: 09.08.2016 18:54
Aleksandr N

Цитата:
Хотя я читал и про подделку.

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

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


Цитата:
Ведь проблема в сертификате драйвера, а сертификат проходит.

Вот тут легко ошибиться. Сертификат "проходит" только с точки зрения одного из компонентов Windows. Проверкой подписи занимаются самые разные компоненты, и все они осуществляют проверку по-разному. Формально сертификат является нерабочим, и драйверы, им подписанные, грузиться не должны. То, что он проходит проверку в ядре, является удачной (для нас) недоработкой Windows, но остальные компоненты продолжают быть начеку и могут препятствовать установке драйвера. Смена даты-времени приводит к тому, что все эти проверяльщики тоже придут к выводу, что подпись валидна, пропустят драйвер в ядро и больше не будут обращать на него внимание. Установка без смены даты-времени — не знаю, при каких условиях она может оказаться успешной, тут у меня недостаточно знаний.
Автор: Aleksandr N
Дата сообщения: 09.08.2016 19:07
CaptainFlint
В общем проверю, а там попробуем поставить диагноз. Хотя можно на виртуалке виртуалку поставить, но это по-моему полный изврат.
Автор: CaptainFlint
Дата сообщения: 09.08.2016 19:23
Aleksandr N
Можно поставить сам VB внутри виртуалки (я именно так убедился, что драйверы грузятся), но запустить с его помощью вложенную виртуалку невозможно, VB это не поддерживает.
Автор: Aleksandr N
Дата сообщения: 09.08.2016 19:38
CaptainFlint
Вот и я про та-же. Установить-то можно, но надо проверить работу. Ведь сама портативка запускается, но не образы. Ладно, попробуем выяснить потихоньку.
Автор: Mirix
Дата сообщения: 14.08.2016 19:04
Сегодня решил поставить Virtualbox 5.1.2 на Win7 SP1 x86 - после запуска такая ошибка:

"Failed to acquire the VirtualBox COM object.

The application will now terminate.



Callee RC: E_NOINTERFACE (0x80004002)
"

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

Кто сталкивался?
Автор: selkv1
Дата сообщения: 14.08.2016 19:22
Mirix
Попробуй режим совместимости с Vista или Vista SP2...
Автор: Mirix
Дата сообщения: 14.08.2016 19:23

Цитата:
Попробуй режим совместимости с Vista или Vista SP2...

Пробовал - вываливается с другим кодом :/

Также ставил более ранние версии 5.х и 4.3 - та же ошибка.

Сейчас 4.1.28 поставлю - на форумах писали, что сработало.
Автор: selkv1
Дата сообщения: 14.08.2016 19:28
Можно еще попробовать дать полный доступ для текущего юзера на папку VirtualBox и вложения...
Автор: Mirix
Дата сообщения: 14.08.2016 19:45

Цитата:
Можно еще попробовать дать полный доступ для текущего юзера на папку VirtualBox и вложения...


Так и так макс права доступа - юзер принадлежит к группе админов.
Автор: selkv1
Дата сообщения: 14.08.2016 20:00

Цитата:
принадлежит к группе админов

на 7-ке это, конечно, не принципиально, а вот на 8-ке и выше, принадлежность к группе админов ничего не значит...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499

Предыдущая тема: Программы для разработки, тестирования, оптических систем


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.