Проект «Безопасный браузер» Визовитин Николай Научный руководитель: Д.В. Иртегов Идея проекта Делегирование работы с физическими устройствами в виртуальную машину с минимальным участием host OS В применении к сетевой карте – «Безопасный браузер» Отображение ресурсов виртуальной сетевой карты на ресурсы реальной Rtenicxp.sys (Guest OS NIC driver) Interrupts PCI configuration space Port I/O Memory Mapped I/O DMA DevNICFwd (Virtual NIC) NICFwd.sys (Host OS NIC driver) Interrupts PCI configuration space RTL8168 Port I/O Memory Mapped I/O DMA DMA (Direct Memory Access) Большинство устройств использует DMA Неконтролируемый доступ устройства к памяти опасен У различных устройств способ управления DMA может достаточно сильно отличаться DMA, решение “Заставить” драйвер guest OS использовать для DMA заранее известный участок памяти, также зарезервированный в host OS DMA, решение Driver ntoskwrp.exe ntoskrnl.exe IoGetDmaAdapter() Guest Host Guest Memory VBox Memory ntoskrnl.exe IoGetDmaAdapter() Host Memory DMA, подзадачи Driver 1 ntoskwrp.exe ntoskrnl.exe IoGetDmaAdapter() Guest Host 2 ntoskrnl.exe 3 IoGetDmaAdapter() Guest Memory VBox Memory Host Memory 1. Модификация ядра guest OS ntoskrnl.exe ntoskrnl.lib (import library) dumpbin dll2lib exports2wrapper.py ntoskrnl.lib (static library) *.def *.c,*.h (ntoskwrp sources) cl (compiler) link (linker) ntoskwrp.exe 2. Передача сообщений между guest OS и host OS Виртуализация возможна в силу сильной ограниченности знаний host OS о guest OS и наоборот Взаимодействие guest OS и host OS обычно происходит через специализированный backdoor драйвер 2. Передача сообщений между guest OS и host OS (продолжение) Требуется: передача сообщений между guest OS и host OS остановка выполнения guest OS на время передачи сообщения возможность передачи сообщений без дополнительных драйверов в guest OS, в любое время 2. Передача сообщений между guest OS и host OS (продолжение) backdoor драйвер не подходит Передача сообщений посредством обращений к виртуальному устройству Т.к. в VirtualBox поток эмуляции единственный, то достигается остановка выполнения guest OS Виртуальное устройство доступно всегда 3. Перенаправление обращений к памяти Guest OS должна иметь возможность читать/писать в отведенную под DMA память (в host’е) Необходимо перенаправление обращений к соответствующим участкам памяти из виртуальной машины в host OS Выполнено Разработан достаточно удобный способ модификации ядра ОС Разработан способ передачи сообщений между guest OS и host OS Реализована поддержка передачи сообщений в ядре guest OS, виртуальной сетевой карте и универсальном драйвере сетевой карты в host OS Планы Реализация перенаправления обращений к памяти для DMA Тестирование системы делегирования работы с физическим устройством в виртуальную машину Спасибо за внимание Ваши вопросы