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