Драйвера Windows - источник зла DigitalScream Xakep, номер #062, стр. 062-068-4 Теперь о передаче управления на shellcode. Принципиальных отличий здесь нет, за исключением одного. На этот раз необходимо искать функции, способные управлять ходом программы. Это могут быть функции, передающие управление на подпрограмму, адрес которой находится в принимаемых данных. Но не стоит забывать о возможности переполнения буфера. Весьма возможно, что разработчик не уделял особого внимания безопасности драйвера. Многие считают это излишеством, но уверяю тебя, это не так. Драйвер, как и любая другая программа, уязвим к такого рода атакам. И возможно, атакующему удастся найти уязвимую функцию, с помощью которой он сможет контролировать работу драйвера. Дополнительные возможности Атака на драйвер совсем не обязательно должна преследовать цель повышения привилегий. Вполне возможно, что это просто вывод его из рабочего состояния, вызов аварийного завершения работы ОС или что-нибудь другое. Так, например, если хакер захочет, чтобы при запуске на компьютере Zone Alarm скрывалась его сетевая деятельность, он может просто программно закрыть его, используя подключение к драйверу. Для примера я написал небольшое приложение Benzinka. Его цель перезапустить систему в случае, если на компьютере запущен брандмауэр Zone Alarm. В этом коде нет ничего особенного. Все, что он делает – это передача «особенных» данных в качестве адреса на результат. Исходник #include <windows.h> int main( int argc, char* argv[] ) { HANDLE hDevice; hDevice = CreateFile( "\\\\.\\vsdatant", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); if ( hDevice == INVALID_HANDLE_VALUE ) return 0; DeviceIoControl( hDevice, 8400000fh, 0, 0, 12345h, 4, 0, 0 ); return 0; } Публичные эксплойты Насколько мне известно, сейчас доступен только один публичный эксплойт для Norton AntiVirus 2002. Кроме того, чтобы его откомпилировать, хакеру придется проявить свои знания в Assembler. Ошибок в исходном коде более чем достаточно, в придачу и shellcode придется внедрить свой. Поскольку в эксплойте он вообще отсутствует :). Также не стоит забывать, что шеллкод исполняется в драйвере, а поэтому на него накладываются еще несколько дополнительных ограничений. Для атаки используется драйвер \\.\navap, входящий в поставку вместе с Norton AntiVirus 2002. Атака не отличается от вышеописанного приема. Разница лишь в том, что этот драйвер имеет изъяны в несколько других функциях. Защита Защита для пользователя – это отказ от продуктов сторонних производителей. Лично я после написания этой статьи проверил все установленные приложения на эту атаку. Как оказалось, примерно шестая часть программ уязвимы. Такая статистика должна насторожить производителей программного обеспечения. Разработчикам могу посоветовать устанавливать эксклюзивный доступ на драйвер при подключении к нему. Добавлю еще, что следует обращать внимание на реализацию обработки пользовательских данных. Программисты, пишущие для internet, уже давно осознали это. Теперь осталось донести эту истину и до win32 программистов. |