Абсолютный ноль Николай «GorluM» Андреев Хакер, номер #072, стр. 072-068-6 Но можно обхитрить драйвер, найдя при помощи функции IoGetDeviceObjectPointer объект-устройство с именем устройства, чьи пакеты мы хотим перехватывать. В полученной структуре DEVICE_OBJECT (все эти структуры описаны в DDK) можно выдрать указатель на структуру DRIVER_OBJECT (поле DriverObject) и уже в ней навести марафет, а если быть точным, внаглую заменить (предварительно записав) все адреса Dispatch-функций на свой обработчик. Эффект будет такой же, как если бы мы сделали фильтр! А в обработчике можно уже делать все, что заблагорассудится: хочешь - посылай пакет старой функции, хочешь – заверни. Я с помощью таких механизмов организовывал обход персональных файрволов – орудуя функцией IoGetAttachedDevice, я получал последнее присоединенное к сетевому драйверу устройство и заменял его Dispatch-функцией на свой обработчик, в котором сверял ID текущего процесса (PsGetCurrentProcessID) с ID процесса моей программы. И если они совпадали, то посылал IRP-пакет не оригинальной функции, а напрямик устройству \\Device\\Tcp с помощью функции IoCallDriver. Реализуется это просто, а главное – никто и в жизни не пропалит. Вскрытие показало Нулевое кольцо – огромный полигон для хакера. Возможностей оно дает столько, сколько не приснится даже в самых ярких эротических снах. Я описал лишь толику того, что можно делать в Windows в ring0. Думаю, до остального ты и сам дойдешь, пару раз перечитав мою статью, исправив в ней ошибки, вырастив сына и построив дом. Если у тебя есть какие-нибудь интересные идеи, замечания или ты просто хочешь сказать мне, что статья получилась кошмарная, – пиши. С Новым годом. Инструменты Для того чтобы реализовать все описанное в статье, тебе потребуется масса разнообразных инструментов. Для написания самой программы я рекомендую Visual C++ или, на худой конец, MASM. Но одного компилятора и IDE не хватит для полноценной разработки приложений, работающих в нулевом кольце защиты в Windows. Тебе просто необходим Microsoft Driver Development Kit (DDK), в который входят все необходимые хидеры, описывающие важные структуры вроде DEVICE_OBJECT, Lib’ы, а также очень скромненький мануальчик, по которому, мне кажется, еще никто ничего не написал. Также ты и минуты не проживешь без качественного отладчика уровня ядра. Ведь каждый крах твоей программы будет оборачиваться голубым экраном смерти и насильным рестартом системы. Чтобы этого избежать или использовать в своих целях, тебе понадобится SoftIce – дебаггер, у которого нет конкурентов (что бы ни говорили любители kd вроде Шрайбера). Защита от хакера Как видишь, грамотный хакер может написать такого трояна или червяка, что его за всю жизнь в системе не откопаешь. А вдруг такой паразит уже вовсю орудует у тебя в системе? Мда, страшновато. Нужно как-то от подобных зверств защититься. От установки драйверов и доступа к физической памяти тебя спасет лишь одно – использование неадминского доступа. Установка дров доступна только залогиненному админу, поэтому срочно создавай новый пользовательский аккаунт в систему и сиди только из-под него. |