LINUX.ORG.RU

Недетектируемый вирус?

 , ,


0

1

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

Теперь по поводу самого синтеза.
Комбинаторный синтез занимает экспоненциальное время, поэтому смотреть стоит либо в сторону дедуктивного синтеза, либо на сочетание первого и второго. Самая примитивная форма дедуктивного синтеза выглядит примерно так:

  1. Спецификация на вход подается в виде программы, т.е. это трансформатор программ.
  2. Далее к ней применяются алгебраические законы. Например, для функциональных языков композиция ассоциативна, функция map дистрибутивна относительно композиции и т.д.
  3. Законы применяются в каком-то порядке, т.е. присутствует стратегия.

Чтобы подход работал на нашей задаче, нужно чтобы в нашей алгебре программ проблема эквивалентности двух термов была очень сложна. Буквами в такой алгебре будут обозначаться не примитивы языка, а какие-то сложные составные программы. Для них уже можно использовать комбинаторный синтез. Проблема здесь в том, что они сами могут быть легко детектированы. Здесь пока тоже затык.

Ну и для демонстрации схемы выше я тут написал псевдослучайный мультиквайн на языке Joy:
https://github.com/undetectablev/joytrain/

Работает все очень просто: сначала частично применяем список аксиом к паттерн матчеру, потом применяем остаточную программу к самой себе. Программы получаются не очень интересные, но в качестве прикола сойдет.

Есть какие-нибудь мысли?

Ответ на: комментарий от ratvier

кто тебя учил писать вирусы? :)

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

Morin ★★★★
()
Ответ на: комментарий от lesopilorama

по определению не детектятся

Где в определении полиморфа что-то про детектится/не детектится?

максимально более случайный

Wat?

Не руками же их тебе ставят.

Ну да, у некоторых лапки, но download-install-next-next-next делается руками.

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Где в определении полиморфа что-то про детектится/не детектится?

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

Ну да, у некоторых лапки, но download-install-next-next-next делается руками.

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

lesopilorama
()
Ответ на: комментарий от lesopilorama

К вирусам относят код способный к самостоятельной дубликации в тело программы жертвы.

по почте присылаю - троян ;) то что он содержит и секцию с вирусом никак не отменяет, что изначально он троян.

И к слову у вируса, может быть «полезной нагрузкой», бэкдор, червь, шифровальщик, бот, кейлогер или что-то совсем экзотическое, а то и многое вместе сразу (вместе сразу крайне редко, обычно это всеж резидент давнлодер, который уже ставит другие инструменты).

Morin ★★★★
()

Чисто теоретически зловред может работать на уровне железа, но это не вирус и удачи его задетектировать на 3нм техпроцессе и триллионах резисторов.

peregrine ★★★★★
()