Шесть грехов malware-писателей

Грех 2— излишняя сложность


Чем сложнее механизм, тем больше времени от требует для своего создания и отладки, а конец у всех один. Как только малварь замечают — ее тут же заносят в антивирусную базу и злорадно прибивают. Не могут не прибить! Над этим целая индустрия работает, вербующая отнюдь не глупых людей. Известны случаи (и их достаточно много), когда вирус, разрабатываемый годами (!), палился антивирусной процедурой, созданной меньше, чем за день. Вот такой расклад и расстановка сил.

Технология отлова полиморфиков уже давно отработана. Продвинутые антивирусы (AVP, Dr.WEB) пропускают проверяемый код через эмулятор и гонят его на графы, приводя к тому или иному метаязыку, отражающему _суть_ программы, но _не_ способ ее достижения, поэтому даже самые крутые полиморфики гаснут как бычки в писсуаре, ведь изменить заложенный в них _алгоритм_ они не в силах.

Рисунок 6 антивирусные "вакцины" бьют известную им малварь наповал

Интеллектуально не отягощенные игроки антивирусного рынка просто размножают полиморфик в огромном количестве экземпляров (от 10 тыс. и больше), удаляют все повторы, а оставшиеся — заносят в базу (вот потому для ловли многих вирусов Norton'у под час требуется _сотни_ записей!). Уже никто не анализирует малварь и не потрошит ее дизассемблером, ну разве что самые популярные экземпляры, а для подавляющего большинства остальных антивирусные энциклопедии дают крайне невнятные описания. Загляните для сравнения в энциклопедии десяти-пятнадцатилетней давности. Какие там были описания! По несколько страниц, с фрагментами дизассемблерных листингов — красота!

Но стоит ли уподобляться Microsoft, стремиться к крутости ради крутизны и усложнять малварь без нужны? Зачем разрабатывать навороченные механизмы, когда и простые неплохо работают! Правило самолета (airplane rule) гласит, что: "сложность увеличивает вероятность поломки, двухмоторный самолет по сравнению с одномоторным имеет, по крайней мере вдвое больше проблем с двигателями". Простой пример: сравнение API операционных систем Windows и UNIX. Сложную систему может придумать каждый дурак, но только гений сумеет уложить весь необходимый функционал в минимум строк кода, реализовать и отладит которые уже не составит большого труда.



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