Антивирус на помойку Крис Касперски Хакер, номер #092, стр. 092-040-2 Антивирусы — за гранью возможного Антивирусы в настоящее время практически полностью утратили былую значимость и усиленно пытаются отойти от пропасти, на дне которой они находятся. Вирусы, заражающие исполняемые файлы, за последние несколько лет фактически перевелись, к тому же запретить запись в исполняемые файлы средствами операционной системы намного проще, дешевле, быстрее и надежнее, чем устанавливать антивирусный пакет. И уж совсем бессмысленно пытаться лечить зараженные объекты, ведь в любой момент их можно переустановить с дистрибутивной копии, хранящейся на CD-R/RW или скачанной из сети. Антивирусный монитор, следящий за всеми создаваемыми/открываемыми файлами и проверяющий их на лету, — это дополнительные тормоза (подчас очень значительные): конфликты, критические ошибки, голубые экраны смерти и прочий ничем не оправданный геморрой. Вся проблема в том, что антивирус может ловить только те вирусы, о которых знает, а вирусы сейчас пишут все кому не лень, так что даже при экстраординарной степени оперативности никакой гарантии, что вся зараза будет распознана, у нас нет. Более того, вирус, упакованный слегка подправленной версией крутого протектора, имеет 100% шансы остаться незамеченным! Сложные протекторы уже не распаковываются на эмуляторе ЦП, и для их снятия требуется статический распаковщик, входящий в «движок» антивирусной базы и справляющийся только со строго конкретными версиями протекторов и очень болезненно относящийся даже к незначительным изменениям структуры упакованного файла. Да что там структура! Обычно бывает достаточно внедрить в точку входа jump на инструкцию, неизвестную эмулятору (например, что-нибудь из набора SSE/SSE2), и антивирус идет лесом, поскольку переменная длина x86 инструкций не позволяет ему определить начало следующей машинной команды! Впрочем, даже если антивирусу удастся побороть упаковщик и передать эвристику, распакованный код никаких вирусных признаков все равно там ни за что не обнаружит, ну разве что это будет пионерский вирус. Наличие незашифрованных текстовых строк с ключами реестра, ответственными за автозапуск, имен исполняемых файлов антивирусных программ, команд в стиле «rm -rf/» с высокой степенью указывает на зловредную программу, но их очень легко зашифровать. Еще эвристик может анализировать таблицу импорта и аргументы, передаваемые функции GetProcAddress. А если там встретится WriteProcessMemory, VirtualAllocEx, CreateRemoteThread или что-то еще в этом роде, он сделает вывод, что имеет дело с программой, способной внедряться в другие процессы. Верный признак червей и отладчиков. Ситуация сильно осложняется тем, что многие вирусные приемы сейчас активно используются протекторами, и, если эвристик не утихомирить, он отправит в топку добрую половину легальных программ, чего допускать ни в коем случае нельзя! Да и вообще, если создатель вируса неглупый человек, то он многократно прогонит его через различные эвристики, добиваясь их полной и безоговорочной капитуляции. |