Троян в упаковке

A.M.D.F. (amdf@front.ru)

Хакер, номер #072, стр. 072-060-1

Маскировка вредоносного кода

Для тебя, наверное, не секрет, что почти все публичные трояны, которые можно найти в Сети, давно уже занесены в базы антивирусов и их распространение – проблематичная задача. Однако известно ли тебе, что любую заразу можно довольно легко замаскировать под обычное приложение, после чего ни один даже самый навороченный антивирус не обнаружит подставу? Держись! Сегодня мы с тобой так замаскируем MyDoom.e, что впору будет организовывать новую эпидемию :).

Обнаружение

Для начала неплохо было бы разобраться с тем, как, собственно, антивирусные программы отличают зараженные файлы и трояны от обыкновенных бинарников. Я не буду вникать в тонкости этого процесса, а расскажу лишь в общих чертах. У каждого антивируса в обновляемой базе хранятся специальные записи, по которым можно запалить трояна или вирус. Такие записи называются сигнатурами. Сигнатурой может быть некая последовательность байт, характерная для данного вируса, контрольная сумма или еще какой-то характерный признак. Для сложных вирусов, которые не имеют постоянных сигнатур, изобретаются иные методы обнаружения. Антивирус берет файл и начинает искать в нем сигнатуры из своих баз. Если сигнатура обнаружена, то антивирус радостно сообщает пользователю, что данная программа – опаснейший троян. А вот этого-то тебе как раз и не хотелось бы, не так ли? Нужно сделать так, чтобы узнаваемой сигнатуры в файле попросту не было. В этом случае антивирус дополнительно проверяет файл эвристическим анализатором. Алгоритм зависит от конкретного антивируса, а в некоторых эвристика и вовсе нет. Эвристик - штука темная, срабатывает, в основном, на вирусы, написанные на ассемблере, поэтому, скорее всего, антивирус ничего не обнаружит и пойдет дальше по своим делам. Как же убрать эту сигнатуру? Практика показывает, что это не так уж и сложно.

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

Чертик в коробочке

Что же представляет собой упакованный exe-файл? Это PE-заголовок, небольшой загрузчик и прикрепленные сжатые данные исходного файла. Эти данные могут быть дополнительно зашифрованы. При запуске управление передается загрузчику, который распаковывает эти данные прямо во время выполнения и передает управление коду самой программы. С точки зрения пользователя никаких отличий нет – программа точно так же запускается и работает как обычно.

Упаковщиков довольно много. Все они используют разные алгоритмы сжатия и шифрования и разные загрузчики. Антивирусу довольно сложно понять, что скрывается в упакованном файле. Он должен анализировать непосредственно код программы, а код в упакованном файле – это лишь код загрузчика. Для анализа кода его нужно предварительно распаковать. Для этого антивирус должен знать, прежде всего, чем упакован файл, и применить соответствующий алгоритм. Для каждого из упаковщиков необходим свой специальный алгоритм, а то и несколько сразу, так как некоторые программы поддерживают несколько разных способов упаковки. Если антивирус верно определил, чем упакован файл, и если он поддерживает данный алгоритм распаковки, то успешно извлечет из файла код программы и проверит его. У антивируса начинаются проблемы в том случае, когда тип упаковщика ему неизвестен. Антивирусы умеют вскрывать файлы, сжатые большинством популярных упаковщиков.

Содержание  Вперед на стр. 072-060-2
ttfb: 3.1368732452393 ms