информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят медСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] В чистом виде сигнатурный анализ ловит большинство вирусов 27.08.03 15:13  Число просмотров: 1565
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Можно поподробнее про эвристик, где информацию взять и
> прочее. Если не сложно конечно!

Полазь по вирмейкерским сайтам, там обычно антиэвристика обсуждается - это должно тебе пригодиться...
начни с lovingod.cjb.net
<programming>
[C++] Создание антивируса... 27.08.03 01:39  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вопрос о движке антивируса. Мне интересно то, как он работает - его движок. Как я понимаю в базе данных лежит машинный код вируса и в отурытом файле происходит поиск подстроки в строке! И так со всеми вирусами в базе??? Если не так то может подскажите где прочитать инфу по данной тематике? Спасибо.
[C++] В чистом виде сигнатурный анализ ловит большинство вирусов 27.08.03 11:17  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Вопрос о движке антивируса. Мне интересно то, как он
> работает - его движок. Как я понимаю в базе данных лежит
> машинный код вируса и в отурытом файле происходит поиск
> подстроки в строке! И так со всеми вирусами в базе??? Если
> не так то может подскажите где прочитать инфу по данной
> тематике? Спасибо.
Просто потому, что это самое болишинство вирусов пишутся не сильно продвинутыми программерами из-за игры гормонов, приводящим к деструктивным наклонностям. Но есть немало вирусов, и как правило они самые опасные, которые обладают полным или частичным полиморфизмом. Частичный полиморфизм в данном случае так же сложен для вычисления, поскольку повторяющейся зачастую остается часть, которая может встречаться в обычных программах и потому эту повторяющуюся часть нельзя считать сигнатурой вируса (не всегда так, но тоже бывает).

Если ты собираешься писать действительно полезный антивирус, то простым сигнатурным анализом лучше не ограничиваться и писать эвристик. А это уже гораздо более сложная тематика.
[C++] В чистом виде сигнатурный анализ ловит большинство вирусов 27.08.03 13:42  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Просто потому, что это самое болишинство вирусов пишутся не
> сильно продвинутыми программерами из-за игры гормонов,
> приводящим к деструктивным наклонностям. Но есть немало
> вирусов, и как правило они самые опасные, которые обладают
> полным или частичным полиморфизмом. Частичный полиморфизм в
> данном случае так же сложен для вычисления, поскольку
> повторяющейся зачастую остается часть, которая может
> встречаться в обычных программах и потому эту повторяющуюся
> часть нельзя считать сигнатурой вируса (не всегда так, но
> тоже бывает).
>
> Если ты собираешься писать действительно полезный
> антивирус, то простым сигнатурным анализом лучше не
> ограничиваться и писать эвристик. А это уже гораздо более
> сложная тематика.

Можно поподробнее про эвристик, где информацию взять и прочее. Если не сложно конечно!
[C++] Это вряд ли 27.08.03 15:23  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Можно поподробнее про эвристик, где информацию взять и
> прочее. Если не сложно конечно!
Потому как алгоритмы, которые используются производителями АВ-ов засекречены и являются их собственной разработкой и интеллектуальной собственностью. А в инете хотя более-менее полной инфы на эту тему я не встречал.

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

Но это так, модификации сигнатурного анализатора. Для написания эвристического анализатора тебе потребуется как минимум эмулятор процессора. То бишь вместо самого запуска кода нужно посмотреть что будет, если он будет запущен и отслеживать ход исполнения. Для того чтоб он умел ловить вирусы тебе нужно набрать базу вирусов и искать что в них есть одинакового (например, как уже было указано, точка входа в конце файла, или в начале, но там инструкция jmp, всякие системные вызовы типа попытки записать в исполняемый файл), а потом заставить свой эвристик искать то же самое автоматически.
[C++] В чистом виде сигнатурный анализ ловит большинство вирусов 27.08.03 15:13  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Можно поподробнее про эвристик, где информацию взять и
> прочее. Если не сложно конечно!

Полазь по вирмейкерским сайтам, там обычно антиэвристика обсуждается - это должно тебе пригодиться...
начни с lovingod.cjb.net
Хотите свой антивирус написать? 27.08.03 10:30  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Вопрос о движке антивируса. Мне интересно то, как он
> работает - его движок. Как я понимаю в базе данных лежит
> машинный код вируса и в отурытом файле происходит поиск
> подстроки в строке! И так со всеми вирусами в базе??? Если
> не так то может подскажите где прочитать инфу по данной
> тематике? Спасибо.

Ну уж точно не поиск подстроки в файле. Вируса обычно садятся в начале исполняемного кода, а позиционно - в конец файла дописываются при размножении. Так что если "точка входа" в конец файла смотрит - это должно насторожить. Далее код анализируется начиная с точки входа.

