Msg : Prev 3991 / 4681 Next
1999-08-21 11:00:16

To  : All

Subj:

В свете последних событий 14


Привет All! 


=== Cut === 

Симбиоз. 
Достоинства и недостатки, 
Методы реализации. 

Что входит в понятие достоинства ? 
Безусловно - это повышенная сложность обнаружения и потенциальная, 
гипотетическая невозможность лечения. Скажем не невозможность, а возможность 
невозможности, стремящаяся к максимуму. По порядку: попробуем подойти к задаче 
с обратной стороны. потенциальный антивирмейкер или человек, в задачу 
которого входит установление факта наличия вируса скажем в определенном 
исполняемом файле берет этот самый файл и начинает смотреть _вначале_ наличие 
вирусоподобных инструкций. То есть, по сути дела он заменяет сильно 
наворочанный эвристический анализатор, наворочанность которого прямо 
пропорциональна квалификации этого потенциального антивирмейкера. Далее - 
если этот человек сталкивается с вирусоподобными инструкциями, скажем это 
может быть и просто открытый код вируса или полиморфный дешифровщик, который 
можно декриптовать и таким образом опять таки добраться до открытого кода 
вируса, этот человек по сути решает проблему - вирус обнаружен. Если вдруг 
он вирусоподобных инструкций не находит, а тут влияет то, что если их нет в 
начале, значит по факту их нет вообще - то проблема решается обратным путем - 
то есть для этого человека вируса нет. Это исходя из общепринятых способов 
заражения файлов. А вот тут то мы его и обманем внедрившись не в начало, а в 
середину файла и _не_ корректируем начало, а оставляем как есть. 
Антивирмейкер может конечно просмотреть весь файл,а не только начало, но это 
упирается во время и объем этого файла, а также в способность адекватно 
воспринимать дизассемблированную информацию после третьего-четвертого 
десятка килобайт чистого кода, чем естественно никто и заниматься 
не будет, чтобы только лишь установить есть ли вирус или нет. 
Казалось бы все прекрасно и великолепно, но к сожалению к недостаткам 
этого способа относятся следующие вещи: (за все надо платить, не так ли ? ;) ) 
вирус, если мы запихнем его в случайное место в файле может получить 
управление, а может нет. При резидентах, если мы запишем вызов вируса 
из резидентной части, а основное тело вируса будет находиться в основной, 
то вызов может прийтись на бессмысленный набор инструкций и в лучшем 
случае машина просто повиснет. То же самое касается оверлейных структур или 
выпоняемых файлов, которые были запакованы чем то типа PkLite. Короче, все 
что модифицирует само себя на лету с этим работать не будет. И это грустно. 
Если мы об этом заранее не позаботимся. Далее: место, где будет храниться 
сам вирь - можно в конце, но никто не гарантирует, что пока управление не 
дойдет до тела вируса, программа не испортит сам вирус. Хотя бы 
зарезервировав в этом сакмом конце место для буфера данных. Вариант с 
областью повторяющихся байт - никто опять таки не гарантирует, что это не 
место под стек и что вирус не будет модифицирован. Что нам остается - область 
кода. Мы конечно будем надеяться, что нормальная программа не модифицирует 
свой код на лету и отталкиваясь от этого предположения будем что-то строить. 
Hо на этом пути нас опять подстерегает куча глюков: например никто не 
гарантирует, что управление передастся именно на начало того кода, который 
мы заменили своим, а не в его середину. Какой из этого вывод - если уж мы 
и получили управление, то просто обязаны проверить - с самого ли начала 
выполнялись или нет. Потом код должен быть по возможности минимальным, а 
основное тело надо бы просто подгружать из файла во избежание глюков, 
=== Cut === 

С бестовыми регардами , Kostya Volkov aka Reminder 

--- 
* Origin: 2B OR (NOT 2B) = FF (2:4631/17) 
VX Heavens - коллекция вирусов,исходников и статей.
Нажми Alt + Home, чтобы перейти к первому сообщению
Пользовательского поиска