Журнал Системный Администратор, Март 2008

Журнал Системный Администратор

Март 2008

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке


Поиск malware на Server 2003/XP своими руками

Крис Касперски

Глобальных эпидемий не вспыхивало уже несколько лет, но локальные очаги заражения продолжают разрастаться, осваивая новые территории. Покажем, как обнаруживать свыше 90% заразы бесплатным ПО. Главным образом, мы будем говорить о Server 2003/XP, однако сказанное во многом справедливо и для Server 2008/Vista.

Антивирусы, изначально рассчитанные на борьбу с вирусами (то есть с саморазмножающимися программами, внедряющими свою, возможно, слегка измененную копию в другие файлы) к нашествию троянских коней оказались совершенно не готовы. Троянская программа никуда не внедряется, пишется (на основе готовых компонентов) чуть ли не за несколько минут, после чего обрабатывается упаковщиком/протектором и «сливается» в Сеть, например, путем широковещательной/избирательной почтовой рассылки. К тому времени, пока пользователи заподозрят что-то неладное и пошлют файл в антивирусный центр на исследование (если еще найдут его на диске!), вредоносное программное обеспечение (далее по тексту именуемое malware) уже сделает свое черное дело, например, разошлет спам, найдет и передаст конфиденциальную информацию, создаст новую учетную запись, допускающую удаленное подключение хакера и т. д. Грамотно спроектированное malware обычно уничтожает себя буквально через несколько минут, а то и секунд после запуска вредоносного файла.

Основную зацепку представляют готовые компоненты, используемые хакерами, чтобы не писать каждый экземпляр malware с нуля. Теоретически их можно занести в базу сигнатур, детектируя заразу на ранних стадиях внедрения. Практически же универсальный распаковщик, встроенный в антивирусы, справляется лишь с простейшими упаковщиками. Все, что посложнее, – распаковывается набором статических распаковщиков, запрограммированных вручную и «тупо» повторяющих алгоритм оригинального упаковщика. Проблема в том, что алгоритм упаковки может быть легко изменен прямо в hex-редакторе. Хакеру достаточно перенести оригинальную точку входа (OEP – Original Entry Point) в другое место, чтобы обхитрить антивирус или воткнуть в начало файла конструкцию, вызывающую у антивируса «несварение желудка».

Обычно это что-то из набора команд SSE/SSE2/SSE3 – в настоящий момент их не эмулирует ни один антивирус, а переменная длина x86-команд не позволяет продолжить декодирование инструкций после встречи с первой же неизвестной командой. То же самое относится и к самомодифицирующемуся коду (особенно выполняющемуся на стеке), структурным исключениям… Да что там говорить, хакеру достаточно «закрутить» цикл, исполняющийся секунду или около того, чтобы эмулятор антивируса «отвалился» по тайм-ауту. Никакой антивирус не эмулирует кодов ошибок, возвращаемых API-функциями, которые могут быть использованы для расшифровки остального тела файла (скажем, malware открывает заведомо несуществующий файл, но антивирус-то этого не знает! А «подобрать» правильный ключ расшифровки – выше его сил!).

Оставшая часть статьи доступна только подписчикам. Если вы желаете продолжить чтение этой статьи, то вам необходимо подписаться на эту статью или весь номер.

Подписаться на весь номер

Зарегистриванные пользователи, пожалуйста следуйте по этой ссылке