Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ionescu007/simplevisor
Обратная инженерияВиртуализация для безопасностиАнализ вредоносных программАппаратная БезопасностьАнализ Бинарных ФайловСтатьи и ИсследованияОбучение и Образование
GitHubionescu007/simplevisor

SimpleVisor

Минимальный гипервизор Intel VT-x для Windows и UEFI, который виртуализирует работающий хост для интроспекции, поддерживая динамический hyperjacking, unhyperjacking, EPT и VPID.

РепозиторийСайт
2.0k2862 лет назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SimpleVisor

SimpleVisor — это простой, портативный гипервизор, специфичный для Intel x64/EM64T VT-x, с двумя конкретными целями: использовать минимальный объём ассемблерного кода (10 строк) и иметь наименьший объём кода, связанного с VMX, для поддержки динамического hyperjacking и unhyperjacking (то есть виртуализации состояния хоста изнутри хоста), а также поддержки продвинутых функций, таких как EPT и VPID. В настоящее время он работает как в Windows, так и в средах UEFI.

Введение

Вы всегда хотели узнать, как построить гипервизор? Документация Intel (многие сотни страниц) вас удручает? Найденные в интернете примеры только запутывают или требуют недель чтения десятков тысяч строк кода? Если да, то SimpleVisor может быть проектом для вас.

Не считая исчерпывающих комментариев, объясняющих каждую строку кода, и специфических особенностей, связанных с Windows или Intel, SimpleVisor занимает около 500 строк кода на C и 10 строк ассемблерного кода x64, при этом обладая способностью работать на всех последних версиях 64-битной Windows и поддерживая динамическую загрузку/выгрузку во время выполнения.

Кроме того, SimpleVisor использует облегчённую OS-библиотеку для функциональности, специфичной для Windows, отделяя части гипервизора от частей, специфичных для Windows. Благодаря этой портативной архитектуре теперь также доступна версия SimpleVisor для UEFI. Однако обратите внимание, что она не имеет надёжной поддержки MP-сред из-за проблем с UEFI, и что загрузка операционной системы в конечном итоге приведёт к сбою, поскольку ОС столкнётся с нереализованными путями кода из-за своей реконфигурации ресурсов процессора. Виртуализация всей загрузки операционной системы из UEFI выходит за рамки проекта.

SimpleVisor можно собрать с помощью Visual Studio 2015 Update 3, и хотя более старые/новые компиляторы не тестировались и не поддерживаются, вполне вероятно, что они также смогут собрать проект. Однако важно сохранить различные настройки компилятора и компоновщика такими, как вы их видите.

В настоящее время SimpleVisor успешно протестирован на следующих платформах:

  • Windows 8.1 на процессоре Haswell (самодельный настольный ПК)
  • Windows 10 Redstone 1 на процессоре Sandy Bridge (ноутбук Samsung 930)
  • Windows 10 Threshold 2/Redstone 1 на процессоре Skylake (планшет Surface Pro 4)
  • Windows 10 Threshold 2 на процессоре Skylake (Dell Inspiron 11-3153 с SGX)
  • VMWare Workstation 11, но без EPT (VMWare не поддерживает 1GB EPT)
  • UEFI 2.4 на материнской плате Asus Maximus VII Extreme (самодельный настольный ПК)

На данный момент он не тестировался на Bochs, но нет причин, по которым SimpleVisor не мог бы работать и в такой среде. Однако, если ваша машина уже работает под гипервизором, таким как Hyper-V или Xen, SimpleVisor не загрузится.

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

Мотивация

Слишком многие проекты гипервизоров либо чрезвычайно сложны ([Xen][1], KVM, VirtualBox) и/или закрыты (VMware, Hyper-V), а также сильно ориентированы на разработку или системы на базе Linux. Кроме того, большинство из них (кроме Hyper-V) явно созданы для обеспечения выполнения виртуальных машин, а не для виртуализации живой, работающей системы с целью выполнения интроспекции или других задач, связанных с безопасностью.

Однако несколько проектов выделяются из общей массы, например, оригинальный [Blue Pill][2] от Джоанны, или такие проекты, как [VirtDbg][3] и [HyperDbg][4]. К сожалению, большинство из них к настоящему времени стали довольно старыми, а некоторые работают только на x86-процессорах и не поддерживают более новые операционные системы, такие как Windows 10. Другой довольно простой пример, в некоторых аспектах похожий на Blue Pill, но фактически представляющий хороший пример использования EPT для "Split-TLB" — это [MoRE][7] от Jacob Torrey/AIS.

Ближайший проект, который действительно представляет ориентированный на Windows, современный и поддерживаемый гипервизор — это [HyperPlatform][5], и мы настоятельно рекомендуем его в качестве отправной точки для более широко применимой исследовательской разработки гипервизоров. Однако, пытаясь создать универсальную "платформу", которая была бы более широко надёжной, HyperPlatform также страдает от некоторой раздутости, что затрудняет понимание того, каковы действительно базовые потребности гипервизора и как его инициализировать. В том же духе, с такой же любовью к STL/C++, но также включая загрузчик ELF и поддержку UEFI/Linux наряду с модульными тестами и ещё большей надёжностью, — это [Bareflank][8], также от AIS. За пределами этого вы, вероятно, уже переходите к сложности уровня Xen.

Явная цель этого проекта, как указано выше, состояла в том, чтобы минимизировать код любым возможным способом, не вызывая негативных побочных эффектов, и сосредоточиться на потребностях "bare-metal". Это включает:

  • Минимизацию использования ассемблерного кода. Если бы не отсутствие интринсика __lgdt и обходной путь для поведения Windows API, только первые 4 инструкции точки входа гипервизора требовали бы ассемблера. Как есть, проект содержит всего 10 инструкций, распределённых по 3 функциям. Это огромное отличие от других проектов гипервизоров, которые часто содержат несколько сотен строк ассемблерного кода. Для достижения этого результата используются различные трюки, специфичные для ОС, и сокращения компилятора.
  • Сокращение проверок ошибок, которые вряд ли произойдут. При правильно настроенном и доверенном наборе входных данных такие инструкции, как vmx_vmwrite и vmx_vmread, например, никогда не должны давать сбой.
  • Удаление поддержки x86, которая усложняет дело и вызывает специальную обработку вокруг 64-битных полей.
  • Явное сокращение всех возможных VM-Exits только до архитектурно определённого Intel минимума (CPUID, INVD, VMX Instructions и XSETBV). Это сделано намеренно, чтобы гипервизор и код инициализации оставались как можно меньше.
  • Отсутствие поддержки VMCALL. Многие гипервизоры используют VMCALL как способ выхода из гипервизора, что требует программирования на ассемблере (интринсика нет) и дополнительной обработки выхода. SimpleVisor вместо этого использует ловушку CPUID.
  • Опора на малоизвестные функции ОС для упрощения разработки гипервизора, такие как Generic DPCs и контексты гибернации в Windows, или протокол PI MP в UEFI.
  • Поддержка EPT/VPID очень простым способом, чтобы продемонстрировать прочную основу простейшей возможной реализации этой функции.
  • Портативность и изоляция процедур, специфичных для ОС.

Ещё одной подразумеваемой целью была поддержка самых последних аппаратных функций, поскольку даже [Bochs][6] не всегда имеет самые последние инструкции и/или определения Intel VMX. Они часто встречаются в заголовочных файлах, таких как "vmcs.h" и "vmx.h", которые различные проекты имеют с разным уровнем полноты. Например, Xen master имеет некоторые невыпущенные причины VM Exit, но не некоторые выпущенные, которые есть у Bochs, хотя у него нет невыпущенных! Один из таких примеров — использование 1GB EPT-записей, которые, например, VMWare не виртуализирует корректно.

Наконец, SimpleVisor задуман как образовательный инструмент — он содержит исчерпывающие комментарии, объясняющие всю логику каждой строки кода, и конкретные советы и приёмы по Windows или Intel VMX, позволяющие достичь желаемого результата. Различные ошибки или плохо документированные поведения явно отмечаются.

Установка в Windows

Поскольку x64 Windows требует подписи всех драйверов, вы должны выполнить testsign бинарного файла SimpleVisor. Файл проекта Visual Studio можно настроить для этого, используя параметры "Driver Signing" и включив "Test Sign" с вашим собственным сертификатом. Из интерфейса вы также можете сгенерировать свой собственный.

Скачать инструмент