Советую изучить структуру екзешника (СОМ-файла для ДОСа). Попробовать написать свой вирус сначала. Попробовать отойти от правил (записаться при размножении в середину файла, размножиться в процессе/середине выполнения основной программы).
Книжка/брошюра была такая "полезная" Касперского "Пишем вирус и ... антивирус".
Хотите свой антивирус написать? 27.08.03 15:30  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Ну уж точно не поиск подстроки в файле. Вируса обычно
> садятся в начале исполняемного кода, а позиционно - в конец
> файла дописываются при размножении. Так что если "точка
> входа" в конец файла смотрит - это должно насторожить.
> Далее код анализируется начиная с точки входа.
>
> Советую изучить структуру екзешника (СОМ-файла для ДОСа).
> Попробовать написать свой вирус сначала. Попробовать отойти
> от правил (записаться при размножении в середину файла,
> размножиться в процессе/середине выполнения основной
> программы).
> Книжка/брошюра была такая "полезная" Касперского "Пишем
> вирус и ... антивирус".

Насчет книжки/брошюры: ее кажется Хижняк написал и так давно, что сейчас она не актуальна... ;)))
Насчет эвристиков:
Касперский очень не любит, когда точка входа PE-файла расположена в последней секции.... а Dr.Web ругается, если у тебя в вире есть инструкции стравнивающие что-либо со словами (word) "PE" или "MZ"... на что реагирует Norton Antivirus выяснить так и не удалось (его эвристик так ни на что и не сработал)...

Это были мои личные наблюдения...
Хотите свой антивирус написать? 27.08.03 17:26  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> > Книжка/брошюра была такая "полезная" Касперского
> "Пишем
> > вирус и ... антивирус".
>
> Насчет книжки/брошюры: ее кажется Хижняк написал и так
> давно, что сейчас она не актуальна... ;)))

Похоже Вы правы, я уж автора забыл. Что-то запомнилось - сруденты вирус набили, компильнули - работает. Запустили антивирус, тот его распознал как вирус [кого-то].

> Насчет эвристиков:
> Касперский очень не любит, когда точка входа PE-файла
> расположена в последней секции.... а Dr.Web ругается, если
> у тебя в вире есть инструкции стравнивающие что-либо со
> словами (word) "PE" или "MZ"... на что реагирует Norton
> Antivirus выяснить так и не удалось (его эвристик так ни на
> что и не сработал)...
>
> Это были мои личные наблюдения...

Это все предпосылки. Вирус необходимо идентифицировать точно или не заниматься загрузкой процессора вообще.
Хотите свой антивирус написать? 28.08.03 02:29  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Это все предпосылки. Вирус необходимо идентифицировать
> точно или не заниматься загрузкой процессора вообще.

Я думаю это как раз и есть самая сложная проблема идентификация вируса. Насколько я понимаю нужна строго построенная классификация (или иерархия) вирусов, которую не так то уж легко сделать. Работая с данной структурой (некое подобие графа может даже мульти дерево как частный случий графа) можно идентифицировать вирус довольно быстро!
Если я неправ пусть меня поправят!!!
Хотите свой антивирус написать? 28.08.03 08:24  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Это все предпосылки. Вирус необходимо идентифицировать
> > точно или не заниматься загрузкой процессора вообще.
>
> Я думаю это как раз и есть самая сложная проблема
> идентификация вируса. Насколько я понимаю нужна строго
> построенная классификация (или иерархия) вирусов, которую
> не так то уж легко сделать. Работая с данной структурой
> (некое подобие графа может даже мульти дерево как частный
> случий графа) можно идентифицировать вирус довольно быстро!
> Если я неправ пусть меня поправят!!!

В том-то и дело, что точно идентифицировать вирусы пока не научились.
Если подходить с точки зрения теории, то вирус - это алгоритм...
Существует бесконечное множество реализаций, но самих алгоритмов довольно мало...
Хотите свой антивирус написать? 28.08.03 12:47  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> В том-то и дело, что точно идентифицировать вирусы пока не
> научились.
> Если подходить с точки зрения теории, то вирус - это
> алгоритм...
> Существует бесконечное множество реализаций, но самих
> алгоритмов довольно мало...
Не так уж и мало. Тоже бесконечность, но меньшей мощности :-) А конечных алгоритмов (то бишь тех, которые когда либо завершаются) еще меньше

Насчет универсального антивируса. Математически доказана невозможность его существования. Причем и доказательства то всего строчек 10 - но это было давно и я краем глаза глянул и ни фига не понял, так что привести не могу. Не существует также и универсального (необнаруживаемого) вируса.

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

