информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСтрашный баг в WindowsЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / site updates
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Re: Собственно идея-то совсем другая 12.02.03 17:28  Число просмотров: 2399
Автор: sassa Статус: Незарегистрированный пользователь
<"чистая" ссылка>
разница в том, что Вы пытаетесь доказать, что трудно определить, что именно вычисляет дерево (а это неоспоримо, поскольку упирается в теорему Геделя и Entscheidungsproblem), а я говорю, что, зная эталонное дерево, можно определить, является ли данное дерево ее мутацией. трудно (возможно ли?) написать антивирус, который ловит любой вирус, но легко написать антивирус, который ловит любые мутации полиморфика с заданными правилами.


> > VCG.Belka тоже такими вещами занимается в меру
> > возможностей. ЛовИмо.
> Кроме эквивалентных преобразований нод я предусматривал еще
> и вставку новых нод (которые затем тоже участвуют в
> мутации)

вставка новых нод - это разновидность NOP: изменение незадействованных информационных потоков. (код NOP эквивалентен XCHG AX,AX, например)

> и перемещение готовых веток

зная эталонное дерево, всегда можно сказать, куда ветка может переместиться без искажения смысла действия. отвечаем на вопрос "могла ли эта ветка переместиться вон туда? y/n"

> и оптимизацию (тоже
> стохастическую): несколько нод объединяются в одну или
> несколько других и тоже затем участвует в мутации. Кроме
> того, так как фактически происходит компиляция, и
> функциональность мутируемого алгоритма известна,

вот-вот. точно как и когда ищем мутанта, проверяем, можно ли по известным правилам получить "это" из "того".

> то
> компилятор (полиморфный движок) может принимать решения о
> дисперсии данных (раскидать, допустим, int или массив на
> несколько битовых наборов и пустить их в разные ветки для
> обработки), причем переход в каждую конкретную ветку может
> быть условным:

алгоритм компилятора знает, на какие условия нужно обращать внимание. антивирус может обращать внимание на те же условия, чтобы выяснить, постоянно ли это условие в разветвлении. ставим ли мы задачу ловить "все" вирусы - или те, которые сгенерированы конкретным компилятором по конкретному алгоритму? кстати, мне можно и не проверять, выполняется ли условие - в первом приближении я могу посмотреть что делают Обе ветки и перестать, если ни одна ничего подозрительного не делает, или прикопаться к условию, если хоть одна выглядит заманчиво - кстати, я буду знать, какое условие Ожидать.


> Восстановление первоначальной функциональной сигнатуры по
> получившемуся коду будет значительно сложнее, чем
> восстановление первоначального C-шного кода по
> исполняемому, скомпилированному с -O2 хотя бы.

согласен. но получение получившегося кода из первоначальной функциональной сигнатуры не будет значительно сложнее :-)


> > если известен алгоритм, по которому строятся такие
> ветви,
> > то по нему же их можно и обнаружить.
> Алгоритм стохастический и одни и те же ноды могут быть
> получены мутацией различных начальных.

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


> Если при этом учесть
> внесенный "мусор" и опять таки стохастическую оптимизацию -
> объединение нод (при этом возможно объединение "мусорных" с
> валидными), то восстановление - не такая уж тривиальная
> задача.

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

я не писал антивирус, но я писал мотор для генерации случайных информационных потоков и мотор для детекцииконкретныхпотоков. контрольная точка - "int 21h"; задание: что и откуда заносится в АХ и DХ - конкретные потоки. далее, "что и откуда заносится в [DX], [DX+1], ..." - все дела, имеем знание о функциональности.


> > функционально это только упрощает задачу, поскольку по
> > расшифровщику уже можно сказать многое.
> Нужно еще понять что это именно расшифровщик.

отчего же? :-) "а не расшифровщик ли это? y/n"

задача, стоящая перед хакером, отличается от задачи, стоящей перед антивирусом. последний знает, чтО искать; и если не нашел - значит, его там нет.

"эта программа сгенерирована не с помощью VCG" отличается от полного ответа на вопрос "каков алгоритм генератора этой программы?"


> ...а DES, например, или любой
> другой алгоритм имеющий прямое и обратное преобразование
> (tg - arctg, разложенные в ряд или еще что-нить).

да один хрен. если я знаю, что искать нужно DES, то я смогу его или найти, или не найти :-)


> ...(но потом из за цейтнота ограничился ксоркой по
> гамме, которая генерится случайным набором команд - тоже не
> очень легко найти: около 50 опкодов с произвольными парами
> регистр-регистр и регистр-константа, но можно и не слишком
> большими усилиями)

ну, правильно. если я знаю, что здесь должна быть гамма с размером (стохастически) от 8 до 79 инструкций...

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

...известным антивирусу! :-) (хотя и неизвестным хакеру, взламывающему этот вирус В ПЕРВЫЙ РАЗ)

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

ерунда :-) да хоть одна итерация, хоть десятое поколение вируса - алгоритм остается тот же, и критерии пермутированиия - те же.


да я и не по статье ведь комментирую, а по пермутирующему движку :-)
<site updates> Поиск 






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


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