eXeL@B —› Софт, инструменты —› Gbhv - Simple x64 Hypervisor Framework |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 08 января 2019 04:06 · Поправил: plutos · Личное сообщение · #1 Хотелось бы услышать мнения людей, кто в теме. Ну и конечно мнение сами знаете чьё... ну и просто для тех, кто хочет все знать! ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 08 января 2019 04:57 · Поправил: ntldr · Личное сообщение · #2 Конкретно этот проект не смотрел, но имею небольшой опыт по разработке своего гипервизора для Intel VMX. Хотел сделать прозрачное шифрование диска для любой ОС (гипервизор-прокси для AHCI), но энтузиазма довести до релизного состояния не хватило. C AMD'шными SVM инструкциями не работал. Моё мнение - зависит от применения. Для исследовательских тулз гипервизоры на VMX дают широчайшие возможности. Но это только при условии выбора правильного железа для рабочей станции и тщательной настройке всего под свои задачи. Гипервизор для ответственных проектов широкого применения - задача не простая, т.к. нужно поддерживать не только самые оптимальные конфигурации, а вообще все какие будут у ваших пользователей. XEN, KVM и MS HyperV - годные платформы для таких вещей. Intel haxm - простой, сырой и нестабильный. VirtualBox - об этом поделии можно говорить только матом... Гипервизор для малвари (руткиты, трояны, и тому подобное) - старая идея, много кем реализовывалась, до боевого применения, насколько мне известно, ничего не дошло. В теории гипервизор позволяет почти идеально скрыть присутствие руткита, но это именно в теории. На практике всё всегда будет выявляться специалиьными тестами, если знать что искать. Я этой областью не занимаюсь, знаю только теорию и могу ошибаться. ----- PGP key | Сообщение посчитали полезным: plutos |
|
Создано: 08 января 2019 13:47 · Личное сообщение · #3 Объясните пожалуйста Это примерно из той же оперы что индий затирает? ----- В облачке многоточия | Сообщение посчитали полезным: SDK |
|
Создано: 08 января 2019 13:59 · Личное сообщение · #4 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 08 января 2019 14:25 · Личное сообщение · #5 |
|
Создано: 08 января 2019 18:51 · Личное сообщение · #6 ntldr пишет: На практике всё всегда будет выявляться специалиьными тестами, если знать что искать Все так. Гипервизор можно защитить от любого конкретного детекта, но от всего множества нереально. Вопрос ведь не в том, что гипервизор задектетят из гостя, а в том, чтобы его не отличили от легального гипервизора. |
|
Создано: 08 января 2019 19:08 · Поправил: difexacaw · Личное сообщение · #7 Boostyq > Это примерно из той же оперы что индий затирает? Нет, совсем иная опера". Гипервизор нужен для решения задач по ядру. Тоесть вам нужно ядерный код мониторить, либо сразу несколько ос запустить. Как пример - это нужно было для поиска уязвимостей(повторные асинхронные дереференсы в ядре, race-cond. атака на ядро: j00ru & Gynvael). Это не для решения прикладных задач. Тут такие задачи я не помню что бы возникали. Что бы это всё заюзать вы должны хорошо разбираться в ядре, свободно собирать драйвера и знать расширения архитектуры(vmx и поддержку её системой). Это вещи весьма сложные и для прикладных задач совершенно не нужные. Более того сам факт изоляции создаёт кучу проблем по детекту визора. Это по мойму смысла всё тут не имеет. Давно наработаны простые и эффективные техники для решения прикладных задач, там эти гпв не уместны. ----- vx | Сообщение посчитали полезным: plutos |
|
Создано: 08 января 2019 23:46 · Личное сообщение · #8 difexacaw пишет: Это вещи весьма сложные и для прикладных задач совершенно не нужные. Все это может и так, но все же интересно и в сложных абстрактных вещах иногда покопаться, хотя бы для того, чтобы расширять горизонты своего воображения... Как говорил один мудрый человек: знания за плечами не носить. ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 09 января 2019 00:01 · Личное сообщение · #9 plutos Я смог не используя драйвера, в юм реализовать софтверный визор(эта тема про хардверный), который покрывает любые задачи, вы это видили сами. Зачем лишний раз в ядро лезть, вам интересно синие экраны и крэшдампы разбирать.. думаю нет. Гипервизоры нужны для сложных задач по ос, не для прикладных. И там ничего интересного нет. Эта фигня пилится только ради пиара обычно. Более того, этим не работают в юзермод. ----- vx |
|
Создано: 09 января 2019 02:48 · Личное сообщение · #10 |
|
Создано: 09 января 2019 03:02 · Личное сообщение · #11 difexacaw пишет: Я смог не используя драйвера, в юм реализовать софтверный визор(эта тема про хардверный), который покрывает любые задачи Ну так и софтварный визор р0 аля вмваре wks не покрывает все задачи. Хватит уже перфекционизма. При равном уровне привилегий полноценно мониторить код не получается. Только пошаговая трассировка. Это трудно и больно. |
|
Создано: 09 января 2019 19:33 · Поправил: difexacaw · Личное сообщение · #12 spinz Как раз наоборот. Ты просто не в теме, не знаешь что такое изоляция выборки и прочие вещи. > полноценно мониторить код не получается. А что это значит. Тоесть каждую инструкцию прогнать через декодер, это что по вашему, не полноценно ? Бред какой то. > Только пошаговая трассировка. Кури матчасть. Можно блок кода на выполнение отдать в процессор. Так и работает варя например. Boostyq > Что не получилось, вы же вроде описывали идею? Всё получилось и очень хорошо. ----- vx |
|
Создано: 09 января 2019 20:38 · Личное сообщение · #13 |
|
Создано: 09 января 2019 20:41 · Личное сообщение · #14 |
|
Создано: 09 января 2019 20:42 · Личное сообщение · #15 |
|
Создано: 09 января 2019 20:54 · Поправил: difexacaw · Личное сообщение · #16 spinz Блочное исполнение было реализовано в предыдущей версии DYE. Это было запилено на реализацию защиты(OP) и реалтайм(тесты по нему), а есчо откатывались анклавы практически, семплов навалом, ты не искал. Позже я искал решение что бы повысить профайл, эти темы есть тут. Ты слепой что ле ? И есчо куча топиков в которых я искал решения связанные с этим всем. ----- vx |
|
Создано: 09 января 2019 21:03 · Личное сообщение · #17 |
|
Создано: 09 января 2019 21:17 · Личное сообщение · #18 |
|
Создано: 09 января 2019 21:35 · Личное сообщение · #19 Не понимаю. Вот есть блок кода, который по какому-то алгосу пишет в память. Как поймать выход из этого блока без трассировки каждой инструкции, если какая-нибудь инструкция из этого блока может модифицировать следующую команду так, что после ее выполнения (следующей инструкции) IP улетит в далекие ебеня? |
|
Создано: 09 января 2019 21:42 · Личное сообщение · #20 spinz Блок выделяется как линейный в самом простом случае. В случае оптимизации все ветви блокируются ----- vx |
|
Создано: 09 января 2019 21:54 · Поправил: spinz · Личное сообщение · #21 |
|
Создано: 09 января 2019 22:14 · Личное сообщение · #22 spinz Под визором поток инструкций либо эмулируется, либо исполняется не по адресу оригинальной инструкции(она копируется в буфер), ну или при блочном исполнении копируется линейный блок(это невозможно сделать в случае эмуляции, в этом и её не актуальность). Тоесть исполнение и/или изменение кода происходит после его трансляции или переноса в буфер. Он не исполняется в исходной области. Поэтому то о чём вы говорите совершенно бессмысленно, это значит вы вообще не понимаете о чём тут идёт речь. ----- vx |
|
Создано: 09 января 2019 22:19 · Поправил: spinz · Личное сообщение · #23 |
|
Создано: 09 января 2019 22:25 · Личное сообщение · #24 |
|
Создано: 09 января 2019 22:29 · Личное сообщение · #25 spinz пишет: Вот есть, например, инструкция mov [eax], eax Как ее выполнить без трассировки и сохранить контроль над кодом, если она следующую инструкцию превращает (может превратить) в jmp xxxxxxxx? Оттранслированные инструкции размещаются по другому адресу и страница делается readonly. При попытке модификации копии получим исключение. ----- PGP key |
|
Создано: 09 января 2019 22:29 · Поправил: difexacaw · Личное сообщение · #26 spinz По адресу в буфере мод невозможен. Так как все адреса изменяются. Есть несколько способов узнать текущий адрес, самый простой - сохранить блок математики(npx). Это обрабатывается. Сурки посмотри. И вообще у меня такое впечатление что ты не понять хочешь, а исчешь пути и возможности какие то, что бы просто найти принципиальную ошибку(ты её не найдёшь, механизмы разрабатывались годами), при этом без понятия(нулевой скилл). Это тупой троллинг, давай досвиданья. Добавлено спустя 5 минут ntldr > Оттранслированные инструкции размещаются по другому адресу и страница делается readonly. И после доступа к странице необходимо перенаправить выборку данных, та техника IDP. При этом косячёк возникает со вторым потоком. А дальше немного дичайших извратов по цепочке - как выполнить инструкцию в блокированной памяти или доступ к ней. Вы пришли к исходной задаче, только вот на несколько лет тормознули. ----- vx |
|
Создано: 09 января 2019 22:40 · Поправил: spinz · Личное сообщение · #27 ntldr пишет: Оттранслированные инструкции размещаются по другому адресу и страница делается readonly. При попытке модификации копии получим исключение. Мы же вроде говорили про общий случай и равные привилегии, не? Как быть с реалмодом/отключенным пейджингом? difexacaw пишет: просто найти принципиальную ошибку(ты её не найдёшь, механизмы разрабатывались годами) Мне это не интересно. Я лишь указываю, что твой подход в принципе не универсален. |
|
Создано: 09 января 2019 22:54 · Поправил: ntldr · Личное сообщение · #28 spinz пишет: Мы же вроде говорили про общий случай и равные привилегии, не? Да, общий случай и равные привилегии. Изменить атрибуты страниц виртуализированному коду не даст перехват системных вызовов (если виртуализируем только юзермод, sysenter транслируется в стаб проверяющий адреса и изолирующий действия с адресами виртуализатора). Если виртуализируем всё, то таблицы страниц для виртуального кода вообще целиком эмулируются. spinz пишет: Как быть с реалмодом/отключенным пейджингом? Полный виртуализатор транслирует реалмод инструкции в инструкции защищенного режима. Либо (если так проще) для реалмода используется покомандная эмуляция. Это не самая важная часть. spinz пишет: Мне это не интересно. Я лишь указываю, что твой подход в принципе не универсален. Подход достаточно универсален. Но реализация учитывающая все тонкости - будет сложной и перегруженной. Да и не нужно это. Самая жопа для динамического транслятора - это большое количество самомодификаций кода. Сильно падает профайл. Настолько сильно, что покомандная эмуляция такого безобразия будет быстрее. ----- PGP key |
|
Создано: 09 января 2019 22:59 · Личное сообщение · #29 |
|
Создано: 09 января 2019 22:59 · Личное сообщение · #30 Выкладываю простейший пример динамического транслятора который виртуализирует только юзермод. Код большей частью на си, писалось много лет назад. ___ - virt_x.7z ----- PGP key | Сообщение посчитали полезным: plutos, HandMill, SReg, Orlyonok, superakira, mak |
. 1 . 2 . >> |
eXeL@B —› Софт, инструменты —› Gbhv - Simple x64 Hypervisor Framework |