Невозможность универсального антивируса связана просто с тем, что у вирусов нет характеристик, которые присущи только им (причем обязательно присущи) и никаким другим программам. НО!!!! Есть характеристики, которые присущи вирусам в гораздо большей степени, чем всем остальным. Это позволяет ловить все такие программы и предлагать пользователю решать их судьбу. Ложных срабатываний будет не так уж и много. Кроме того базу ложных срабатываний можно вести и у производителя: примерно как Outpost Firewall распространяется с дефолтовыми конфигурациями для большинства прог, требующих доступ к сети.
Это все теория... 29.08.03 12:07  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Не так уж и мало. Тоже бесконечность, но меньшей мощности
> :-) А конечных алгоритмов (то бишь тех, которые когда либо
> завершаются) еще меньше

Людям реальные антивирусы нужны и люди их пишут. Не взирая на то, что математики докажут, что вирусов не бывает, а антивирус написать невозможно. Напимер: Память компьютера ни когда не будет бесконечна, стало быть никогда не будет бесконечного количества реально работающих компьютерных программ.

> Насчет универсального антивируса. Математически доказана
> невозможность его существования. Причем и доказательства то
> всего строчек 10 - но это было давно и я краем глаза глянул
> и ни фига не понял, так что привести не могу. Не существует
> также и универсального (необнаруживаемого) вируса.

> Невозможность универсального антивируса связана просто с
> тем, что у вирусов нет характеристик, которые присущи
> только им (причем обязательно присущи) и никаким другим
> программам. НО!!!! Есть характеристики, которые присущи
> вирусам в гораздо большей степени, чем всем остальным. Это
> позволяет ловить все такие программы и предлагать
> пользователю решать их судьбу. Ложных срабатываний будет не
> так уж и много. Кроме того базу ложных срабатываний можно

Видимо, автору темы до этого еще далеко.
Это все теория... 10.09.03 11:54  
Автор: Kerk Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Людям реальные антивирусы нужны и люди их пишут. Не взирая
> на то, что математики докажут, что вирусов не бывает, а
> антивирус написать невозможно. Напимер: Память компьютера
> ни когда не будет бесконечна, стало быть никогда не будет
> бесконечного количества реально работающих компьютерных
> программ.

Ух ты, какой шустрый! ;))
Угу, пишут люди антивирусы, но посмотри какие УБОГИЕ эвристики у них.
Вот одном из предыдущих сообщений я написал, что знаю о существующих эвристиках. И если писать вирь не в последнюю секцию, и не сравнивать ничего с "MZ" и "PE", то НИ ОДИН антивир не поймает простенький нешифрующийся вирус...
Хотите свой антивирус написать? 28.08.03 10:49  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> В том-то и дело, что точно идентифицировать вирусы пока не
> научились.
> Если подходить с точки зрения теории, то вирус - это
> алгоритм...
> Существует бесконечное множество реализаций, но самих
> алгоритмов довольно мало...

А это говорит только о том, что нельзя точно проидентифицировать неизвестный вирус программным методом. Если алгоритм и его реализация известны вирусологу, то это элементарная задача (написать антивирус). Свидетельством тому может быть безошибочная идентификация и, в большинстве случаев, успешное "лечение" современными антивирусами огромного количества известных вирусов. А, вот, эвристика подводит. Ее преимущество - возможность определять неизвестные вирусы, а недостаток - большая вероятность ошибок и невозможность лечения.
Хотите свой антивирус написать? 27.08.03 13:41  
Автор: CrazyPitbull Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Вопрос о движке антивируса. Мне интересно то, как
> он
> > работает - его движок. Как я понимаю в базе данных
> лежит
> > машинный код вируса и в отурытом файле происходит
> поиск
> > подстроки в строке! И так со всеми вирусами в базе???
> Если
> > не так то может подскажите где прочитать инфу по
> данной
> > тематике? Спасибо.
>
> Ну уж точно не поиск подстроки в файле. Вируса обычно
> садятся в начале исполняемного кода, а позиционно - в конец
> файла дописываются при размножении. Так что если "точка
> входа" в конец файла смотрит - это должно насторожить.
> Далее код анализируется начиная с точки входа.
>
> Советую изучить структуру екзешника (СОМ-файла для ДОСа).
> Попробовать написать свой вирус сначала. Попробовать отойти
> от правил (записаться при размножении в середину файла,
> размножиться в процессе/середине выполнения основной
> программы).
> Книжка/брошюра была такая "полезная" Касперского "Пишем
> вирус и ... антивирус".
Насчёт написания вирей, так когда асм проходили в универе их столько понаписано! Тут про сложные вирусы и их обнаружение инфа нужна!
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach