2012-05-09 3 views
1

Я ищу виртуальные драйверы fuzz, я прочитал другие вопросы об этом, но они никуда не делись. В основном, глядя, есть ли очевидный инструмент, который я пропустил, и хочу знать, будут ли работать fuzzing IOCTLs из гостевого окна Windows? Или, если мне нужно написать один на низком уровне, например IN/OUT?Инструменты для виртуальных драйверов Fuzzing

Любых инструментов там для Fuzzing водителей в окнах гостя ударить гипервизор либо Hyper-V или VMware

ответ

1

Есть несколько способов ее реализацию коды виртуализации.

Во-первых, конечно, если вы работаете в Windows, это интерфейс IOCTL.

Тогда вы должны помнить, что все виртуальные устройства каким-то образом эмулируются каким-то кодом в гостевой ОС и в операционной системе хоста. Таким образом, доступ к входным устройствам (клавиатура и мышь), видеоустройство, память (диски), сетевая карта, коммуникационные порты (последовательные, параллельные), стандартные ПК-устройства (PIC, PIT, RTC, DMA), CPU APIC и т. Д. реализовать код виртуализации.

Также очень важно помнить, что виртуализация различных ПК-устройств (если только мы не говорим об синтетических устройствах, работающих с VMBUS в Windows), выполняется путем перехвата, разбора и эмулирования/выполнения инструкций, которые получают доступ к карте памяти устройства буферов и регистров и портов ввода/вывода. Это дает вам еще один «интерфейс», чтобы фунт.

Используя этот код, вы можете обнаружить не только ошибки, связанные с устройством, но также и связанные с инструкциями ошибки. Если вы заинтересованы в последнем, вам нужно хорошо понять, как процессор x86 работает на уровне инструкций в различных режимах (реальный, виртуальный 8086, защищенный, 64-разрядный), как он обрабатывает прерывания и исключения, а вы Также необходимо знать, как получить доступ к этим ПК-устройствам (как и по каким адресам памяти и номерам портов ввода-вывода).

Btw, Windows не позволит вам напрямую обращаться к этим вещам, если ваш код не запущен в ядре. Возможно, вы захотите иметь гостевую виртуальную машину, отличную от Windows, для таких вещей, чтобы избежать чрезмерной защиты Windows. Ищите крайние случаи, необычные кодировки команд (включая недействительные кодировки) или необычные инструкции для обычных задач (например, использование FPU/MMX/SSE/etc или специальных инструкций защищенного режима (например, SIDT) для доступа к устройствам). Подумайте и будьте непослушны.

Еще одна вещь, которую следует учитывать - условия гонки и вычислительная или нагрузка ввода-вывода. Возможно, вам повезло и в этом направлении.

+0

Круто спасибо, есть ли какие-нибудь опрятные инструменты, которые уже доступны для выполнения этих задач? Я видел ioctlfuzzer, но это все. – rhinox80

+0

Я ничего не знаю. –

+0

Может ли ioctlfuzzer быть хорошим местом для начала? поскольку он говорит, что это беспорядочно удаляет IOCTLs в устройстве Windows в случайном порядке. – rhinox80

Смежные вопросы