Секреты маскировки Крис Касперски Xakep, номер #066, стр. 066-032-2 Полиморфные вирусы пятого и шестого уровня полиморфизма, не содержащие ни одной постоянной последовательности байт, сигнатурным поиском уже не обнаруживаются, и для их детектирования приходится разрабатывать весьма изощренные методики, самой известной из которых является эмуляция процессора (называемая также технологией виртуальной машины). Антивирус прогоняет подозреваемый файл через эмулятор, дожидается, пока полиморфный движок расшифрует основное тело вируса (если файл действительно зашифрован), после чего применяет старый добрый сигнатурный поиск. Это довольно ресурсоемкая операция, и без особой нужды антивирусы к ней стараются не прибегать. Поскольку зараженный файл может быть упакован (и тогда вирусные сигнатуры окажутся безнадежно искаженными), антивирус должен быть готов распаковать его. Простейшие упаковщики распаковываются все тем же эмулятором, но монстров, снабженных большим количеством антиотладочных приемов (ASPack, tElock и другие), так не возьмешь, и для борьбы с ними приходится реализовывать специальные распаковщики, опознающие "свой" упаковщик по его сигнатуре… Чего мы делать не будем Подмена вирусной сигнатуры зараженного файла – это худшая из идей, которая только может придти в голову. Начнем с того, что сигнатуры прямым текстом нигде не хранятся. Современные антивирусные базы представляют собой весьма навороченные структуры данных, на реконструкцию формата которых легко потратить всю оставшуюся жизнь. При наличии неограниченного свободного времени сигнатуру можно найти и вручную, просто затирая различные байтики в зараженном файле и скармливая его антивирусу, дожидаясь, когда он перестанет ругаться. Но стоит учесть, что детектирование вируса, как правило, осуществляется по нескольким независимым сигнатурам, живописно размазанным по всему файлу и, что самое неприятное, варьирующимся от антивируса к антивирусу. К тому же, правка исполняемых файлов в hex-редакторе – занятие не для слабонервных. Для сокрытия сигнатуры необходимо переписать один или несколько фрагментов вируса, заменяя сигнатурные ячейки аналогичными им командами/данными, но имеющими другое машинное представление. А если вирус использует самомодифицирующийся код или тем или иным способом контролирует целостность своего тела? Зашифрованные же вирусы непосредственной модификации вообще не поддаются, а для их расшифровки опять-таки необходима квалификация. В общем, мрак… Но мы будем действовать по плану (да! у нас есть два мешка отличного плана!). Как мы будем действовать Первое (и самое простое), что приходит на ум – обработать файл каким-нибудь навесным упаковщиком/протектором, полностью уничтожающим все сигнатуры, и скормить его антивирусу. Нехай подавится. Что?! Не хочет давиться? Значит, антивирус успешно переварил упаковщик и дорвался до внутренностей оригинального файла. Тут-то сигнатуры и поперли. |