Техника выживания в мутной воде или как обуть антивирус

       

>>>> Info немного теории или под капотом антивируса


И ведь находятся же такие идиоты, что безоговорочно полагаются на антивирусы, и самодовольно похрюкивая, заявляют, что все файлы на данном диске/сайте проверены самыми последними версиями AVP/Dr.Web и типа здесь все ништяк. Наивные! Если антивирус говорит, что он ничего не нашел, то и понимать его следует буквально. Антивирус. Ничего. Не. Нашел. Стало быть, плохо искал!

Анализ показывает, что подавляющее большинство антивирусов используют сигнатурный поиск с жесткой привязкой к точке входа или физическому смещению в файле. Что все это значит? Не вдаваясь в неразбериху терминологических тонкостей, отметим, что сигнатурой называется уникальная последовательность байт, однозначно идентифицирующая вирус. Сигнатура может быть как сплошной (например, "DEAD BE EF") или разряженной (например, " DE ?? ?? AD ?? BE ** EF", где знак "??" обозначает любой байт, а "**" любое количество байт в данной позиции). Поиск по разряженной сигнатуре иначе называется поиском по маске и это – наиболее популярный алгоритм распознавания на сегодняшний день.

Для достижения приемлемой скорости сканирования, антивирусы практически никогда не анализируют весь файл целиком, ограничиваясь беглой проверкой одной-двух ключевых точек (например, окрестностей точки входа в файл, т. е. тех ячеек, с которых и начинается его выполнение). Реже используются привязка к смещению сигнатуры относительно начала файла.

Полиморфные вирусы, пятого и шестого уровня полиморфизма, не содержащие ни одной постоянной последовательности байт, сигнатурным поиском уже не обнаруживаются и для их детектирования приходится разрабатывать весьма изощренные методики, самой известной из которых является эмуляция процессора (называемая так же технологией виртуальной машины). Антивирус прогоняет подозреваемый файл через эмулятор, дожидается пока полиморфный движок расшифрует основное тело вируса (если файл действительно зашифрован), после чего применяет старый добрый сигнатурный поиск.
Это достаточно ресурсоемкая операция и без особой нужды антивирусы к ней стараются не прибегать.

Подлинно полиморфные вирусы, каждый раз на 100% перестраивающие свое тело и обходящиеся без навесных шифровщиков, эмулятором уже не обнаруживаются, однако, во-первых, такие вирусы существуют только теоретически, а, во-вторых, для их детектирования заблаговременно разработана технология логической реконструкции алгоритма исследуемой программы (т. е. антивирус смотрит что делает данная программа, игнорируя то, как именно она это делает).

Поскольку, зараженный файл может быть упакован (и тогда вирусные сигнатуры окажутся безнадежно искажены), антивирус должен быть готов распаковать его. Простейшие упаковщики распаковываются все тем же эмулятором, но монстров, снабженных большим количеством антиотладочных приемов (ASPack, tElock и другие) так не возьмешь и для борьбы с ними приходится реализовать специальные распаковщики, опознающие "свой" упаковщик по его сигнатуре…

Итак, круг замкнулся! С сигнатур мы начали и к сигнатурам вернулись в конце (не путать с тем концом, по сравнению с которым любое начало, не начало, а с позволения сказать даже не полуось).


Содержание раздела